January 4, 2013

JenkinsとPhingとPHPMDでFuelPHPのPMDレポートを作成する

2013/01/05 追記:
以下に、まとめ記事を書きました。
FuelPHPとGitLabとJenkinsで継続的インテグレーションする雛形を考えてみた
http://madroom-project.blogspot.jp/2013/01/fuelphpgitlabjenkins.html

--

前回の内容に、PHPMDによるPMDレポートの出力を加えてみます。

JenkinsとPhingとphpDocumentor 2でFuelPHPのPHPDocを作成する
http://madroom-project.blogspot.jp/2013/01/jenkinsphingphpdocumentor-2fuelphpphpdoc.html

PHPMDは、PHPのコードの問題を自動で検出してくれます。
PHPMD公式: http://phpmd.org/

尚、PHPMDはPEARでインストールできますが、PHPUnit(あるいはPhing??)を-a(--alldeps)オプション付きでインストールすると、一緒に入ってくるようです。既に入ってました。


(1)
Jenkinsで"PMD Plugin"をインストールします。
* HTMLレポートも出力できるので、前回と同様"HTML Publisher plugin"を用いても良いですが、情報量の観点から、今回は"PMD Plugin"を使います。


(2)
Jobの設定からPost-build Actionsで"Publish PMD analysis results"を選択して、以下を入力します。
PMD results: phpmd/pmd.xml


(3)
build.xmlを編集します。(前回の内容に、「target name="phpmd"」を追加して、「target name="all"」の"depends"に"phpmd"を追加しています。)
<?xml version="1.0" encoding="utf-8" ?>
<project name="FuelPHP Project" basedir="." default="all">

    <target name="phpunit">
        <delete dir="phpunit" includeemptydirs="true" />
        <mkdir dir="phpunit" />
        <exec dir="." command="
            phpunit
            -c fuel/app/phpunit.xml
            --coverage-html phpunit/coverage/html
            --log-junit phpunit/junit.xml
        "/>
    </target>

    <target name="phpdoc">
        <delete dir="phpdoc" includeemptydirs="true" />
        <mkdir dir="phpdoc" />
        <exec dir="." command="
            phpdoc
            -d fuel/app/
            -t phpdoc/
        "/>
    </target>

    <target name="phpmd">
        <delete dir="phpmd" includeemptydirs="true" />
        <mkdir dir="phpmd" />
        <exec dir="." command="
            phpmd
            fuel/app/
            xml
            codesize,controversial,design,naming,unusedcode
            --reportfile phpmd/pmd.xml
        "/>
    </target>

    <target name="all" depends="phpunit,phpdoc,phpmd" />

</project>

(4)
ビルド後、サイドメニューに"PMD Warnings"が表示されれば成功です。 尚、PHPMDのルールで"controversial"を指定するとキャメルケース関係の警告が出るようになります。今回は、サンプルということで書いてありますが、FuelPHP 1.xのコーディング規約はスネークケースなので、必要に応じて外して下さい。

参考: http://phpmd.org/rules/index.html


No comments:

Post a Comment