LoginSignup
5
1

More than 1 year has passed since last update.

Laravel環境にPHP_CodeSnifferを導入する

Last updated at Posted at 2022-04-12

概要

  • Laravel環境にてPHP_CodeSnifferを導入する方法をメモ的にまとめる。

詳細

  • PHP_CodeSnifferにてPSR-12に準拠しているかどうかチェックする。
  • 筆者はDocker環境でPHP_CodeSnifferを導入する。
    • /var/www/html直下に直接laravelの構成ファイル(.envやconfigディレクトリ、appディレクトリ等が存在しているものとする。)

方法

  1. PHPのコンテナにログインしてドキュメントルートまで移動する。

  2. 下記コマンドを実行して当該のライブラリをインストールする。(ローカル環境にのみ入れたいので --devオプション付与)

    $ composer require --dev squizlabs/php_codesniffer
    
  3. 下記コマンドを実行して使用する事のできるコーディング規約を確認する。

    $ /var/www/html/vendor/bin/phpcs -i
    
  4. 下記コマンドを実行してCodeSniffer用の設定ファイルを作成して開く。

    $ vi /var/www/html/phpcs.xml
    
  5. 下記の内容を記載する。(設定用の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>
    
  6. 下記コマンドを実行してCodeSnifferが実行できることを確認する。(コーディング規約に準拠していない部分を出力してくれるコマンド)

    $ ./vendor/bin/phpcs --standard=phpcs.xml ./ 
    
  7. コマンドが長いので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 ./"
        ]
    },
    
  8. 下記コマンドで準拠していない部分のチェックができるようになった。

    $ composer sniffer
    
  9. 下記コマンドで準拠していない部分を可能な限り自動修正してくれるようになった。

    $ composer sniffer-rewrite
    
5
1
1

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
5
1