コマンドラインでのヘルプの取得
PHP_CodeSniffer にコマンドライン引数 -h あるいは
--help をつけて実行すると、PHP_CodeSniffer
で使用できるコマンドの一覧が表示されます。
phpcs -h の出力内容は、次のようになります。
Usage: phpcs [-nlvi] [--report=<report>] [--standard=<standard>]
[--config-set key value] [--config-show]
[--generator=<generator>] [--extensions=<extensions>]
[--ignore=<patterns>] <file> ...
-n Do not print warnings
-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
<generator> The name of a doc genertor to use
(forces doc generation instead of checking)
<report> Print either the "full", "xml" or "summary" report |
注意
コマンドライン引数 --standard はオプションです。
これは、複数のコーディング規約をインストールしている場合でも同様です。
コーディング規約を指定しなかった場合は、PHP_CodeSniffer はデフォルトで
PEAR コーディング規約
(あるいはあなたがデフォルトとして設定した規約) によるチェックを行います。
デフォルトのコーディング規約を設定する方法はこちらをごらんください。
ファイルおよびフォルダのチェック
PHP_CodeSniffer のもっともシンプルな使用法は、PHP_CodeSniffer
でチェックしたいファイルやフォルダの場所を指定することです。
フォルダを指定した場合は、PHP_CodeSniffer
はそのフォルダおよびサブフォルダ内のすべてのファイルをチェックします。
注意
サブフォルダ内のチェックが不要な場合は、コマンドラインオプション
-l を使用します。これは、PHP_CodeSniffer
が指定したフォルダのみを処理するようにするものです。
以下の例では、最初のコマンドは PHP_CodeSniffer を使用して
myfile.inc ファイルのチェックを行います。
二番目のコマンドは、PHP_CodeSniffer で my_dir
ディレクトリ内のすべての PHP ファイルをチェックします。
複数のファイルやフォルダを指定することもできます。以下のコマンドは、
PHP_CodeSniffer を使用して myfile.inc
ファイルおよび my_dir
ディレクトリの全ファイルをチェックします。
PHP_CodeSniffer がファイルのチェックを終えると、
エラーレポートが表示されます。このレポートには、
コーディング規約に反するすべてのファイルについてのエラーや警告が表示されます。
その内容は、このようになります。
例 54-3PHP_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 を指定します。
例 54-4警告を表示しない 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 を使用します。
出力結果は、このようになります。
例 54-5PHP_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 を指定すると警告を表示しなくなります。
例 54-6警告を表示しない、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)
-------------------------------------------------------------------------------- |
|
XML でのレポートの表示
PHP_CodeSniffer は、結果を XML 形式で出力することもできます。
これを使用すると、自作のスクリプトで結果を利用するのが簡単になります。
XML 形式のレポートを表示するには、コマンドライン引数
--report=xml を指定します。出力は、次のようになります。
例 54-7PHP_CodeSniffer の XML 出力の例 $ phpcs --report=xml /path/to/code
<?xml version="1.0" encoding="UTF-8"?>
<phpcs>
<file name="/path/to/code/myfile.php" errors="5" warnings="1">
<error line="2">Missing file doc comment</error>
<error line="20">PHP keywords must be lowercase; expected "false" but found "FALSE"</error>
<error line="47">Line not indented correctly; expected 4 spaces but found 1</error>
<warning line="47">Equals sign not aligned with surrounding assignments</warning>
<error line="51">Missing function doc comment</error>
<error line="88">Line not indented correctly; expected 9 spaces but found 6</error>
</file>
</phpcs> |
|
完全なレポートだけでなく、警告を非表示にしたレポートも作成することができます。
この場合は、コマンドライン引数 -n を使用します。
例 54-8PHP_CodeSniffer の XML 出力で、警告を出力しない例 $ phpcs --report=xml /path/to/code
<?xml version="1.0" encoding="UTF-8"?>
<phpcs>
<file name="/path/to/code/myfile.php" errors="5" warnings="0">
<error line="2">Missing file doc comment</error>
<error line="20">PHP keywords must be lowercase; expected "false" but found "FALSE"</error>
<error line="47">Line not indented correctly; expected 4 spaces but found 1</error>
<error line="51">Missing function doc comment</error>
<error line="88">Line not indented correctly; expected 9 spaces but found 6</error>
</file>
</phpcs> |
|
詳細な出力の表示
デフォルトでは PHP_CodeSniffer は何も言わずに動作し、
最後にエラーや警告を表示するだけです。大量のファイルをチェックする場合は、
結果が表示されるまでにしばらく待つ必要があるかもしれません。
いま何が起こっているのかを知るために、詳細な出力をさせることができます。
詳細な出力を有効にすると、PHP_CodeSniffer はまずチェックしているファイルを表示し、
そのファイル中のトークンの数と行数を表示します。そして、
その処理にかかった時間がわかるようになります。結果はこのようになります。
例 54-9PHP_CodeSniffer の詳細出力例 $ phpcs /path/to/code/CodeSniffer -v
Registering sniffs... DONE (22 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 コーディング規約 (デフォルトでインストールされます)
でチェックします。
インストールされているコーディング規約一覧の表示
PHP_CodeSniffer は、インストールされているコーディング規約を一覧表示することができます。
これを利用することで、使用するコーディング規約を正しく指定できるようになります。
この一覧を表示するには、コマンドライン引数 -i
を指定します。