FAQ

FAQ -- よくある質問

PHP_CodeSniffer はコードカバレッジテストや単体テストを行うものですか?

いいえ。PHP_CodeSniffer は、PHP アプリケーションが正常に動作するかどうかを調べるツールではありません。 PHP_CodeSniffer が保証するのは、単に PHP のコードが規約に従っているということだけです。

私のコードは完璧です! そんな私にも PHP_CodeSniffer が必要ですか?

たぶん必要じゃないでしょう。でも、コーディング規約に従っていることを 確実に保証したいのなら、一番簡単でお手軽なのは PHP_CodeSniffer を使用することです。 PHP_CodeSniffer は、人手によるコードレビュー作業の代わりとなるだけではありません。 PHP_CodeSniffer を使用すると、コードの正確さを調べるための コードレビューを常に用意しておくことができます。

注意 コーディング規約を使用することを推奨します。 これにより、コードの可読性および保守性があがります。 特に複数でアプリケーションを開発している場合に有用となります。 もしこれまでコーディング規約を使用したことがないのなら、 ぜひ使用を検討してください。

PHP_CodeSniffer は、コードを解析してそれが実行可能であることを保証してくれますか?

いいえ。PHP_CodeSniffer は実際にコードをパースするわけではありません。 したがって、実際のコードにパースエラーが含まれているかどうかは判断できません。 PHP_CodeSniffer が検知できるパースエラーもいくつか存在し、 パースエラーの疑いがあるため正確に sniff できない可能性のあるコードについては警告を発します。 しかし、実際にパースを行うわけではないので、 PHP_CodeSniffer は、パースエラーを含むコードをチェックすると 間違ったエラー数を返すことになるでしょう。

ティップ パースエラーをチェックするのは簡単です。PHP のコマンドラインインターフェイスで -l (小文字の L) オプションを使用しましょう。

$ php -l /path/to/code/myfile.inc
No syntax errors detected in /path/to/code/myfile.inc

このコーディング規約には納得がいきません! 私が使っている規約を PHP_CodeSniffer で使えますか?

もちろんです。PHP_CodeSniffer は、コーディング規約を強制するための単なる枠組みです。 PHP_CodeSniffer にはサンプルのコーディング規約がいくつか含まれていますが、 これは独自の規約を持たないプロジェクトでも簡単に使用できるようにするためのものです。 独自の規約を作成したい場合は、 コーディング規約の作成のためのチュートリアル を参照ください。

PHP_CodeSniffer で指摘されたエラーを修正したのに、また別のエラーが出たんですけれど?

あるエラーのおかげで別のエラーの存在が見つからなかったり、 修正の際に新たなエラーが発生したといった場合がありえます。 たとえば、PHP_CodeSniffer によって、 インライン IF 文には波括弧が必要だという指摘を受けたとしましょう。 これを修正した際の波括弧の位置がおかしければ、 PHP_CodeSniffer はまたエラーを報告します。

すべてのエラーが解消されるまで、常に PHP_CodeSniffer を実行するようにしましょう。 PHP_CodeSniffer が推奨する変更を行った場合は、必ずもう一度 PHP_CodeSniffer を実行し、新たなエラーが発生していないことを確認します。

PHP_CodeSniffer は修正を提案するだけで、なぜ実際にコードを変更してしまわないのですか

PHP_CodeSniffer は、 あなたのコードがコーディング規約に反していないかどうかを確実にチェックできると確信しています。 ただ、チェックしたアプリケーションのコードを レビューなしにいきなり変更してしまうことはできません。 ソースコードをリリースする前に PHP_CodeSniffer が行った変更内容をチェックする手間を考えてみましょう。 自分で変更したほうがずっと安心しませんか?

手動で変更することには、以下のような利点があります。

もし PHP_CodeSniffer がうまい具合にコードを変更してくれることを期待しているのなら、 コーディング規約をしっかり読んでそれをきちんと守るようにしましょう。

注意 変更内容がどんなに些細なものであっても、 それをリポジトリにコミットしたりリリースしたりする前に必ずテストを行うようにしましょう。 PHP_CodeSniffer の提案による変更も同様です。 たとえ無意味に見えたとしても、必ずテストを行いましょう。

PHP_CodeSniffer は、どうやって PHP のコードをパースしているのですか?

PHP_CodeSniffer は、PHP の組み込みのトークナイザ関数 を使用して PHP のコードをパースします。