Die statische Codeanalyse von Visual Studio enthält Regeln, die die Benennung von Methoden und Feldern prüfen. Wussten Sie aber, dass es Szenarien gibt, in denen die Prüfung gar nicht erfolgt?
Die statische Codeanalyse verwendet Wörterbücher für die Sprachprüfung. Das Wörterbuch wird in Abhängigkeit der Systemsprache oder eines Parameters ausgewählt. Im vorliegenden Fall ist der Build-Server ein deutsches System, Visual Studio und Team Build sind in Englisch installiert. Die Sprachprüfung der statischen Code Analyse soll ebenfalls Englisch verwenden.
Die statische Codeanalyse basiert auf FxCopCmd. FxCopCmd unterstützt einen Kommandozeilenschalter „/culture“. Über diesen kann die für die Sprachprüfung zu verwendende Sprache definiert werden. Der MSBuild-Task zur statischen Codeanalyse unterstützt diesen Parameter ebenfalls in Form einer MSBuild-Eigenschaft mit dem Namen „CodeAnalysisCulture“.
Um den Wert für die zu verwendende Sprache zu definieren, sollte es also reichen, die Eigenschaft in unserem Build-Skript zu befüllen:
Leider ist dies nicht erfolgreich. Es stellt sich heraus, dass der Wert nicht an die einzelnen Builds der Solutions und Projekte weitergegeben wird.
Der erzeugte Aufruf von FxCopCmd sieht wie folgt aus:
Man erkennt das Fehlen des Schalter „/culture“.
Um Parameter an die einzelnen Builds weiterzugeben, muss anstelle von
<CodeAnalysisCulture>en-US</CodeAnalysisCulture>
die Eigenschaft „CustomPropertiesForBuild“ wie folgt überschrieben werden:
<CustomPropertiesForBuild>CodeAnalysisCulture=en-US</CustomPropertiesForBuild>
Dann erfolgt auch bei einem im Sprachmix installierten System die Prüfung in der gewünschten Sprache.