Hudsonの使い方⑰ Hudsonで.NETを静的解析

今まではJavaプロジェクトで静的解析をしましたが、
.NETプロジェクトでも静的解析をしてみます。


.NETの規約に従っているかをチェックしてくれる
FxCopを使って静的解析してみます。

Slave端末にFxCopをインストールします。

FxCopダウンロードしインストールします。

FxCopプロジェクトファイルを作成します。

1.スタートメニューからFxCopを起動します。
2.メニューのProject→Add Targetsから対象のDLLを選択します。
(今回はHelloNUnit.dll)
3.Project→Analyzeで実行します。
4.NUnitのDLLがないよ〜と言われるので、nunit.framework.dllを指定します。
5.file→saveでプロジェクトファイルを保存します。(今回はHelloNUnit.FxCop

FxCopNAntから実行できるようにdefault.buildを追加します。

管理しやすいように、以前に作ったdefault.buildと分けて作りました。


■codeAnalysis.build

<?xml version="1.0" encoding="utf-8"?>
<project name="CodeAnalysis" default="analysis" basedir=".">

  <!-- ========================================================== -->
  <!-- 定義値 -->
  <!-- ========================================================== -->
  <property name="codeAnalysis.dir" value="codeAnalysis"/>
  <property name="fxcop.home" value="C:/Program Files/Microsoft FxCop 1.35"/>
  <property name="fxcop.project" value="HelloNUnit.FxCop"/>
  <property name="fxcop.out" value="fxcop.xml"/>
  
  <!-- ========================================================== -->
  <!-- Antタスク実行順序 -->
  <!-- ========================================================== -->
  <target name="analysis">
    <call target="clean" />
    <call target="fxcop" />
  </target>
  
  <!-- ========================================================== -->
  <!-- ディレクトリをクリア -->
  <!-- ========================================================== -->
  <target name="clean">
    <delete dir="${codeAnalysis.dir}" />
    <mkdir dir="${codeAnalysis.dir}" />
  </target>
  
  <!-- ========================================================== -->
  <!-- FxCop実行 -->
  <!-- ========================================================== -->
  <target name="fxcop">
    <exec program="FxCopCmd.exe" basedir="${fxcop.home}">
      <arg value="/p:${fxcop.project}" />
      <arg value="/o:${codeAnalysis.dir}/${fxcop.out}" />
    </exec>
  </target>
  
</project>

プロジェクトの設定でNAntの呼び出しを追加します。(赤枠の部分です)

Violations Pluginをインストールします。

ジョブの設定でReport Violationsをチェック

FxCopの出力結果ファイルを指定します。(赤枠の部分です)

ジョブを実行します。

FxCopの警告があれば表示されます。


詳細も表示されます。