HudsonでPHPのコードチェック
Javaではコーディング規約のチェックツールとして CheckStyleがありますが、PHPではPHP_CodeSnifferがあります。PHP_CodeSnifferを試してみるなどを参考にして、PHP_CodeSnifferをインストールしてきます。
PHP_CodeSnifferはコードをチェックした結果を下記のようにいくつかの形式で標準出力に出力できます(何故かファイルには出力できないorz)。
Print either the "full", "xml", "checkstyle", "csv" or "summary" report (the "full" report is printed by default)
Checkstyleの形式でチェック結果を出力すれば、Hudsonのプラグインで結果をグラフ等で表示できそうです。
build.xmlの作成
そこで、以下のようなbuild.xmlを作成します。
<?xml version="1.0" encoding="utf-8" ?> <project name="StringUtil" basedir="." default="checkstyle"> <target name="checkstyle"> <exec command="phpcs --standard=PEAR --report=checkstyle --ignore=*Test.php -n src > reports/checkstyle.xml" /> </target> </project>
PhingにはPHP_CodeSniffer用のタスクがあるのですが、2.3.Xでは出力をファイルに出力できない*1ので、コマンドラインを実行してその結果をファイルに出力するようにします。上記は、PEARの規約に従い(--standard=PEAR)、レポートをCheckstlyeの形式で(--report=checkstyle)、テストコードは対象外(--ignore=*Test.php)で、srcディレクトリにあるPHPファイルをチェックします。その結果はreports/checkstyle.xmlに出力されます。
Violationsプラグインのインストール
Checkstyleを処理するプラグインには、CheckStyleプラグインとViolationsプラグインがありますが、ViolationsプラグインはFindBugs等にも対応しているのでViolationsプラグインをインストールします。
プロジェクトの作成
d:id:ssogabe:20081102:1225642743と同様にプロジェクトをフリースタイルで作成します。ソースも同じものを使用します。
Violationsプラグインの設定
チェックした結果のファイルを指定します。ファイルはワークスペースのディレクトリからの相対パスで指定します。
これで準備ができたのでビルドを実行してみます。
PHP_CodeSnifferはルールの変更等が難しいところはありますので、PEARやZendなどの規約に準拠した方が無難のようです。
PHP_CodeSnifferの一番の問題はチェック対象が多いと、リカーシブコールが100回を超えてエラーになってしまうことでしょうか。そのときは、チェックをディレクトリ毎などに分けるなど工夫が必要です。
*1:2.4.Xではできるようになっています