PHP_CodeSniffer にコマンドライン引数 -h
あるいは
--help
をつけて実行すると、PHP_CodeSniffer
で使用できるコマンドの一覧が表示されます。
phpcs -h の出力内容は、次のようになります。
Usage: phpcs [-nwlvi] [--report=<report>] [--standard=<standard>]
[--config-set key value] [--config-delete key] [--config-show]
[--generator=<generator>] [--extensions=<extensions>]
[--ignore=<patterns>] [--tab-width=<width>] <file> ...
-n Do not print warnings
-w Print both warnings and errors (on by default)
-l Local directory only, no recursion
-v[v][v] Print verbose output
-i Show a list of installed coding standards
--help Print this help message
--version Print version information
<file> One or more files and/or directories to check
<extensions> A comma separated list of file extensions to check
(only valid if checking a directory)
<patterns> A comma separated list of patterns that are used
to ignore directories and files
<standard> The name of the coding standard to use
<width> The number of spaces each tab represents
<generator> The name of a doc generator to use
(forces doc generation instead of checking)
<report> Print either the "full", "xml", "checkstyle",
"csv" or "summary" report
(the "full" report is printed by default)
コマンドライン引数 --standard
はオプションです。
これは、複数のコーディング規約をインストールしている場合でも同様です。
コーディング規約を指定しなかった場合は、PHP_CodeSniffer はデフォルトで
PEAR コーディング規約
(あるいはあなたがデフォルトとして設定した規約) によるチェックを行います。
デフォルトのコーディング規約を設定する方法はこちらをごらんください。
PHP_CodeSniffer のもっともシンプルな使用法は、PHP_CodeSniffer でチェックしたいファイルやフォルダの場所を指定することです。 フォルダを指定した場合は、PHP_CodeSniffer はそのフォルダおよびサブフォルダ内のすべてのファイルをチェックします。
サブフォルダ内のチェックが不要な場合は、コマンドラインオプション
-l
を使用します。これは、PHP_CodeSniffer
が指定したフォルダのみを処理するようにするものです。
以下の例では、最初のコマンドは PHP_CodeSniffer を使用して
myfile.inc
ファイルのチェックを行います。
二番目のコマンドは、PHP_CodeSniffer で my_dir
ディレクトリ内のすべての PHP ファイルをチェックします。
単一のファイルやフォルダのチェック
$ phpcs /path/to/code/myfile.inc
$ phpcs /path/to/code/my_dir
複数のファイルやフォルダを指定することもできます。以下のコマンドは、
PHP_CodeSniffer を使用して myfile.inc
ファイルおよび my_dir
ディレクトリの全ファイルをチェックします。
複数のファイルやフォルダのチェック
$ phpcs /path/to/code/myfile.inc /path/to/code/my_dir
PHP_CodeSniffer がファイルのチェックを終えると、 エラーレポートが表示されます。このレポートには、 コーディング規約に反するすべてのファイルについてのエラーや警告が表示されます。 その内容は、このようになります。
PHP_CodeSniffer の出力例
$ phpcs /path/to/code/myfile.php
FILE: /path/to/code/myfile.php
--------------------------------------------------------------------------------
FOUND 5 ERROR(S) AND 1 WARNING(S) AFFECTING 5 LINE(S)
--------------------------------------------------------------------------------
2 | ERROR | Missing file doc comment
20 | ERROR | PHP keywords must be lowercase; expected "false" but found
| | "FALSE"
47 | ERROR | Line not indented correctly; expected 4 spaces but found 1
47 | WARNING | Equals sign not aligned with surrounding assignments
51 | ERROR | Missing function doc comment
88 | ERROR | Line not indented correctly; expected 9 spaces but found 6
--------------------------------------------------------------------------------
警告を出力に含めたくない場合は、コマンドライン引数 -n
を指定します。
警告を表示しない PHP_CodeSniffer の出力例
$ phpcs -n /path/to/code/myfile.php
FILE: /path/to/code/myfile.php
--------------------------------------------------------------------------------
FOUND 5 ERROR(S) AFFECTING 5 LINE(S)
--------------------------------------------------------------------------------
2 | ERROR | Missing file doc comment
20 | ERROR | PHP keywords must be lowercase; expected "false" but found "FALSE"
47 | ERROR | Line not indented correctly; expected 4 spaces but found 1
51 | ERROR | Missing function doc comment
88 | ERROR | Line not indented correctly; expected 9 spaces but found 6
--------------------------------------------------------------------------------
デフォルトでは、PHP_CodeSniffer は見つかったエラーや警告の完全な一覧を表示します。
これは、特に多くのファイルを一度にチェックした場合には相当な長さになりえます。
各ファイルごとのエラーや警告の数だけの概要レポートを表示させるには、
コマンドライン引数 --report=summary
を使用します。
出力結果は、このようになります。
PHP_CodeSniffer の概要出力例
$ phpcs --report=summary /path/to/code
PHP CODE SNIFFER REPORT SUMMARY
--------------------------------------------------------------------------------
FILE ERRORS WARNINGS
--------------------------------------------------------------------------------
/path/to/code/myfile.inc 5 0
/path/to/code/yourfile.inc 1 1
/path/to/code/ourfile.inc 0 2
--------------------------------------------------------------------------------
A TOTAL OF 6 ERROR(S) AND 3 WARNING(S) WERE FOUND IN 3 FILE(S)
--------------------------------------------------------------------------------
完全な出力と同様、コマンドライン引数
-n
を指定すると警告を表示しなくなります。
警告を表示しない、PHP_CodeSniffer の概要出力例
$ phpcs -n --report=summary /path/to/code
PHP CODE SNIFFER REPORT SUMMARY
--------------------------------------------------------------------------------
FILE ERRORS
--------------------------------------------------------------------------------
/path/to/code/myfile.inc 5
/path/to/code/yourfile.inc 1
--------------------------------------------------------------------------------
A TOTAL OF 6 ERROR(S) WERE FOUND IN 2 FILE(S)
--------------------------------------------------------------------------------
デフォルトでは PHP_CodeSniffer は何も言わずに動作し、 最後にエラーや警告を表示するだけです。大量のファイルをチェックする場合は、 結果が表示されるまでにしばらく待つ必要があるかもしれません。 いま何が起こっているのかを知るために、詳細な出力をさせることができます。
詳細な出力を有効にすると、PHP_CodeSniffer はまずチェックしているファイルを表示し、 そのファイル中のトークンの数と行数を表示します。そして、 その処理にかかった時間がわかるようになります。結果はこのようになります。
PHP_CodeSniffer の詳細出力例
$ phpcs /path/to/code/CodeSniffer -v
Registering sniffs in PEAR standard... DONE (24 sniffs registered)
Processing AbstractDocElement.php [1093 tokens in 303 lines]... DONE in < 1 second (0 errors, 1 warnings)
Processing AbstractParser.php [2360 tokens in 558 lines]... DONE in 2 seconds (0 errors, 1 warnings)
Processing ClassCommentParser.php [923 tokens in 296 lines]... DONE in < 1 second (2 errors, 0 warnings)
Processing CommentElement.php [988 tokens in 218 lines]... DONE in < 1 second (1 error, 5 warnings)
Processing FunctionCommentParser.php [525 tokens in 184 lines]... DONE in 1 second (0 errors, 6 warnings)
Processing File.php [10968 tokens in 1805 lines]... DONE in 5 seconds (0 errors, 5 warnings)
Processing Sniff.php [133 tokens in 94 lines]... DONE in < 1 second (0 errors, 0 warnings)
Processing SniffException.php [47 tokens in 36 lines]... DONE in < 1 second (1 errors, 3 warnings)
PHP_CodeSniffer は、複数のプロジェクトで使用するために、
複数のコーディング規約をインストールすることができます。
PHP コードをチェックする際に、どのコーディング規約を使用するかを
PHP_CodeSniffer に指定することができます。これを行うのが、コマンドライン引数
--standard
です。
以下の例は、myfile.inc
ファイルの内容を
PEAR コーディング規約 (デフォルトでインストールされます)
でチェックします。
使用するコーディング規約の指定
$ phpcs --standard=PEAR /path/to/code/myfile.inc
PHP_CodeSniffer は、インストールされているコーディング規約を一覧表示することができます。
これを利用することで、使用するコーディング規約を正しく指定できるようになります。
この一覧を表示するには、コマンドライン引数 -i
を指定します。
インストールされているコーディング規約一覧の生成
$ phpcs -i
The installed coding standards are Zend, PEAR, PHPCS, Squiz and MySource