FuelPHPとGitLabとJenkinsで継続的インテグレーションする雛形を考えてみた
http://madroom-project.blogspot.jp/2013/01/fuelphpgitlabjenkins.html
--
前回の内容に、PHPCPDによるCPDレポートの出力を加えてみます。
* 「JenkinsとPhingとxxxでFuelPHPのyyyを作成する」シリーズはこれで落ち着きます。。。
JenkinsとPhingとPHPMDでFuelPHPのPMDレポートを作成する
http://madroom-project.blogspot.jp/2013/01/jenkinsphingphpmdfuelphppmd.html
尚、前回のPHPMDと同様、PHPCPDはPEARでインストールできますが、PHPUnit(あるいはPhing??)を-a(--alldeps)オプション付きでインストールすると、一緒に入ってくるようです。既に入ってました。
PHPCPDは、PHPのコードの重複を自動で検出してくれます。
PHPCPD公式??(GitHub): https://github.com/sebastianbergmann/phpcpd
(1)
Jenkinsで"DRY Plugin"をインストールします。
(2)
Jobの設定からPost-build Actionsで"Publish duplicate code analysis results"を選択して、以下を入力します。
Duplicate code results: phpcpd/cpd.xml
(3)
build.xmlを編集します。(前回の内容に、「target name="phpcpd"」を追加して、「target name="all"」の"depends"に"phpcpd"を追加しています。)
<?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="phpcpd">
<delete dir="phpcpd" includeemptydirs="true" />
<mkdir dir="phpcpd" />
<exec dir="." command="
phpcpd
--log-pmd phpcpd/cpd.xml
fuel/app/
"/>
</target>
<target name="all" depends="phpunit,phpdoc,phpmd,phpcpd" />
</project>
(4)
ビルド後、サイドメニューに"Duplicate Code"が表示されれば成功です。尚、問題がない場合(空のディレクトリをスキャンした等)、表示されませんでした。(2回実行すると右側に"Duplicate Code Trend"と出ました。)
とりあえず、これで残すはGitLabのhookからの全自動化か。。。
No comments:
Post a Comment