IntelliJ(PhpStorm)でPHP_CodeSnifferを使う


前提

  • IntelliJ IDEA(ULTIMATE 2018.2)
    • 多分PhpStormも似たような感じ?
  • Mac
  • メモ程度

やりたいこと

  • IntelliJ(ローカル環境)で、PHPコードの静的解析をしたい

やること

  • (まだであれば)Macにcomposerを入れる
  • composerでPHP_CodeSnifferをinstall
  • IntelliJ側を設定
  • おしまい

composer

さっくりと brew でインストールしておきます。

$ brew install composer
// 入ったかな
$ which composer
/usr/local/bin/composer
// 設定の確認
$ composer global  config --list
[bin-dir] {$vendor-dir}/bin (/Users/me/.composer/vendor/bin)
[home] /Users/me/.composer

configをみると、compserがglobal で利用するディレクトリが確認できます。
.composer/ に composer.jsonなどが生成され、ライブラリなどは .composer/vendor/bin に入る、となっていました。

PHP_CodeSniffer

Installation

  • GitHubのREADMEの通りcomposerを使ってインストール
$ composer global require "squizlabs/php_codesniffer=*"

Changed current directory to /Users/me/.composer
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 1 install, 0 updates, 0 removals
  - Installing squizlabs/php_codesniffer (3.3.2): Downloading (100%)
Writing lock file
Generating autoload files

// 入ったかな
$ ls -lah /Users/me/.composer/vendor/bin
phpcbf -> ../squizlabs/php_codesniffer/bin/phpcbf
phpcs -> ../squizlabs/php_codesniffer/bin/phpcs
  • とりあえず最新を使うようにしてみる(バージョン指定したければご自由に 3.* など
  • 特定のプロジェクトで使う訳ではないので global で入れてしまう

IntelliJ側の設定

Preferenceより、

  • Editor > Inspections > PHP Code Sniffer validation にチェックを入れる
  • Languages & Frameworks > PHP > Code Sniffer の Configurationを Local、横の[...]から先ほどのphpcs本体を指定する
    • /Users/me/.composer/vendor/bin/phpcs
    • 選択Finderで不可視ディレクトリが出ない場合は、選択Finder画面で Command + Shift + G をやるとパスを直接入力できるダイアログが出るから便利 (参考)

結果

指摘事項が大量発生して悲しい気持ちになった

おまけ

CakePHPのCodesnifferのルール適用

$ composer global require "cakephp/cakephp-codesniffer=*"

Editor > Inspections > PHP Code Sniffer validationCoding standard 欄を 「Custom」とし横の [...] から、
/Users/me/.composer/vendor/cakephp/cakephp-codesniffer/CakePHP/ruleset.xml のようにruleset.xmlを指定したところCakePHPのルールセットが適用されるようになりました。

参考

Configuring PHP Code Sniffer manually の方を試しました。
IntelliJでComposerの設定をして Available Packages から導入する公式おすすめ?のやり方が良いのかもしれませんが特に試していません(IDEを使いこなせていないだけ)

ルールセットはおいおい調整。
メモ程度の記事なので、もし記事内容がおかしかったらご指摘くださいませ。