PHP_CodeSnifferのstandardオプションにはフルパスが使える
ちょっとしたネタ。PHP_CodeSnifferのコードを見ていて気づいたんですが。。。
コーディング規約の指定PHP_CodeSniffer は、複数のプロジェクトで使用するために、 複数のコーディング規約をインストールすることができます。 PHP コードをチェックする際に、どのコーディング規約を使用するかを PHP_CodeSniffer に指定することができます。これを行うのが、コマンドライン引数 --standard です。
standardオプションには規約名だけじゃなく、規約を定義したディレクトリへのフルパスが使えるようです。
たとえば、PEAR :: Manual :: コーディング規約のチュートリアルにある規約MyStandardをカレントディレクトリ以下に作った場合、以下のようにフルパスを指定すればOKです。
$ ls MyStandard Test.php $ phpcs --standard=`pwd`/MyStandard Test.php FILE: /home/shimooka/public_html/pear/PHP_CodeSniffer/Test.php -------------------------------------------------------------------------------- FOUND 3 ERROR(S) AND 0 WARNING(S) AFFECTING 3 LINE(S) -------------------------------------------------------------------------------- 3 | ERROR | Hash comments are prohibited 7 | ERROR | Hash comments are prohibited 9 | ERROR | Hash comments are prohibited -------------------------------------------------------------------------------- $
standardオプションの値がディレクトリでない場合、$PEAR_INSTALL_DIR/PHP/CodeSniffer/Standardsディレクトリ以下にある規約が使われるようです。
Daniel O'Connor: How to customise PHP_CodeSniffer (writing custom coding standards)あたりではPEARパッケージにしてインストールしていますが、わざわざパッケージにしなくても良さそうです。ただ、新しい規約をサブパッケージにして配布する意味はあるでしょうね。