Frage

In einem Projekt, an dem ich arbeite, zeigt mir FxCop viele (und ich meine mehr als 400) Fehler in den vom Windows Forms-Designer generierten InitializeComponent()-Methoden.Bei den meisten dieser Fehler handelt es sich lediglich um die Zuweisung der Text-Eigenschaft von Etiketten.

Ich möchte diese Methoden im Quellcode unterdrücken, also habe ich den von FxCop generierten Unterdrückungscode in AssemblyInfo.cs kopiert, aber es funktioniert nicht.

Dies ist das Attribut, das FxCop in die Zwischenablage kopiert hat.

[module: SuppressMessage("Microsoft.Globalization",
    "CA1303:DoNotPassLiteralsAsLocalizedParameters",
    Scope = "member",
    Target = "WindowsClient.MainForm.InitializeComponent():System.Void",
    MessageId = "System.Windows.Forms.Control.set_Text(System.String)")]

Kennt jemand das richtige Attribut, um diese Meldungen zu unterdrücken?

PS:Ich verwende Visual Studio 2005, C#, FxCop 1.36 Beta.

War es hilfreich?

Lösung

Sie haben wahrscheinlich den richtigen Code, müssen aber auch CODE_ANALYSIS als vom Precompiler definiertes Symbol in den Projekteigenschaften hinzufügen.Ich denke, dass diese SuppressMessage-Attribute nur dann in den kompilierten Binärdateien verbleiben, wenn CODE_ANALYSIS definiert ist.

Andere Tipps

In FxCop 1.36 gibt es tatsächlich eine Projektoption auf der Registerkarte „Rechtschreibung und Analyse“, die die Analyse für generierten Code unterdrückt.

Wenn Sie die Analyse nicht für den gesamten generierten Code deaktivieren möchten, müssen Sie sicherstellen, dass Sie der Liste der Symbole für bedingte Kompilierung (Projekteigenschaften, Registerkarte „Erstellen“) ein CODE_ANALYSIS-Symbol hinzufügen.Ohne die Definition dieses Symbols werden die SupressMessage-Attribute aus dem kompilierten Code entfernt, sodass FxCop sie nicht sieht.

Das andere Problem mit Ihrem SuppressMessage-Attribut besteht darin, dass Sie ein „Ziel“ eines bestimmten Methodennamens (in diesem Fall WindowsClient.MainForm.InitializeComponent():System.Void) und einen bestimmten „Bereich“ auflisten.Möglicherweise möchten Sie versuchen, diese zu entfernen.Andernfalls sollten Sie diese SuppressMessage zu jeder Instanz der Methode hinzufügen.

Sie sollten auch auf aktualisieren RTM-Version von FxCop 1.36 erkennt die Beta die neuere Version nicht automatisch.

Unterdrückungsmeldungen auf Modulebene müssen vor der Namespace-Deklaration oder in „assemblyinfo.cs“ in dieselbe Datei eingefügt werden wie der Code, der den FxCop-Fehler auslöst.Darüber hinaus muss CODE_ANALYSIS als bedingtes Compilersymbol definiert sein (Projekt > Eigenschaften > Erstellen).Sobald dies erfolgt ist, erstellen Sie das Projekt vollständig neu. Wenn Sie FxCop das nächste Mal ausführen, sollte der Fehler auf die Registerkarte „In Quelle ausgeschlossen“ verschoben werden.

Außerdem noch ein kleiner Tipp: Wenn Sie es mit vielen FxCop-Ausschlüssen zu tun haben, könnte es sinnvoll sein, einen Bereich um sie herum zu wickeln, damit Sie sie aus dem Weg räumen können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top