2013-02-08 32 views
7

Tôi đang làm việc trong một ứng dụng và phát triển vài lớp cho mục đích demo. Tôi biết rằng các lớp học này sẽ bị xóa trong tương lai.Vô hiệu hóa tất cả cảnh báo stylecop cho một C# class

Có thể bỏ qua tất cả cảnh báo stylecop cho các lớp đó vì tôi không muốn dành thời gian cho các cảnh báo đó không?

Tôi tìm kiếm nhưng thấy rằng tôi chỉ có thể bỏ qua thông qua cài đặt trong stylecop (điều này cũng sẽ ảnh hưởng đến các lớp khác) hoặc một số quy tắc cụ thể (tôi chỉ muốn bỏ qua tất cả cảnh báo).

+0

cảnh báo hoặc lỗi cảnh báo? – daryal

Trả lời

15

Bắt đầu với StyleCop 4.4.0, bạn cũng có thể loại bỏ tất cả các quy tắc trong không gian tên quy tắc bằng cách sử dụng một thuộc tính loại bỏ duy nhất. Điều này được chỉ định bằng cách thay thế quy tắc CheckID và tên quy tắc bằng một dấu sao đơn. Ví dụ mã sau ngăn chặn tất cả các quy tắc tài liệu mặc định của StyleCop trong lớp bên trong. Trong trường hợp này, StyleCop sẽ vẫn gắn cờ một sự vi phạm chỉ ra rằng lớp bên ngoài thiếu tài liệu, nhưng nó sẽ bỏ qua tất cả các quy tắc tài liệu cho lớp bên trong và nội dung của nó.

public class OuterClass 
{ 
    [SuppressMessage("StyleCop.CSharp.DocumentationRules", "*")] 
    public class InnerClass 
    { 
     public void MyUndocumentedMethod 
     { 
     } 
    } 
} 

http://stylecop.soyuz5.com/Suppressions.html

-1

Bạn có thể chặn quy tắc bằng cách thêm thuộc tính vào các khối mã. Dưới đây là một ví dụ đơn giản về một lớp học từ các bài đăng blog liên kết dưới đây, nhưng bạn có thể làm điều đó trên các thành viên khác nhau riêng lẻ:

[SuppressMessage("Microsoft.StyleCop.CSharp.DocumentationRules", "SA1600:ElementsMustBeDocumented")] 
public class MyUndocumentedClass 
{ 
    public void MyUndocumentedMethod {} 
} 
+2

điều này sẽ chỉ ngăn chặn SA1600. –

18

Bạn có thể lừa StyleCop vào không xử lý một tập tin ở tất cả bằng cách thêm tiêu đề này ở đầu trang:

//------------------------------------------------------------------------------ 
// <auto-generated> 
// Well, not really. This is just a trick to get StyleCop off my back. 
// </auto-generated> 
//------------------------------------------------------------------------------ 
+0

tôi đã làm điều này, nhưng đã không làm việc. Tôi vẫn có thể thấy cùng cảnh báo. –

+0

không phải là có một vấn đề vốn có trong việc thêm bất cứ điều gì vào một tập tin được tạo tự động, mặc dù? Điều này có thể được thay thế nếu mã được tạo được cập nhật – DevDave

+2

@Tyler: Dán vào tiêu đề cho biết tệp được tự động tạo không thực sự làm như vậy. – Jon

12

Nhờ Bartłomiej Mucha cho câu trả lời tôi vừa mới sử dụng. Như tôi đã phát hiện, "*" hoạt động tốt cho quy tắc cụ thể, nhưng bạn phải thêm các biện pháp ngăn chặn cho từng danh mục. Dưới đây là tập hợp hoàn chỉnh - nếu bạn sao chép chúng vào đầu lớp, bạn sẽ thấy rằng tất cả các lỗi của StyleCop đều bị chặn:

[SuppressMessage("StyleCop.CSharp.NamingRules", "*", Justification = "Reviewed. Suppression is OK here.")] 
[SuppressMessage("StyleCop.CSharp.LayoutRules", "*", Justification = "Reviewed. Suppression is OK here.")] 
[SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "*", Justification = "Reviewed. Suppression is OK here.")] 
[SuppressMessage("StyleCop.CSharp.OrderingRules", "*", Justification = "Reviewed. Suppression is OK here.")] 
[SuppressMessage("StyleCop.CSharp.ReadabilityRules", "*", Justification = "Reviewed. Suppression is OK here.")] 
[SuppressMessage("StyleCop.CSharp.SpacingRules", "*", Justification = "Reviewed. Suppression is OK here.")] 
[SuppressMessage("StyleCop.CSharp.DocumentationRules", "*", Justification = "Reviewed. Suppression is OK here.")] 
internal class MyClass 
{ 
    // ... 
} 
Các vấn đề liên quan