Do You PHP はてブロ

Do You PHPはてなからはてブロに移動しました

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パッケージにしてインストールしていますが、わざわざパッケージにしなくても良さそうです。ただ、新しい規約をサブパッケージにして配布する意味はあるでしょうね。