PHPのプログラミングには必ず使ってほしいツールがあります。コーディング規約どおりにコードを書くためのツールもそう。
PHP_CodeSnifferは便利です。有名なプログラミング用のエディターでは、プラグインやパッケージとして配布されているので汎用的に使えます。
PHP_CodeSnifferって何?
PHP_CodeSnifferは、PHPコードを指定したコーディング規約で書かれているかチェックをするツールです。自動整形のコマンドもある。
AtomやVSCode(Visual Studio Code)など有名なプログラミングエディターには、拡張パッケージが用意されています。
PHP_CodeSnifferの中身はチェック用と自動整形用のコマンドがあるだけで、上記のエディターはそのコマンドを実行しているだけ。
コマンド | |
---|---|
phpcs | 静的コードチェック |
phpcbf | 自動整形 |
どのエディターでプログラミングするかは、個人の好みや会社などの組織の方針もあるので様々ですが、PHP_CodeSnifferのコマンドはどのエディタからも実行できるので、PHP_CodeSnifferは1回インストールしておくだけで使い回せます。
PHP開発ではcomposerと並んで必ずインストールしておくべきもののひとつです。
PHP_CodeSniffer を略して phpcs とも呼ぶ。
チェック用コマンド名と同じ。
特殊なコーディング規約にも対応
PHP_CodeSnifferは、標準的なPHPコーディング規約のPSRだけでなく、ちょっと変わったコーディング規約にも対応しています。
PSR (PHP Standards Recommendations)
PHP標準勧告。PHPコーディングの標準化を目指す活動のこと。PHP-FIGが策定している。
PHP-FIG (PHP Framework Interop Group)
PHPフレームワーク相互運用グループ。PHPプロジェクトが集まって意見を出し合い、お互いの製品の互換性を調整する団体。
有名なプロジェクトが多く参加している。
WordPressはその典型で、インデントが半角スペース4つではなくタブだったり、独自路線を走ってます。
そんな特殊なコーディング規約でも、PHP_CodeSnifferは設定で切り替えることが可能。
ただし、WordPress Coding Standards(WordPressコーディング規約)のダウンロードが別途に必要です。
PHP_CS_Fixerというものもある
『PHP_CodeSnifferを絶対に入れろ』ということではなく、同じようなツールであればそれでもいいです。
PHP_CS_Fixerというものもあります。
主要なプログラミングエディターには拡張パッケージが用意されているので、PHP_CodeSnifferと甲乙つけがたいツール。
(PSRに関しては。)
ただ、WordPressになるとPHP_CodeSnifferに一日の長があるかな?
PHP_CS_Fixer と WordPressコーディング規約の連携の情報は少ないし、ボクも『面倒くさそうだな』と思った瞬間止めたので、やり方を知りません。
PHPフレームワークで有名なLaravelを使ってる人は、こっちのほうが使い慣れてるでしょう。LaravelではPHP_CS_Fixerを使う人が多いと感じます。
(完全に個人の主観。)
PHP_CodeSnifferのインストールはプロジェクトごとにするのがおすすめ
早速、PHP_CodeSnifferのインストールを始めましょう。
composerを使ってダウンロードします。composerがまだないという人はインストールしておいてください。
PHPのソースコードのルート(PHPプロジェクトのルート)ディレクトリで作業します。
まず、ルートディレクトリにcomposer.jsonファイルがあるか確認してください。ない場合は作成します。
composer init
すでにcomposer.jsonがある場合は実行しないでください。既存パッケージのインストール情報が消えてしまいます。
次に、composerでPHP_CodeSnifferをインストールします。
composer require "squizlabs/php_codesniffer=*"
これで終了です。かんたんですね?
phpcsコマンドは vendor/bin にあります。
vendor/squizlabs/php_codesniffer/bin にもある。
composerでコマンドがあるパッケージは vendor/bin にコマンドをインストールして使いやすいようにする。
ちゃんとしたパッケージなら。時々、パッケージのインストール先だけにある場合もある。
あとは、自分の使っているエディターでインストールしたphpcsを使うように設定するだけ。
グローバル環境(ユーザー環境)にインストールしてもいいが...
PHP_CodeSnifferのドキュメント(GitHub)には、このように書かれています。
composer global require "squizlabs/php_codesniffer=*"
global を付けると、PHPプロジェクトではなく、OSのユーザーホームにあるcomposerのディレクトリにインストールします。
(ユーザー下にある複数のPHPプロジェクトで使い回せる。)
一人でやってる分にはphpcsのインストールは1回で済むので便利ですが、チームで開発しているときには不便。
チーム開発では、ソースコードのプロジェクトごとGitリポジトリにアップロードするので、その中にphpcsも入っていたほうが良い。
『phpcsはそれぞれ自分のPCに入れてね?』みたいなことは無いほうが良いから。Gitでクローンした開発環境はそのまま使えるのがベストです。
composer以外でインストールする方法もあるが...
PHP_CodeSnifferは2つのコマンドが入ってるだけなので、composerを使わずともファイルをダウンロードするだけで使えます。
ただ、composerはPHPの拡張パッケージを配信する専用ツールで、PCにパッケージがインストールされて無くても、composer.jsonさえあれば一括インストールができます。
これもさっきと同じで、『phpcsは自分でダウンロードしてね?』になるので、チームメンバーに余計な作業をさせてしまいます。
PHPでは、各種ツールやパッケージはcomposerでできるのならそこに集約すべきです。composer.jsonに入れられるのならそうしましょう。
もちろん、GitHubなどのリポジトリにはcomposer.jsonは必ず入れておきましょう。