PHP CodeSnifferを使ってみた2
PHP CodeSnifferを使ってみた1 - Perl日記の続き。
PHP_CodeSnifferをインストールするとデフォルトで幾つかの規約セットがすぐに使える。
$ ./vendor/bin/phpcs -i The installed coding standards are MySource, PEAR, PHPCS, PSR1, PSR2, Squiz and Zend
この規約セットでチェックするのは、前回の--standardを↑の名前を指定すればよい。
$ ./vendor/bin/phpcs --standard=PEAR test.php
少しずつチェックする
ただ、今回僕がやりたかったのは、既存のもう荒れ放題のコード・ファイルに対して行いたかったので、
できれば少しずつ適用させていきたかった。
(どの規約セットだろうと全部一気に適用すれば大量の警告が出てそれだけでテンション下がって、誰も修正してくれなくなる未来が容易に想像できる)
なので、1つの規約を入れる→警告出る→直す、というサイクルで改善を図ることにした。
それぞれの規約の内容は以下を参考にさせてもらって、
PHPコーディング規約まとめ - Qiita
使いたい規約をいいとこ取りしてみる。
- https://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/Generic/ruleset.xml
- https://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/PEAR/ruleset.xml
- https://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/PSR1/ruleset.xml
- https://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/PSR2/ruleset.xml
- https://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/Squiz/ruleset.xml
- https://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/Zend/ruleset.xml
<?xml version="1.0"?> <ruleset name="PHPCodeSniffer"> <description>A custom coding standard.</description> <!-- 改行コードチェック --> <rule ref="Generic.Files.LineEndings" /> <!-- BOMチェック --> <rule ref="Generic.Files.ByteOrderMark" /> <!-- TABインデントチェック --> <rule ref="Generic.WhiteSpace.DisallowTabIndent" /> <!-- 行末スペースチェック --> <rule ref="Squiz.WhiteSpace.SuperfluousWhitespace" /> </ruleset>
とにかく対象のソースコードが多かったので、一つずつやって修正内容も一つずつしていった。
一気にやると「あれ? 何を直してたんだっけ」となりがちなので、とにかく単純化して、修正を適用するときの差分も分かりやすいように心かげた。