PHPStormにPHP_CodeSnifferを導入してみた

HBソフトスタジオの中村です。

PHPには幾つかのソースコード解析ツールがあるのですが、今回はPHPStormにPHP_CodeSnifferを導入してみました。

PHP_CodeSniffer

PHP_CodeSnifferは、コーディング規約(PSRなど)に沿った構文チェックを行う事ができます。
このPHP_CodeSnifferでは下記の機能を持っています。

定義されたコーディング規約の違反を検出する
コーディング規約の違反を修正する

インストール

以下のcomposerコマンドをターミナルで叩いてインストールできます。

$ composer global require "squizlabs/php_codesniffer=*"

インストール後、下記のコマンドで使用可能なコーディング規約を確認できます。

$ phpcs -i
The installed coding standards are PEAR, Zend, PSR2, MySource, Squiz, PSR1 and PSR12

いくつか種類がありますが今回はPSR準拠で、PSR12を選択します。
※PSR12はPSR2を拡張されたものであり、併せてPSR1にも準拠する必要があります。

インストールしたパッケージの場所を下記のコマンドで確認します。

$ which phpcs
/Users/****/.composer/vendor/bin/phpcs

PHPStorm設定

Preferences を開きます。
続いて、Languages & Frameworks > PHP > Quality Tools を開きます。
PHP_CodeSnifferを開いて、Configurationの右にある「…」を選択します。

PHP_CodeSniffer pathには、インストールしたパッケージの場所にある「phpcs」を選択、Path to phpcbf には「phpcbf」を設定します。

Validate ボタンを押した時すと、一番下に「OK. PHP_CodeSniffer version …(省略」と表示されたら、OKボタンを押して画面を閉じましょう。

Preferences に戻ると PHP_CodeSniffer Inspection Is not enabled の表示がでているので選択します。

選択すると、Editor > Inspectionsの画面が開きます。
PHP Code Sniffer validationにチェックを入れ、Coding standardを「PSR12」を選択し、OKボタンを押して画面を閉じましょう。
※選択項目に何も表示されない場合は、隣にある丸い矢印の更新ボタンを押すと表示されます。

以上で設定は完了です。

確認してみよう

試しにPSR12に準拠していないPHPのコードをPHPStormで作成します。
・メソッド名はcamelCase記法で定義する必要があります。(PSR1)
・新しいクラスをインスタンス化するときは、コンストラクターに引数が渡されていない場合でも、括弧が常に存在している必要があります。(PSR12)

<?php

namespace codesuniffer;

class Abc
{
public function method_dummy()
{
return true;
}
}

$test = new Abc;

設定に問題がなければ赤い下線にカーソルを合わせると画像のようなメッセージが表示され、何に準拠してないかなど教えてくれるようになります。

また、このメッセージの下部にある「PHP Code Beautifer and Fixter …」 を押すと規約に準拠するように修正してくれます。

以上!