PHP CodeSniffer ルールセットのカスタマイズ方法

2014年9月23日  カテゴリー:プログラム PHP  タグ: ,
Pocket
LINEで送る

PHP CodeSniffer(PHPコードスニファー)は、PHPやJavaScriptで書いたプログラムが、決められたコーディング規約に則って書かれているかをチェックできるツールです。対応しているコーディング規約は、Zend、PEAR、PSR2 などがあります。

私は普段、ZendのPHPコーディング規約に則って、プログラミングをしているのですが、一部例外の規約を設けているため、PHP CodeSniffer でプログラムコードをチェックすると、規約違反となりエラーがずらずらと表示されてしまいます。そこで、PHP CodeSniffer のルールセットをカスタマイズする方法を調べてみました。

PHP CodeSniffer のインストール

今回は、CentOS6.5にインストールしました。PEAR経由でのインストールになります。

 

対応しているコーディング規約の確認
標準でZendコーディング規約が対応していることが分かります。

 

標準の設定では、日本語などのマルチバイト文字のカウント数がおかしくなりますので、文字エンコーディングをUTF8に変更しておきましょう。

 

phpcsコマンドは特に指定しなければ、PEARのコーディング規約を元にチェックしますので、他のコーディング規約を使いたい場合は、「--standard=」オプションでコーディング規約を指定します。また、PHPプログラムが入ったディレクトリをチェック対象とすれば、まとめてコーディング規約をチェックしてくれます。

Zendコーディング規約でのチェック

私が普段使っているZendのPHPコーディング規約では、変数名には常に小文字で開始する "camelCaps" 方式を使用しなければなりませんが、もろもろの事情によりこの規約を除外しています。

例えば下記のコードは、変数名「$user_name」は、Zendの規約では「$userName」する必要があります。

 

これをphpcsコマンドでチェックすると、当然コーディング規約違反となりエラーとして表示されます。

ルールセットのカスタマイズ

ルールセットのカスタマイズする場合、直接ルールセットファイルを編集してもかまいませんが、なにかの理由で元に戻したい時に困りますので、カスタマイズしたいルールセットを継承したルールセットを新たに作成して、このルールセットを編集します。PHP CodeSnifferのルールセットファイルは、CentOSの場合「/usr/share/pear/PHP/CodeSniffer/Standards/」以下に配置されています。

新たなルールセットの作成

ルールセット名のディレクトリを作成し、ディレクトリの直下に「ruleset.xml」ファイルを作成します。今回はルールセット名を「Zend_Custom」としました。

 

「ruleset.xml」には、ルールセット名と簡単な説明文が必要です。また、3行目の「rule ref=」でZendルールセットを継承し、4行目からの「exclude name=」で除外したいSniff(ルール)を指定します。

 

コーディング規約を「--standard=」オプションで毎回指定するのも面倒ですので、phpcs標準のルールセットを、上で作成した「Zend_Custom」に変更します。

 

最後にphpcsの設定を確認します。下記の表示があればOKです。

 

先ほどコーディング規約違反でエラーとなった、PHPファイルをチェックしてみます。「-v」オプションを付けると詳細が表示されます。5行目で(0 errors, 0 warnings)と表示され、エラーがないことが分かります。

 

今回は、Zandのルールセットを元に独自のルールセットを作成しましたが、一からルールセットを作成することも可能ですので、独自のコーディング規約を設けている場合でも、PHP CodeSniffer は導入しやすいと思います。コーディング規約のチェックは、PHP CodeSniffer にまかせてしまえば、システム設計やプログラミング作業の時間を増やせるかもしれませんね。

スポンサーリンク
Pocket
LINEで送る

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です