Wir führen Code-Analyse für alle unsere Quelldateien. Eine unserer Quelldateien ist eine Linq-To-SQL generierte Datei, auf die wir keinen Einfluss haben. Der generierte Code generiert Codeanalysewarnungen, die ich gerne unterdrücken möchte. Gibt es eine Möglichkeit, CA-Warnungen in einer code-generierten Datei zu unterdrücken, die keine Erstellung von Attributen und/oder Pragmas im Code selbst beinhaltet (die bei jeder Generierung der Datei überschrieben werden)?Code-Analyse in einer generierten Code Generator-Datei - wie Warnungen zu unterdrücken?
Antwort
Haben Ihre Klassen das Attribut [GeneratedCode]? Wenn ja, können Sie FxCop bekommen, um sie zu ignorieren:
ein FxCop Projekt verwenden:
- Öffnen Sie FxCop Projekt in FxCop
- Wählen Sie Projekt -> Optionen -> Rechtschreibung & Analyse
- prüfen Unterdrücken Sie die Analyseergebnisse gegen den generierten Code
- Klicken Sie auf OK
über die Befehlszeile:
- Führen Sie die/ignoregeneratedcode Schalter, zum Beispiel:
FxCopCmd.exe /file:MyAssembly.dll /out:AnalysisResults.xml /ignoregeneratedcode
Wenn Sie den FxCop-GUI verwenden Sie einfach ausschließen könnten diese Probleme innerhalb des FxCop-Projekts. Klicken Sie einfach mit der rechten Maustaste auf das Problem und wählen Sie Ausschließen, wo Sie auch einen Kommentar hinzufügen können.
Aber wenn Sie FxCop im Ausgabefenster ausführen, habe ich keine Ahnung. Vielleicht könnten Sie prüfen, ob es möglich ist, eine SuppressMessage auf Modulebene zu erstellen und in AssemblyInfo.cs einzufügen. Aber ich denke nicht.
gibt es eine andere Antwort in einer verwandten Frage hier auf SO, die angibt, dass Sie die Unterdrückung auf Baugruppenebene Assemblyinfo.cs hinzufügen können, aber ich habe es gerade versucht und konnte es nicht zum Funktionieren bringen. Ich könnte SuppressMessage jeder einzelnen Methode hinzufügen, aber das ist ein absoluter Schmerz im Nacken, wenn ich den Fehler für alles in einer bestimmten Assembly ignorieren will. Hoffentlich wird jemand mit einer Lösung darauf antworten !!! – Dave
Sie können das Fehlen des Attributs GeneratedCode
umgehen, indem Sie Ihre eigene Verzweigung der partiellen Klassen verwenden, um dieses Attribut anzuwenden. Dies bedeutet, dass jeder benutzerdefinierte Code, den Sie hinzufügen (einschließlich der Implementierung von Teilmethoden), ausgeschlossen wird. ZB:
namespace MyApp.DB {
[GeneratedCode("LINQ To SQL", "4.0")]
internal partial class MyAppDataContext {
}
// Repeat for each entity
}
Die PLINQO (Linq-to-SQL) CodeSmith templates generieren dieses Attribut auch automatisch für Sie. Die meisten Add-Ins beginnen auch, Teilklassen zu ignorieren, die im Dateinamen mit ".generated" generiert werden.
[System.CodeDom.Compiler.GeneratedCode ("Codesmith", "5.0.0.0")]
hat SuppressMessage funktioniert, wenn ich rufe mit der Befehlszeile fxcopcmd.exe? – Kiquenet
Ja sollte es tun – Paolo