2013-12-13 8 views
11

uwzględniając następujący kod C# z atrybutu parametr typu rodzajowego:Jak tłumić StyleCop błędzie SA0102: CSharp.CsParser: błąd składni została odkryta w pliku przy użyciu parametrów typu rodzajowego atrybuty

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

Z włączony StyleCop integracja (StyleCop.targets przywiezione .csproj pliku) StyleCop zwraca błąd i kompilacja nie powiedzie:

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

Bez StyleCop.targets importowanych w .csproj pliku skompilowanego ok.

Środowisko

nie mogę znaleźć kod StyleCop SA0102 na miejscu dokumentacji http://www.stylecop.com/docs/StyleCop%20Rules.html - go Wygląda na to, że SA0102 nie jest regułą StyleCop, możliwe, że jest to kod wewnętrznego błędu StyleCop.

Pytanie: Jak wyłączyć błąd StyleCop SA0102?

+2

"W pliku wykryto błąd składni." Co za mylący komunikat o błędzie. Należy wyjaśnić, że błąd pochodzi z Style Cop zamiast z kompilatora. Twój kod jest w porządku, ale Style Cop nie poradzi sobie z [C# 6] (https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6). –

Odpowiedz

8

Wydaje się niemożliwe, aby stłumić ten błąd z tego rodzaju atrybutu:

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

jako związane w tym Post, komunikat ten zostanie wyświetlony, gdy StyleCop napotkał błąd wewnętrzny:

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

Tak, tłumienie z atrybutem [SuppressMessage] nie działa - błąd analizy wystąpił trochę wcześniej. Ale ten wpis pomaga mi znaleźć sposób na wyłączenie StyleCop tylko dla jednego pliku (kliknij prawym przyciskiem myszy), a nie dla całego projektu. Dziękuję Ci. –

2

Poszukaj plik, który chcesz wykluczyć z StyleCop w pliku .csproj i dodać element ExcludeFromStyleCop poniżej:

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

Tak, jest to to samo, co kliknięcie prawym przyciskiem myszy w Eksploratorze rozwiązań i wybierz opcję Wyklucz z StyleCop w menu kontekstowym pliku. Dziękuję Ci. –

+3

To nie jest rozwiązanie, ponieważ tłumi również wszystkie inne kontrole. To nie jest to, co stara się osiągnąć OP. –

Powiązane problemy