fxcopcmd.exe で非常に奇妙な動作が発生します。1 つのアセンブリ (Assembly X) のみを指定して fxcopcmd.exe を起動すると、違反は発生しません。しかし、ソリューションのすべてのアセンブリを指定すると、(アセンブリ X) で多くの違反がスローされます。見逃したものはありますか?Visual Studio でコード分析を使用する場合、すべてのアセンブリに対してコード分析を実行しても違反がないことに注意してください。
詳細:
1- Visual Studio 2013 のソリューションを 6 つの巨大な C# プロジェクトで使用します。
2- VisualStudio 2013 (バージョン 12.0.21005.1) のインストールに含まれる fxcopcmd.exe を使用します。
3- 違反を検出しないコマンド ライン コマンドの例:
tools\FxCopCmd\FxCopCmd.exe /file:build\bin\Assembly1.dll /out:results.txt /ruleset:=Tools\FxCopRuleSet\CompagnyRules.ruleset /ignoregeneratedcode
4- 違反を検出するコマンド ライン コマンドの例:
tools\FxCopCmd\FxCopCmd.exe /file:build\bin\Assembly1.dll /file:build\bin\Assembly2.dll /file:build\bin\Assembly3.dll /file:build\bin\Assembly4.dll /out:results.txt /ruleset:=Tools\FxCopRuleSet\CompagnyRules.ruleset /ignoregeneratedcode
Assembly1.dll で 100 を超える違反が検出されていることに注意してください。
違反の原因となるルールは次のとおりです:
AvoidUninstantiatedInternalClasses、AvoidUncalledPrivateCode、AvoidUnusedPrivateFields、
TypeNamesShouldNotMatchNamespaces
したがって、これは異なるアセンブリ間の関係には関係ありません。TeamCity で適切に自動化するために私が見つけた唯一の解決策は、さまざまなアセンブリで fxcopcmd.exe を 1 つずつ呼び出し、結果をさまざまなファイルに出力する nant スクリプトを使用することです。
どんなアイデアでも大歓迎です!
ありがとう。