2013-12-13 17 views
11

mit dem folgenden C# -Code mit generischen Typparametern Attribute:Wie StyleCop Fehler SA0102 zu unterdrücken: CSharp.CsParser: Ein Syntaxfehler in der Datei entdeckt worden, bei der Verwendung von generischen Typparametern Attribut

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

Mit einge StyleCop Integration (StyleCop.targets in CSPROJ Datei importiert) StyleCop gibt Fehler und Kompilierung fehlschlägt:

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

Ohne StyleCop.targets in CSPROJ Datei ok zusammengestellt importiert.

Umwelt

ich nicht Code SA0102 auf StyleCop Dokumentation Website finden http://www.stylecop.com/docs/StyleCop%20Rules.html - es Scheint, SA0102 ist keine StyleCop-Regel, möglich ist es Code des internen StyleCop-Fehlers.

Also Frage: Wie StyleCop Fehler SA0102 zu unterdrücken?

+2

"In der Datei wurde ein Syntaxfehler gefunden." Was für eine irreführende Fehlermeldung. Es sollte deutlich machen, dass der Fehler von Style Cop und nicht vom Compiler stammt. Ihr Code ist in Ordnung, aber Style Cop kommt nicht mit [C# 6] zurecht (https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6). –

Antwort

8

Es scheint unmöglich, diesen Fehler mit dieser Art von Attribut zu unterdrücken:

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

Wie in dieser Post Zusammenhang, diese Meldung angezeigt wird, wenn StyleCop einen internen Fehler feststellt:

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

Ja, unterdrücken mit [SuppressMessage] -Attribut funktioniert nicht - Parse-Fehler passiert etwas früher. Aber dieser Beitrag hilft mir, den Weg zu finden, StyleCop für nur eine Datei zu deaktivieren (Rechtsklick darauf) und nicht für das ganze Projekt. Vielen Dank. –

2

Suchen Sie nach die Datei, die Sie aus StyleCop in der Datei .csproj ausschließen möchten, und fügen Sie das ExcludeFromStyleCop-Element wie folgt hinzu:

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

Ja, es ist das gleiche wie mit der rechten Maustaste auf eine Datei im Projektmappen-Explorer und wählen Sie im Kontextmenü der Datei Ausschließen aus StyleCop. Vielen Dank. –

+3

Dies ist keine Lösung, da es auch alle anderen Prüfungen unterdrückt. Dies versucht das OP nicht zu erreichen. –

Verwandte Themen