2008-09-16 20 views
9

Khi bạn sử dụng trị phân tích mã Visual Studio (FxCop), và muốn ngăn chặn một thông điệp có 3 lựa chọn.Tôi có thể ngăn chặn các vi phạm phân tích mã FX Cop trên toàn cầu không?

  1. Ngăn chặn vi phạm trong mã.
  2. Ngăn chặn vi phạm trong tệp GlobalSupression.cs.
  3. Vô hiệu hóa việc kiểm tra vi phạm trong hồ sơ dự án (thông qua dự án -> Properties -> Mã trị phân tích).

Sau này rất khó xem lại khi đăng ký Kiểm soát nguồn và rất khó có thể xem tổng quan về tất cả các vi phạm bị vô hiệu hóa. Vì vậy, chúng tôi muốn sử dụng tùy chọn 2.

Vấn đề với phương án 1 và 2 là bạn có được một dòng ức chế cho mỗi vi phạm. Ví dụ như:

[assembly: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "Company.Project.Namespace2")] 
[assembly: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "Company.Project.Namespace1")] 

Chúng tôi rất thích làm điều gì đó như ing này GlobalSuppressions.cs:

[assembly: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes")] 

Nhưng điều này có thể?

Trả lời

9

Loại bỏ nhiều vi phạm chỉ với một thuộc tính SuppressMessage chính thức không được hỗ trợ. Rõ ràng, đây là do thiết kế.

Tôi đồng ý, đôi khi có thể gây khó chịu, nhưng tôi không thể nói rằng tôi không đồng ý với quyết định này, vì thuộc tính là cách họ buộc bạn phải nói "Vâng, tôi biết tôi đang làm gì" nên được đánh giá theo từng trường hợp cụ thể.

1

Tôi nghĩ rằng mọi thứ đã thay đổi kể từ câu hỏi này đã được đăng và trả lời. Đối với Visual Studio 2010 và 2012, bạn có thể tạo tệp "tập hợp quy tắc" tùy chỉnh, nơi bạn có thể chỉ định quy tắc phân tích mã nào bạn muốn chặn.

http://msdn.microsoft.com/en-us/library/dd380660.aspx

Vì vậy, những gì tôi đã làm là để tạo ra một quy tắc tùy chỉnh tập tin thiết lập duy nhất đó là trong thư mục cấp cao nhất của bộ sưu tập nguồn kho của tôi, và tôi tham khảo tập tin này trong từng dự án Visual Studio. Điều này có nghĩa là tôi có một vị trí trung tâm, nơi tôi có thể ngăn chặn các quy tắc phân tích mã mà tôi không thể chịu được. Nhưng nếu tôi thay đổi ý định, hoặc quyết định tôi nên xem xét lại thói quen viết mã xấu của mình, tôi có thể chỉ đơn giản là có thể bật lại quy tắc và xem tôi nhận được bao nhiêu thông điệp phân tích mã.

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