プロジェクトテンプレート⑥
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触ってた時はやってなかったな・・・