phpcsでPSR-2のコーディング規約を設定する

仕事でPHPを久々に扱うことになり、Laravelを使ったPJにアサインされました

せっかくなので、PJ内のコーディング規約をLaravelのPSR-2に統一することを決め、それをチーム内で遵守させるためエディタに拡張を入れたのですがエラーが発生したためいろいろと作業メモを残します

homebrewでPHP@72をインストール

brewでphpcsを使う場合、composerを入れる必要があるのですがその場合PHP@72を要求されるため先にこちらを入れます

php -v
brew install php@7.2

これでインストールされますが、Macにデフォルトで入っているPHP7.1より優先させるため下記の作業を追加で行います

echo 'export PATH="/usr/local/opt/php@7.2/bin:$PATH"' >> ~/.bash_profile
echo 'export PATH="/usr/local/opt/php@7.2/sbin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
php -v

homebrewでcomposerをインストール

brewでcomposerをインストールし、composer経由でインストールしたコマンドのパスを登録します

brew install composer
echo 'export PATH="~/.composer/vendor/bin/:$PATH"' >> ~/.bash_profile
source ~/.bash_profile

composerでPHP_Codesnifferをインストール

composer global require "squizlabs/php_codesniffer=*"

これで先程指定したパスにコマンドがインストールされます

VS Codeにphpcsの拡張機能を入れる

これはエディタ上で拡張機能のphpcsを検索すれば出てくるので、対象をインストールしVS Codeを再起動します

その後、settings.json"phpcs.standard": "PSR2"を追加すれば設定完了です

エラーについて

再起動時PHPファイルを開くと、下記エラーが発生する場合があります

phpcs: Request workspace/configuration failed with message: Unable to locate phpcs. Please add phpcs to your global path or use composer dependency manager to install it in your project locally.

発生した場合、以下の対応を行います

  1. ユーザー設定を開き、拡張機能PHP CodeSnifferを選択
  2. Executable Pathの項目に、composerでインストールしたphpcsコマンドのフルパスを入れる

以上の設定を行うことでエラーが解消される、はず

何もしなくても気がついたらエラーが出なくなったなどよくわからない症例もありましたが、基本これで大丈夫です