2008-12-03 36 views
7

Tôi tự hỏi liệu mọi người (có nghĩa là các công ty/nhà phát triển) thực sự quan tâm đến việc có các thuộc tính [SuppressMessage] nằm xung quanh trong các hội đồng vận chuyển hay không.Thuộc tính .NET [SuppressMessage] trong các assembly vận chuyển fxcop

Tạo cấu hình riêng biệt trong tệp Dự án bao gồm CODE_ANALYSIS trong Chế độ phát hành và sau đó giật tắt trong cấu hình cuối cùng có vẻ như là một chi phí có thể tránh được đối với tôi.

Điều gì sẽ là chiến lược tốt nhất, nếu một người không muốn những thứ này vẫn còn trong hội đồng cuối cùng nhưng vẫn muốn sử dụng chúng trong mã? và có bất kỳ ưu điểm/nhược điểm nào của việc lưu trữ chúng trong các tệp Dự án FxCop không?

[Tôi đến từ một VS2008 Pro + FxCop 1,36, chứ không phải là VS2008 Team System]

Trả lời

2

Trong kế hoạch lớn của sự vật, tôi không nghĩ rằng nó thực sự quan trọng. Vì đây là một thuộc tính (siêu dữ liệu hiệu quả), nó không ảnh hưởng đến hiệu suất mã. Điều đó đang được nói, hãy nhớ rằng các thông tin trong thuộc tính có sẵn cho bất cứ ai sử dụng một disassember như Reflector.

Sự cố khi lưu trữ chúng trong tệp dự án FxCop là bạn phải đảm bảo rằng mọi người đều sử dụng cùng một tệp dự án và tệp dự án luôn đi cùng với dự án (nó được kiểm tra trong nguồn điều khiển). nó ra mỗi khi bạn muốn chạy FxCop).

Nếu bạn không muốn thuộc tính SuppressMessage trong mã sản xuất của mình, bạn sẽ chỉ cần xác định biểu tượng CODE_ANALYSIS trong bản dựng mà bạn đang chạy FxCop. Điều này có nghĩa là xác định nó trên cấu hình Debug của bạn hoặc thêm cấu hình bổ sung. Các thuộc tính sẽ chỉ được biên dịch vào mã khi biểu tượng được xác định. Từ một quan điểm xây dựng tự động/hàng đêm, bạn có thể xây dựng bằng cách sử dụng cấu hình có biểu tượng được xác định và sau đó tạo bản phát hành sản phẩm không có ký hiệu hoặc thực hiện hai bản dựng - biểu tượng được xác định, chạy FxCop để nhận vi phạm của bạn, và sau đó xây dựng khác mà không có biểu tượng được xác định.

1

Chúng tôi có một tấn nằm rải rác xung quanh mã sản xuất, và chúng tôi không đặc biệt quan tâm. Nó không có hiệu quả perf, và có một số thuộc tính crufty tìm kiếm trong một lớp học thường cung cấp cho động lực để loại bỏ nó nếu có thể.

7

Thuộc tính SuppressMessage sẽ chỉ được thêm vào mã của bạn nếu định nghĩa tiền xử lý CODE_ANALYSIS xuất hiện trong khi biên dịch. Bạn có thể xác minh điều này bằng cách xem định nghĩa của thuộc tính trong Reflector.exe. Theo mặc định, điều này không được xác định trong Bản phát hành để nó sẽ không ảnh hưởng đến mã sản xuất.

Thông thường, tôi chỉ chạy FxCop trên các bản dựng DEBUG của hội đồng nơi CODE_ANALYSIS được xác định.

Các vấn đề liên quan