#author("2016-05-27T17:51:35+09:00","default:jomura","jomura")
 [[.Test:http://www.techmatrix.co.jp/products/quality/dottest/]]や[[DevPartner:http://www.compuware.co.jp/products/devpartner_fm/]]のような高価なツールを使わなくても、FxCopを使えばILの静的コード解析が可能です。
- [[Download from Microsoft Web Site:http://www.microsoft.com/downloads/details.aspx?FamilyID=3389f7e4-0e55-4a4d-bc74-4aeabb17997b]]

*** Visual Studio との統合 [#oaa9ac7a]
#ref(FxCop_in_VS.jpg,around,right,nolink);
+ メニューの[ツール]から[外部ツール]を選択。
+ 外部ツール登録ダイアログの各項目にそれぞれ以下の値を入力。
-- [タイトル]に「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アプリ単体実行時よりも機能的に劣る部分があります。

*** ソースの記述で解析を除外する方法 [#id5cf52b]
- FxCopは、System.Diagnostics.CodeAnalysis.SuppressMessage属性に対応しています。
- http://msdn.microsoft.com/ja-jp/library/ms244717(VS.80).aspx

+ 対象プロジェクトの「条件付きコンパイルシンボル」に「CODE_ANALYSIS」を追加します。
-- SuppressMessage属性クラスは、[[[Conditional("CODE_ANALYSIS")]とマークされています:http://msdn.microsoft.com/ja-jp/library/system.diagnostics.codeanalysis.suppressmessageattribute.aspx]]から、CODE_ANALYSIS定数が定義されていないと動作しません。
+ FxCopのWindowsアプリで解析結果を右クリックし、[Copy As] - [Suppress Message]を選択すると、その解析結果を除外するためのコードがClipboardに登録されます。
+ Clipboardの内容を、ソースコードの該当箇所(Scopeに依って、該当メソッドだったりAssemblyInfo.csアセンブリだったり)に貼り付けます。

** カスタムルールの作成 [#ma091c95]
- 作ってみました。
-- http://jomura.net/svn/Jomura.FxCop.Rules/
-- http://jomura.net/svn/jomura-fxcop-rules/
- ややハマリそうだったのは、「{規定の名前空間}.{埋込XMLファイル名}」=「アセンブリ名」という規約があること。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS