HudsonでPHPメモ(2) PHP_CodeSnifferでコーディング規約チェック
PHP_CodeSnifferでコーディング規約にあっているかチェックしてみる。PHP_CodeSnifferでは、MySource, Squiz, Zend, PEARおよびPHPCSの5種類の規約があらかじめ用意されている。
準備
- Phingは2.4以上をインストールする。
- PHP_CodeSnifferをインストールする。
- Checkstyle Pluginをインストールする。
- たくさん警告が出る場合メモリが足らなくなるので、php.iniのmemory_limitを大きい値に変えておく。Hudson用にもヒープを多めに設定しておく。
build.xmlの作成
build.xmlに次のタスクを追加する。
<target name="phpcs"> <phpcodesniffer standard="PEAR"> // PEAR形式でチェック <fileset dir="src"> // チェックするPHPのソースを指定 <include name="mantis/core/*.php" /> </fileset> <formatter type="checkstyle" // チェック結果をcheckstyle形式のXMLで出力 usefile="true" outfile="reports/phpcs.xml" /> // (1) チェック結果のファイル名 </phpcodesniffer> </target>
まとめ
Hudsonの設定そのものは難しくない。それよりも、チェックする規約をどうするかが問題。PHP_CodeSnifferで用意されている規約以外の場合、カスタマイズするのが面倒そう。最低限守らなければならない、修正しなくてはならない規約でチェックしないと、誰も直さない無意味なものになりかねない。
あとは、PHP_CodeSnifferもCheckStyle Pluginも警告が多いとメモリをかなり使うので、memory_limitやヒープは多めにとっといたほうがいい(Mantisのソースの場合2G程度にしないと、Fatal ErrorでPHP_CodeSnifferが異常終了してしまった)。