2012-03-27 8 views
7

Ich habe vor kurzem begonnen, Code Analysis für meine Projekte in Visual Studio zu verwenden. Ich habe einen benutzerdefinierten Regelsatz erstellt, der mit allen meinen Projekten verwendet werden kann, die zwei der von Microsoft definierten Regelsätze enthalten. Ich habe daran gearbeitet, FxCop in den CI-Build-Prozess zu integrieren, damit Builds fehlschlagen, die nicht alle Regeln bestehen. Was mir wirklich komisch ist, ist, dass ich mit meinem Regelwerk nicht definieren kann, nach welchen Regeln FxCop den Code abtastet. Wie stelle ich es so her, dass die Code Analysis-Regeln von Visual Studio mit den Regeln von FxCop übereinstimmen?FxCop und Code Analysis Rules

+0

Fehle ich etwas komplett oder gibt es wirklich keine Möglichkeit, die gleichen Regeln in FxCop Standalone und Code Analysis in Visual Studio zu teilen? !!!! – Chris

+0

Sie scheinen etwas zu verpassen. Wie versuchen Sie, FxCop von Ihrem CI-Build auszuführen? –

+0

Ich verwende es mit TeamCity, die die FxCopCmd.exe ausführt. Ich habe eine FxCop-Projektdatei, die die Ziele und die eigenständigen FxCop-Listen-Regeln auflistet, aber es scheint keine einfache Möglichkeit zu geben, dieselben Regeln zu teilen, die Code-Analyse in Visual Studio verwenden soll. Alles funktioniert, es scheint einfach keine Möglichkeit zu geben, Regeln zwischen dem eigenständigen FxCop und der Codeanalyse in VS2010 zu teilen. – Chris

Antwort

8

Sie haben bereits eine Regelsatzdatei, von der ich annehme, dass Sie herausgefunden haben, wie Sie sie in Ihre Projekte integrieren und über Visual Studio verwenden können.

FxCopCmd.exe /out:Violations.xml /ruleset:=Custom.ruleset /file:MyAssembly.dll 

ich dies mit Jenkins getan haben und es funktioniert gut:

Sie können diese gleichen Regelsatz-Datei in FxCopCmd.exe verwenden. Führen Sie FxCopCmd.exe ohne Argumente aus, und Sie sollten Beschreibungen für alle verfügbaren Befehlszeilenoptionen anzeigen.

+1

Sehr seltsam, ich hatte eine Menge Probleme beim Finden der Dokumentation für die Option/ruleset, aber es hat den Trick gemacht. Zum Glück habe ich etwas vermisst :-). – Chris

+1

Können Sie bitte ein Beispiel für die Syntax der Regelsatzdatei angeben. Ich hatte nicht viel Glück, dass das funktioniert. – mikelong

+0

@mikelong: Die Syntax für die Verwendung von Regelsatzdateien wird in meiner Antwort angezeigt. Was genau ist dein Problem? – Bernard

3

Für unseren CI-Build haben wir eine spezielle Build-Konfiguration (zusätzlich zu Standard-Debug und Release), die laufende Code-Analyse ("RunCodeAnalysis" MSBuild Aufgabe, wie ich mich erinnere) und Option "Behandle Warnung als Fehler". Der Build schlägt daher fehl, wenn wir einen FxCop-Fehler haben und er denselben Regelsatz wie VS verwendet. Auf diese Weise müssen Sie FxCopCmd nicht verwenden und Regelsätze teilen. Sie müssen diese Build-Konfiguration jedoch manuell zu jedem Projekt Ihrer Lösung hinzufügen.