Trong quá trình phát triển phần mềm, việc kiểm soát và tùy chỉnh cấu hình build và kiểm tra là vô cùng quan trọng. Bài viết này sẽ hướng dẫn bạn cách **loại bỏ tham số** không mong muốn khỏi mục tiêu trong các công cụ phổ biến như Bazel, Metalama và Invicti. Điều này giúp bạn tối ưu hóa quá trình build, kiểm tra và bảo mật, đảm bảo ứng dụng hoạt động trơn tru và an toàn.
Bazel là một hệ thống build mã nguồn mở, hỗ trợ nhiều ngôn ngữ và nền tảng. Trong một dự án sử dụng CI (Continuous Integration), đôi khi bạn cần loại bỏ một tham số cụ thể khỏi một mục tiêu Bazel để tùy chỉnh quá trình build cho mục tiêu đó.
Giả sử bạn có một CI pipeline tự động build và chạy các bài kiểm tra với các flags như `--feature=ABC`. Bạn muốn vô hiệu hóa tính năng này trong một mục tiêu `cc_test` cụ thể mà không ảnh hưởng đến toàn bộ CI scripts. Việc thay đổi CI scripts có thể gây ra ảnh hưởng lớn đến nhiều khu vực khác của dự án.
Cách tiếp cận tốt nhất là tìm cách loại bỏ flag `--feature=ABC` chỉ từ mục tiêu Bazel cụ thể đó. Các tùy chọn cấu hình của Bazel có thể cho phép bạn ghi đè hoặc loại bỏ các flags cho một mục tiêu cụ thể. Bạn cần tìm hiểu về các thuộc tính như `copts` hoặc `linkopts` trong định nghĩa của mục tiêu `cc_test` và tìm cách sửa đổi chúng để loại bỏ flag không mong muốn.
Ví dụ, bạn có thể thử sử dụng:
Điều này cho phép bạn chỉ định các tùy chọn biên dịch khác nhau dựa trên một điều kiện. Trong trường hợp này, nếu `:no_abc_feature` đúng, thì flag `-no-feature=ABC` sẽ được thêm vào.
Metalama là một nền tảng AOP (Aspect-Oriented Programming) cho .NET, cho phép bạn thêm hành vi vào mã hiện có mà không cần sửa đổi trực tiếp mã đó. Khi sử dụng caching, đôi khi bạn cần loại bỏ một số tham số khỏi cache key.
Metalama cung cấp nhiều cách để loại bỏ tham số khỏi cache key:
Ví dụ, nếu bạn muốn loại trừ tham số `correlationId` khỏi cache key, bạn có thể sử dụng `[NotCacheKey]`:
[Cache]
public decimal GetProductPrice(string productId, [NotCacheKey] string? correlationId)
{
throw new NotImplementedException();
}
Invicti (trước đây là Netsparker) là một công cụ quét bảo mật web tự động. Bạn có thể cấu hình Invicti để loại trừ hoặc bao gồm các tham số cụ thể trong quá trình quét.
Invicti duy trì một danh sách các tham số bị bỏ qua. Bạn có thể thêm, chỉnh sửa và xóa các mục khỏi danh sách này. Để chỉ định một tham số bị loại trừ:
Bạn cũng có thể loại trừ tất cả các tham số cho một HTTP verb cụ thể (ví dụ: POST) bằng cách sử dụng pattern `*`.
Việc **loại bỏ tham số** không mong muốn khỏi mục tiêu là một phần quan trọng của việc tùy chỉnh và tối ưu hóa quá trình phát triển phần mềm. Dù bạn đang làm việc với Bazel, Metalama hay Invicti, việc hiểu rõ các phương pháp loại bỏ tham số sẽ giúp bạn kiểm soát tốt hơn quá trình build, kiểm tra và bảo mật ứng dụng của mình. Hãy áp dụng các hướng dẫn trên để cải thiện hiệu suất và đảm bảo tính an toàn cho dự án của bạn.
Bài viết liên quan