PHPMD(PHP Mess Detector)をjenkinsで利用してみる

Pear PHP DependのスピンオフプロジェクトでもあるPHPMD(PHP Mess Detector)をjenkinsで利用してみる

1.pearチャネルの登録

$ sudo pear channel-discover pear.pdepend.org
$ sudo pear channel-discover pear.phpmd.org

2.依存モジュールの追加

$ sudo pear install pdepend/PHP_Depend

3.PHPMDの追加

$ sudo pear install --alldeps phpmd/PHP_PMD

4.コマンドラインで利用してみる

$ phpmd /path/to/target/ xml codesize,unusedcode,design,naming --reportfile phpms.xml

成功するとphpms.xmlが生成される

5.Jenkins側にプラグインをインストール

プラグインマネージャーから「PMD Plugin」をインストールする

6.ビルド用のファイルを用意する

前回用意したbuildファイルを以下のように修正して利用してみる。
/path/to/svn/projectname/trunk/build.xml

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

    <target name="main" depends= "init,phpcs,phpmd"></target>

    <!-- init -->
    <target name="init" >
        <delete dir= "./reports" includeemptydirs= "true" />
        <mkdir dir= "./reports" />
    </target>

    <!-- checksytle -->
    <target name="phpcs" description= "Generate phpcs.xml using PHP_CodeSniffer" >
        <exec executable="phpcs" output="${basedir}/reports/phpcs.xml" >
        <arg line="
            --report=checkstyle
            --standard=CakePHP
            --extensions=php
            /path/to/app" />
        </exec>
    </target>

    <!-- PHPMD -->
    <target name="phpmd" >
         <phpmd rulesets= "codesize,unusedcode,design,naming" >
             <fileset dir= "/path/to/app/" >
                 <include name= "**/*.php" />
                 <exclude name= "**/*Test.php" />
             </fileset>
             <formatter type= "xml" outfile= "reports/pmd.xml"/>
         </phpmd>
    </target>
</project>

7.プロジェクトの設定

設定>ビルド後の処理から、PMD警告の集計にチェックを入れ、集計するファイルにreports/pmd.xmlと記述

8.ビルドの実行をする

プロジェクトページから「ビルド実行」を選択
問題なくビルドされていれば、左ナビに「PMD警告」へのリンクが表示され、2回以降のビルド後には、プロジェクトトップにPMD警告の推移が表示される。