ツイート
シェア
LINEで送る
B! はてぶでブックマーク
Pocketでブックマーク
RSSフィード

PHP_CodeSnifferはインストールしておこう!コーディング規約を守るには必須のツール。

php
イラストダウンロードサイト【イラストAC】
の画像をもとに加工しています。

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)

https://www.php-fig.org/psr/

PHP標準勧告。PHPコーディングの標準化を目指す活動のこと。PHP-FIGが策定している。

PHP-FIG (PHP Framework Interop Group)

http://www.php-fig.org/

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.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は必ず入れておきましょう。

前の投稿
2021年9月。最新のPHPコーディング規約(PSR)。静的コードチェックはPSR-12。
PHP_CodeSniffer と PHP_CS_Fixer どっちを使うべきか?
次の投稿
コメントを残す

*