プロジェクトテンプレート⑥

ant/cpd.properties、ant/cpd.xmlはこんな感じ。

build.xmlから呼び出されるAntタスクです。
PMDに含まれるCPDを使って、似たようなコードがないかをチェックします。


PMD:http://pmd.sourceforge.net/


■ant/cpd.properties

###################################################
# CPD定義
###################################################
# CPDインストールディレクトリ
cpd.home=${basedir}/tools/pmd-bin-5.0.4
# CPD解析結果ファイル名
cpd.output=cpd.xml


■ant/cpd.xml

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

  <!-- ========================================================== -->
  <!-- 定義値 -->
  <!-- ========================================================== -->

  <!-- プロパティファイル名 -->
  <property file="${basedir}/build.properties" />
  <property file="${basedir}/ant/cpd.properties" />

  <!-- ========================================================== -->
  <!-- Antタスク定義 -->
  <!-- ========================================================== -->
  <path id="cpd.lib">
    <fileset dir="${cpd.home}/lib">
      <include name="*.jar"/>
    </fileset>
  </path>
  <taskdef name="cpd" classpathref="cpd.lib" classname="net.sourceforge.pmd.cpd.CPDTask"/>

  <!-- ========================================================== -->
  <!-- Antタスク実行順序 -->
  <!-- ========================================================== -->
  <target name="analysis">
    <antcall target="cpd" />
  </target>

  <!-- ========================================================== -->
  <!-- CPD実行 -->
  <!-- ========================================================== -->
  <target name="cpd">
    <cpd encoding="${src.encoding}" minimumTokenCount="100" format="xml" language="java" outputFile="${codeAnalysis.dir}/${cpd.output}">
         <fileset dir="${src.dir}">
             <include name="**/*.java"/>
         </fileset>
     </cpd>
  </target>

</project>

Jenkinsの設定はこんな感じ。

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

ジョブの設定で重複コード分析の集計をチェック

CPDの出力結果ファイルを指定します。

ジョブを実行します。

CPDの警告があれば表示されます。(赤枠の部分です)


詳細も表示されます。


昔、Hudson触ってた時はやってなかったな・・・