はじめに
チーム開発をしているときに各々のルールでコードを書いていたらいつのまにかコードがカオスに…。
なんてことないように同じルールにそってコードが整形されていったら便利ですよね。
PHPに PHP CS Fixer
と PHP_CodeSniffer
という 規約にそってコードを読み取ってくれるライブラリ があります。
今回は PHP_CodeSniffer
について導入手順と使用方法について見ていきます。
(※ PHP CS Fixer
、規約については後日執筆予定です。)
目次
Installation
codesniferを使用したいのは開発環境のみなので -—dev
を付けます。
composer require "squizlabs/php_codesniffer=3.*" --dev
composer については以下参照。
Getting Started
PHP_CodeSniffer
が導入できたのでプロジェクトで使用できるようになります。
psr-12
にそって検知・整形をしいきます。
# 規約に反している箇所を検知
./vendor/bin/phpcs --standard=PSR12 [対象ファイル]
# 規約に沿って整形
./vendor/bin/phpcbf --standard=PSR12 [対象ファイル]
Usage
オプションなど詳細な使用方法はこちらです。
使いやすいように
上のコマンドを毎回打つのは面倒です。(覚えられませんし…)
そこであらかじめルールを書いた設定ファイルを用意し、それを使用して使えるようにしていきます。
phpcs.xml
ルート直下にphpcs.xmlを作成。
touch phpcs.xml
PSR12
に対応。
<?xml version="1.0"?>
<ruleset name="Custom Standard" namespace="MyProject\CS\Standard">
<description>PSR12</description>
<!-- 対象ファイル -->
<file>./</file>
<!-- 除外したいファイル -->
<exclude-pattern>./vendor/*</exclude-pattern>
<!-- 色を付けてわかりやすく -->
<arg name="colors"/>
<!-- s: エラー時ルール表示, p: 進捗表示 -->
<arg value="sp"/>
<!-- 適用規約 -->
<!-- PSR-12 PSR-1が前提となっているので -->
<rule ref="PSR12"/>
</ruleset>
コマンド
./vendor/bin/phpcs --standard=phpcs.xml
./vendor/bin/phpcbf --standard=phpcs.xml
カスタムコマンドの追加
さらに簡単に使用できるように composer.json
の scripts
に追記していきます。
"scripts": {
"phpcs": "./vendor/bin/phpcs --standard=phpcs.xml",
"phpcbf": "./vendor/bin/phpcbf --standard=phpcs.xml"
}
コマンド
直感的に使用できるようになりますね。
composer phpcs
composer phpcbf
おわりに
以上のような設定をチーム内で決めておくことで
規約に沿って開発をすすめることができます。
また、規約にそって書くという意識もチーム全体で芽生えるのかなと思いました。
このようにすることでコードレビューの際レビュワーも気にせず見れますし
可読性も上がっていると感じています!