Copy & Paste Engineer

【PHP】PHP_CodeSniffier を使用してコードをPSR(コーディング規約)に基づいて整形する

【PHP】PHP_CodeSniffier を使用してコードをPSR(コーディング規約)に基づいて整形する

PHP のパッケージ、 PHP_CodeSniffer を使用してPSR(PHPコーディング規約)に基づいて整形させる方法。

インストール方法

基本的に開発でしか使わないはずなので --dev を付けてインストール。

composer require --dev "squizlabs/php_codesniffer"

インストールが完了したら以下でヘルプが出てくることを確認。

./vendor/bin/phpcs -h

使い方

使用可能なコーディング規約を確認。

./vendor/bin/phpcs -i

使用可能なPSRが出てきます。

The installed coding standards are MySource, PEAR, PSR1, PSR12, PSR2, Squiz and Zend

設定

以下のような作りが基本的な設定ファイルになります。

<?xml version="1.0"?>
<ruleset name="PSR12">
    <description>PSR12 rules</description>

    <!-- 拡張子の指定 -->
    <arg name="extensions" value="php" />

    <!-- 適用コーディング規約の指定 -->
    <rule ref="PSR12" />

    <!-- 出力に色を適用 -->
    <arg name="colors" />

    <!-- オプション p:進捗表示  s:エラー表示時にルールを表示 -->
    <arg value="ps" />

    <!-- 除外ディレクトリ -->
    <exclude-pattern>/vendor/</exclude-pattern>
</ruleset>

以下のように特定のルールの中で除外や追加することも可能です。

<?xml version="1.0"?>
<ruleset name="PSR12">
    <description>PSR12 rules</description>
    <rule ref="PSR12">
        <!-- "PSR12" の中で除外するルールがあれば記載 -->
        <!--<exclude name="Generic.Files.LineLength"/>-->
        <!--<exclude name="PSR1.Classes.ClassDeclaration"/>-->
    </rule>
    <!-- 追加するルールがあれば記載 -->
    <!--<rule ref="PEAR.WhiteSpace.ObjectOperatorIndent"/>-->
</ruleset>

設定をチェック

./vendor/bin/phpcs -e

設定の各種対応するものはこちらから見ることが出来ます。 PHP CodeSnifferにおけるPSR1,2の検知箇所と対応するSniffer - Qiita

実行

phpcs --report=[summary|source] --standard=[ルール名|設定ファイル] [ファイル|ディレクトリ]

各種オプションはなくても大丈夫です。 phpcs.xml が作られていれば基本的に読み込まれています。

./vendor/bin/phpcs --report=summary .
./vendor/bin/phpcs --report=source .

ソースコードの自動整形

./vendor/bin/phpcbf --standard=[ルール名|設定ファイル] [ファイル|ディレクトリ]
./vendor/bin/phpcbf .

参考