PHPStorm で PHP_CodeSniffer をかける #phpstorm

はじめに

開発環境は Docker を利用しており、最初は Docker 上の php を利用して連携しようと思っていた。

実際に連携自体はできるのだが、ホストマシンのスペックの問題なのか、避けられない遅延なのか、Inspection が走るたびに指摘事項が一瞬消えてまたつくという状態になってしまった。

なかなかにストレスフルだったので、結局ローカルの php と連携させることにした。

なおローカルで連携させるなら composer 経由のほうが楽だと思うが、 composer 周りまでローカルで用意するのは避けたかったため利用していない。

PHPStorm は 2020.3.2 を利用。

PHP_CodeSniffer を設定

設定自体は Quality Tools からできる。

f:id:su-kun1899:20210228211354p:plain

Local はたぶん最初から入っているが、 Docker 上のものを使いたいなら事前に CLI Interpreter を設定しておく必要がある(設定しないと選択肢に出てきてくれない)。

Path をフルパスで設定する。うまく認識していれば validate 押下後に成功メッセージが表示される。

f:id:su-kun1899:20210228211451p:plain

phpcbf も利用するなら合わせて設定する。

timeout は Docker 連携の場合引っかかる可能性があるので、30~60秒くらいにしておいたほうがいいが、ローカルなら 5 秒でも問題なさそう。

ちなみに Xdebug を利用していると validate 時に下記のようなエラーメッセージが出る場合がある。

Xdebug: [Step Debug] Could not connect to debugging client. Tried: host.docker.internal:9003 (through xdebug.client_host/xdebug.client_port) :-(

これは PHPStorm 側で Xdebug の Listen を切っている場合に起きてしまう警告なのだが、 phpcs のためだけに常に Listen しておいたり xdebug の有効無効を切り替えるのが微妙だったのもローカルに振り切った理由のひとつ(開発用の環境だと大抵 Xdebug 使うので)。

Inspection を設定

PHP_CodeSniffer validation を有効化する。

f:id:su-kun1899:20210228211626p:plain

自前の設定を利用するには Coding Standard を Custom にする。

ruleset を絶対パスで設定する。

f:id:su-kun1899:20210228211830p:plain

Docker 連携の場合はリモート側のパスで設定する。

これで PHPStorm 上で Inspection が効くようになる。

参考

pleiades.io