2013-12-13 14 views
11

Có mã # C sau đây với generic loại thuộc tính tham số:Làm thế nào để ngăn chặn StyleCop lỗi SA0102: CSharp.CsParser: Một lỗi cú pháp đã được phát hiện trong tập tin khi sử dụng các tham số kiểu generic thuộc tính

[System.AttributeUsage(System.AttributeTargets.GenericParameter)] 
public class GenericParameterAttribute : System.Attribute 
{ 
} 
public class GenericClass<[GenericParameter] T> 
{ 
} 

Với bật StyleCop tích hợp (StyleCop.targets nhập khẩu csproj tập tin) StyleCop trả về lỗi và biên soạn thất bại:

Error 1 SA0102 : CSharp.CsParser : A syntax error has been discovered in file ...

Without StyleCop.targets nhập khẩu csproj tập tin biên soạn ok.

Môi trường

tôi không thể tìm thấy mã SA0102 trên StyleCop web tài liệu http://www.stylecop.com/docs/StyleCop%20Rules.html - nó có vẻ SA0102 không phải là một quy tắc StyleCop, có thể nó là mã lỗi nội bộ StyleCop.

Vì vậy, câu hỏi: Làm thế nào để ngăn chặn lỗi StyleCop SA0102?

+2

"Đã xảy ra lỗi cú pháp trong tệp". Thật là một thông báo lỗi gây hiểu lầm. Nó phải làm rõ lỗi là từ Style Cop hơn là trình biên dịch. Mã của bạn là tốt, nhưng Style Cop không thể đối phó với [C# 6] (https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6). –

Trả lời

8

Nó dường như không thể ngăn chặn lỗi này với loại thuộc tính:

[SuppressMessage("StyleCopNameSpace", "SA0102:RuleNameHere")] 

Như liên quan trong Post này, thông báo này được hiển thị khi StyleCop gặp lỗi nội bộ:

jasonall May 18, 2010 at 10:00 PM: It is actually not possible to suppress SA0101 or SA0102. These are special case “rules” which are thrown whenever StyleCop encounters an internal error. The only workarounds for you would be to disable this file from analysis completely, or stop using optional parameters until upgrading to StyleCop 4.4.

+2

Có, việc ngăn chặn với thuộc tính [SuppressMessage] không hoạt động - lỗi phân tích xảy ra sớm hơn một chút. Nhưng bài đăng này giúp tôi tìm cách tắt StyleCop chỉ với một tệp (nhấp chuột phải vào nó) chứ không phải cho toàn bộ dự án. Cảm ơn bạn. –

2

Hãy tìm tệp mà bạn muốn loại trừ khỏi tệp StyleCop trong tệp .csproj và thêm phần tử ExcludeFromStyleCop như bên dưới

<Compile Include="<filename>.cs"> 
    <ExcludeFromStyleCop>True</ExcludeFromStyleCop> 
</Compile> 
+0

Có, nó cũng giống như nhấp chuột phải vào tệp trong Solution Explorer và chọn Loại trừ khỏi StyleCop trong menu ngữ cảnh tệp. Cảm ơn bạn. –

+3

Đây không phải là một giải pháp vì nó cũng sẽ ngăn chặn tất cả các kiểm tra khác. Đây không phải là những gì OP đang cố gắng đạt được. –

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