.TestやDevPartnerのような高価なツールを使わなくても、FxCopを使えばILの静的コード解析が可能です。
- メニューの[ツール]から[外部ツール]を選択。
- 外部ツール登録ダイアログの各項目にそれぞれ以下の値を入力。
- [タイトル]に「FxCop」
- [コマンド]に「C:\Program Files\Microsoft FxCop 1.36\FxCopCmd.exe」
- [引数]に「/f:$(TargetPath) /r:"C:\Program Files\Microsoft FxCop 1.36\Rules" /c /d:$(ProjectDir)\bin /gac /igc」
- 「/d」オプションは、参照DLLがあるフォルダを必要に応じて指定する。
- [初期ディレクトリ]に「$(ProjectDir)」
- [出力ウィンドウを使用]をチェック
- で、メニューの[ツール]から[FxCop]を選択することで、ILの静的コード解析が実行され、結果が出力ウィンドウに表示されます。
ただし、Visual Studioでは
- 解析結果の除外ができない。
- エラー内容から、MSDNの関連ページを開けない。
など、FxCopアプリ単体実行時よりも機能的に劣る部分があります。
ソースの記述で解析を除外する方法 †
- 対象プロジェクトの「条件付きコンパイルシンボル」に「CODE_ANALYSIS」を追加します。
- FxCopのWindowsアプリで解析結果を右クリックし、[Copy As] - [Suppress Message]を選択すると、その解析結果を除外するためのコードがClipboardに登録されます。
- Clipboardの内容を、ソースコードの該当箇所(Scopeに依って、該当メソッドだったりAssemblyInfo.csアセンブリだったり)に貼り付けます。
カスタムルールの作成 †
- 作ってみました。
- ややハマリそうだったのは、「{規定の名前空間}.{埋込XMLファイル名}」=「アセンブリ名」という規約があること。