今までphpunit,phpmd,phpcodesniffer,phpdocumentなどのツールをいろいろと試してきますが、個別に動かしていると大変面倒ですので、これを一気に行えるライブラリがあります。
phing
JavaでいうAnt,mavenのようなビルドツールです。
xml形式でタスクを記述しておくと、上からタスクを順に読み込んで実行してくれます。
インストール
composerでインストールするのが一番簡単かと思います。
1 2 3 |
"require":{ "phing/phing": "2.*" } |
サンプル
phpunit,phpmd,phpcodesniffer,phpdocumentを一度に実行する場合です。
build.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
<?xml version="1.0" encoding="UTF-8"?> <project name="samplePro" default="build"> <target name="phpunit"> <phpunit> <formatter type="plain" usefile="false" /> <batchtest> <fileset dir="./tests"> </fileset> </batchtest> </phpunit> </target> <target name="phpmd"> <phpmd rulesets="cleancode,codesize,controversial,design,naming,unusedcode"> <formatter type="text" usefile="false" /> <fileset dir="./"> <include name="src/" /> <include name="tests/" /> </fileset> </phpmd> </target> <target name="phpcodesniffer" > <phpcodesniffer standard="PSR2" > <fileset dir="./"> <include name="src/" /> <include name="tests/" /> </fileset> <formatter type="full" usefile="false"/> </phpcodesniffer> </target> <target name="phpdocument" description="Generate document" > <phpdoc2 title="API Documentation" destdir="./docs" template="responsive-twig"> <fileset dir="./"> <include name="src/" /> <include name="tests/" /> </fileset> </phpdoc2> </target> <target name="build" depends="phpunit,phpmd,phpcodesniffer,phpdocument" /> </project> |
解説(自分用メモ)
- まず実行するprojectと実行するタスクを<project name=”” default=”build”></project>で記述します。今回実行するタスクはbuildになります。
- あるタスクが別のタスクを必要とするときdepends~で記述します。上記の例だとbuildはphpunit,phpmd,phpcodesniffer,phpdocumentというタスクに依存しています。要はこの4つのタスクを実行した後で実行されます。
- 1つ1つのtaskは<target name~と記述します。記述したいことがあればdescriptionで記述します。
- 実行したい中身を<phpdoc2などのタグで囲みます。個々のタグをどのように記述するかは冒頭で紹介したphingのリンクに書かれています。https://www.phing.info/docs/guide/stable/
なお、if文などの条件分岐も盛り込めるようです。
実行コマンド
最小なのは設定ファイルのみ定義して実行です。
./vendor/bin/phing -buildfile build.xml
他に特定タスクだけを実行したい場合は下記のようにできます。
./vendor/bin/phing -buildfile build.xml phpunit
参考リンク
[PHP]10分で静的解析による統一されたコーディング環境を整える(Phing / php-md / php-cs-fixer)
[…] phing […]