2013年7月12日金曜日

VS2012ExpressでFxCop(コマンドライン版)を実行する。

今僕がいじっているPCには、VisualStudio 2012 Express (VS Express) のWebとDesktopがインストールされていますが、FxCopのコマンドライン版はすでに入っていました。



最初から入っていたかどうかは謎ですが…。深く追求はしないことにして、こいつが動くかどうかを確認しておきます。

コマンドプロンプトを起動し、FxCopCmd.exeを実行します。/f オプションで分析対象のアセンブリをフルパスで、また、結果をコンソールに出力させるため、/c オプションも付けて実行。



あれ?途中までうまくいったと思ったらエラーが出た。「Xslファイルが無ぇ」と来たか。

確かにエラーメッセージを見ると、上のエクスプローラで示したフォルダに、「Xml」フォルダが無いとおかしいのかな?

うーん。そんなもんなのか。でも探せばどっかにあるんじゃないか。と思ったら果たしてありました。このリンク先がいつまであるかも謎ですが、とりあえず貼っておく。

https://trac.openstreetmap.org/browser/applications/utils/Srtm2Osm/trunk/lib/Microsoft%20FxCop%201.36/Xml/VSConsoleOutput.xsl?rev=6526

謎のTracサイトですが、このXslはそれっぽい。リンク先のページの下のほうにある、「Download in other formats / Original Format」のリンクから、「VSConsoleOutput.xsl」ファイルをダウンロードし、FxCopのフォルダに「Xml」サブフォルダを作ってそこにコピー。

その後さっきと同じコマンドを実行した結果。





うん。これでOK。特にSDK+FxCopを別途インストールしなくとも、コマンドラインのFxCopならExpressでも動作させられるようですね。…Xslファイルを一つ謎のサイトから持ってきたことを除けば、まぁ、問題はないと言えるような気がしなくもないかな。



…で、ここまでできるならビルドにFxCopも統合して、FxCopのメッセージをビルド時にワーニングとして出すようにできるんじゃないかと思い、いろいろ試行錯誤してみましたが、今のところできて無いです。MsBuildのフォルダにはFxCop用のターゲットファイルもあったし、.csproj のファイルに<CodeAnalysisTarget>を書けばいけるんじゃないかと思ったんですが、甘かった。

どなたかVS2012Expressで、FxCopをビルドに統合できた方。もしいたら教えていたいただきたいなー。なんて。

0 件のコメント:

コメントを投稿