概要
- Laravel環境にてPHP_CodeSnifferを導入する方法をメモ的にまとめる。
詳細
- PHP_CodeSnifferにてPSR-12に準拠しているかどうかチェックする。
- 筆者はDocker環境でPHP_CodeSnifferを導入する。
-
/var/www/html
直下に直接laravelの構成ファイル(.envやconfigディレクトリ、appディレクトリ等が存在しているものとする。)
-
方法
-
PHPのコンテナにログインしてドキュメントルートまで移動する。
-
下記コマンドを実行して当該のライブラリをインストールする。(ローカル環境にのみ入れたいので
--dev
オプション付与)$ composer require --dev squizlabs/php_codesniffer
-
下記コマンドを実行して使用する事のできるコーディング規約を確認する。
$ /var/www/html/vendor/bin/phpcs -i
-
下記コマンドを実行してCodeSniffer用の設定ファイルを作成して開く。
$ vi /var/www/html/phpcs.xml
-
下記の内容を記載する。(設定用のxmlの記載内容は公式がこちらにまとめてくれている → https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-Ruleset)
/var/www/html/phpcs.xml<?xml version="1.0"?> <ruleset name="PSR12/Laravel"> <description>PSR12 compliant rules and settings for Laravel</description> <arg name="extensions" value="php" /> <!-- コーディング規約指定 --> <rule ref="PSR12" /> <arg name="colors" /> <arg value="ps" /> <!-- 除外ディレクトリ設定 --> <exclude-pattern>/bootstrap/</exclude-pattern> <exclude-pattern>/node_modules/</exclude-pattern> <exclude-pattern>/public/</exclude-pattern> <exclude-pattern>/resources/</exclude-pattern> <exclude-pattern>/storage/</exclude-pattern> <exclude-pattern>/vendor/</exclude-pattern> <exclude-pattern>/server.php</exclude-pattern> <exclude-pattern>/app/Console/Kernel.php</exclude-pattern> <exclude-pattern>/tests/CreatesApplication.php</exclude-pattern> </ruleset>
-
下記コマンドを実行してCodeSnifferが実行できることを確認する。(コーディング規約に準拠していない部分を出力してくれるコマンド)
$ ./vendor/bin/phpcs --standard=phpcs.xml ./
-
コマンドが長いのでcomposer.jsonのscriptに記載してcomposerコマンドでショートカットできるようにする。(
./vendor/bin/phpcbf
の方はCodeSnifferが可能な限り自動修正してくれる。自動で修正できないもの(関数名等依存度が高いもの)もあるのでその場合、手動で直す必要がある。)/var/www/html/composer.json"scripts": { "sniffer": [ "./vendor/bin/phpcs --standard=phpcs.xml ./" ], "sniffer-rewrite": [ "./vendor/bin/phpcbf --standard=phpcs.xml ./" ] },
-
下記コマンドで準拠していない部分のチェックができるようになった。
$ composer sniffer
-
下記コマンドで準拠していない部分を可能な限り自動修正してくれるようになった。
$ composer sniffer-rewrite