コーディング規約のチェックを行う・整形する標準ツール(PHP CodeSniffer)の使い方

CakePHP3、CakePHP4以降のCakePHPには標準でPHP CodeSnifferが組み込まれています。

PHP_CodeSnifferとは
コーディング規約のチェックを行うコマンド
コーディング規約の通りに整形を行うコマンド
composer.jsonの該当箇所
設定ファイル
コマンドの実体

PHP_CodeSnifferとは

PHP_CodeSnifferとは、
・コード規約のチェックを行うツール
・コード規約の通りに整形するツール
です。

コーディング規約のチェックを行うコマンド

$ composer cs-check

を実行することで

phpcs --colors -p src/ tests/

が実行されて、src/ tests/以下をチェックしてくれます。

コーディング規約の通りに整形を行うコマンド

$ composer cs-fix

を実行することで

phpcbf --colors -p src/ tests/

が実行されて、src/ tests/以下を整形してくれます。

自動で整形してくれますが、まれにおかしなところがあります。
phpcbfを直接実行する場合は --dry-runオプションで事前にどこが整形されるかを確認することができます。
Gitでコード管理をしているなら
(1) 一度コミットをして
(2) cs-fixを実行し
(3) 差分を確認したのち
(4) 「最後のコミットをやり直し」でコミットをしなおす
といいです。

composer.jsonの該当箇所

composer.json

{
……
…
……
    "require-dev": {
        "cakephp/bake": "^2.6",
        "cakephp/cakephp-codesniffer": "^4.5",
        "cakephp/debug_kit": "^4.5",
        "josegonzalez/dotenv": "^3.2",
        "phpunit/phpunit": "~8.5.0 || ^9.3"
    },
……
…
……
    "scripts": {
        "post-install-cmd": "App\\Console\\Installer::postInstall",
        "post-create-project-cmd": "App\\Console\\Installer::postInstall",
        "check": [
            "@test",
            "@cs-check"
        ],
        "cs-check": "phpcs --colors -p  src/ tests/",
        "cs-fix": "phpcbf --colors -p src/ tests/",
        "stan": "phpstan analyse",
        "test": "phpunit --colors=always"
    },
    "prefer-stable": true,
    "config": {
        "sort-packages": true,
        "allow-plugins": {
            "cakephp/plugin-installer": true,
            "dealerdirect/phpcodesniffer-composer-installer": true
        }
    }
}

設定ファイル

PHP_CodeSnifferの設定ファイル
vendor/squizlabs/php_codesniffer/CodeSniffer.conf
から、CakePHPのコーディングルール設定ファイル
vendor/cakephp/cakephp-codesniffer/CakePHP/ruleset.xml
が呼び出されています。

コマンドの実体

vendor/bin/phpcs
から
vendor/squizlabs/php_codesniffer/bin/phpcs
が呼び出されています。

vendor/bin/phpcbf
から
vendor/squizlabs/php_codesniffer/bin/phpcbf
が呼び出されています。

関連記事

スポンサーリンク

アンカーを:hover状態にすると親ブロックの高さが変化する

ホームページ製作・web系アプリ系の製作案件募集中です。

上に戻る