LoginSignup
3
7

More than 5 years have passed since last update.

IntelliJ(PhpStorm)でPHP_CodeSnifferを使う

Last updated at Posted at 2018-10-31

前提

  • 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 をやるとパスを直接入力できるダイアログが出るから便利 (参考)

結果

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

おまけ

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を使いこなせていないだけ)

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

3
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
7