PHP CS Fixerは「PHP Coding Standards Fixer」の略で、PHPのコード規約であるPSRに準拠したコードに自動整形してくれる便利なツールだ。
インストール方法
Macであれば、composerもしくは、homebrewでインストールすると良い。今回はcomposerにインストールするという前提で話を進めていく。
1 2 3 4 5 6 7 8 9 10 |
$ composer global require friendsofphp/php-cs-fixer (省略) Your requirements could not be resolved to an installable set of packages. Problem 1 - Installation request for friendsofphp/php-cs-fixer ^2.16 -> satisfiable by friendsofphp/php-cs-fixer[v2.16.0]. - Conclusion: remove symfony/console v4.1.2 - Conclusion: don't install symfony/console v4.1.2 - friendsofphp/php-cs-fixer v2.16.0 requires symfony/console ^ (以下省略) |
早速エラーが出た。すでにグローバルにインストールされているパッケージとの依存関係が解決できないようだ。
1 2 |
$ composer global update $ composer global require friendsofphp/php-cs-fixer |
packageをcomposer update
でアップデートした後、再度コマンドを実行してみるとうまくいった。
PHP-CS-Fixerの使い方
PHPのプロジェクトに移動し実行する。
1 2 |
$ cd /[任意のproject] $ php-cs-fixer fix [ファイル名またはディレクトリのパス] [オプション] |
上記のコマンドにオプションを追加することもできる。
※ Windowsの場合は、$ php-cs-fixer.bat fix /[対象ファイルパス]
で実行可能。
一度実行すると、.php_cs.cache
というファイルが生成されるが、こちらのファイルはおそらくgit管理の対象から除外したほうが良い。
ちなみに、デフォルトではPSR1とPSR2のルールが適用される。
主なオプション紹介
- –dry-run(変更なしで仮実行する)
- –diff(変更がある箇所を出力する)
- –rules=[ルール名](適用するルールを指定できる。
--rules=-full_opening_tag,-indentation_type
) - –allow-risky=[
yes
orno
](振る舞いに影響のあるルールを適用するかどうかを確認します。デフォルトはnoです。 - –stop-on-violation(修正対象のファイルが1つでもあれば、1ファイルだけ実行する)
ルールの一覧はhttps://github.com/FriendsOfPHP/PHP-CS-FixerのREADMEを見てほしい。(かなり多くのルールが存在する)
設定ファイルについて
コマンドラインのオプションで設定する代わりに、設定ファイル(.php_cs.dist)にルールを記述することもできる。.php_cs.distはプロジェクトルートに配置することで、プロジェクト毎に設定可能となる。設定方法についてもREADMEを参照してほしい。
1 |
$ php-cs-fixer fix --config=.php_cs.dist |
といったように–configオプションにファイルを指定して実行する
.php_csを設定ファイルとすることも可能で、こちらは個人用の設定ファイルという位置づけ。–configオプションとともに、.php_csのパスを設定することで、プロジェクトとは別の設定ファイルを実行できる。.php_csはgitの管理対象からは外すのが良い。