phpではPSR-12というコーディング規約があります。作成したphpプログラムがPSR-12の規約に合致しているかをチェックしたい場合、phpcs
コマンドを使うと便利です。
この記事では、composerでグローバルインストールすることで、コマンドラインからphpcsコマンドをインストールして、PHPのコードがpsr-2のコーディング規約に準拠しているかチェックする方法を説明します。
作業手順
composerコマンドに対してglobal
オプションを指定してphpcs
をグローバルインストールします。
composer global require squizlabs/php_codesniffer
composerでグローバルインストールしたコマンドは、デフォルトでは~/.composer/vendor/binの下に用意されます。
phpcsコマンドをかんたんに実行できるようパスを通しておきます。
echo 'export PATH=$HOME/.composer/vendor/bin:$PATH' >> ~/.bash_profile
source ~/.bash_profile
オプション--version
を指定してphpcs
を実行し、コマンドが使えるか確認と、バージョンの確認をします。
phpcs --version
下記のコマンドで、PSR-12のコーディング規約に沿っているか、チェックすることができます。
phpcs foo.php --standard=PSR12
オプション-i
を利用すると、--standard
で指定できる規約の一覧を確認できます。
phpcs -i
The installed coding standards are PEAR, Zend, PSR2, MySource, Squiz, PSR1 and PSR12
phpcsのオプション一覧
コマンドphpcs --help
でコマンドのヘルプを確認できます
phpcs --help
Usage: phpcs [-nwlsaepqvi] [-d key[=value]] [--colors] [--no-colors]
[--cache[=<cacheFile>]] [--no-cache] [--tab-width=<tabWidth>]
[--report=<report>] [--report-file=<reportFile>] [--report-<report>=<reportFile>]
[--report-width=<reportWidth>] [--basepath=<basepath>] [--bootstrap=<bootstrap>]
[--severity=<severity>] [--error-severity=<severity>] [--warning-severity=<severity>]
[--runtime-set key value] [--config-set key value] [--config-delete key] [--config-show]
[--standard=<standard>] [--sniffs=<sniffs>] [--exclude=<sniffs>]
[--encoding=<encoding>] [--parallel=<processes>] [--generator=<generator>]
[--extensions=<extensions>] [--ignore=<patterns>] [--ignore-annotations]
[--stdin-path=<stdinPath>] [--file-list=<fileList>] [--filter=<filter>] <file> - ...
- ローカルファイルやディレクトリではなく、標準入力から指定された文字列をチェックする
-n 警告を表示しない (--warning-severity=0のショートカットです)
-w 警告とエラーの両方を表示する(これがデフォルト)
-l サブディレクトリを再帰せず、ローカルディレクトリのみチェックする
-s すべてのレポートにsniff codeを表示する
-a 対話的に実行する
-e どの規約が適用されたかsniffを表示する
-p 実行中の進捗を表示する
-q Quiet mode:進捗状況や冗長な出力を無効にする
-m エラーメッセージを記録しないようにする
(多くのメモリを節約できますが、多くのレポートが使用されない)
-v 処理済みファイルの表示する
-vvv ルールセットとトークンの出力を表示する
-vvv sniffの処理情報を表示する
-i インストールされているコーディング規約の一覧を表示する
-d php.iniの[key]を[value]に設定する 値が省略された場合は[true]とする
--help このヘルプメッセージを表示する
--version バージョン情報を表示する
--colors 出力に色をつける
--no-colors 出力に色を使わない(デフォルト)
--cache 実行間の結果をキャッシュする
--no-cache 実行間の結果をキャッシュしない(デフォルト)
--ignore-annotations コードコメント中の phpcs: 注釈をすべて無視する
<cacheFile> キャッシュに特定のファイルを使用 (デフォルトでは一時ファイルを使用)
<basepath> レポート内のファイルパスの先頭から削除するパス
<bootstrap> 処理を開始する前に実行するファイルのカンマ区切りリスト
<エンコーディング> チェックするファイルのエンコーディング(デフォルトはutf-8)
<extensions> チェックするファイル拡張子のカンマ区切りリスト
ファイルの種類は、ext/typeで指定できる
例:module/php,es/js
<file> チェックする1つ以上のファイルおよび/またはディレクトリ
<fileList> チェックするファイルやディレクトリのリストを含むファイル (1行に1つ)
<filter> "gitmodified "または "gitstaged "フィルタのいずれかを使用する
または、カスタムフィルタクラスのパスを指定する
<ジェネレータ> "HTML"、"Markdown"、"Text "ジェネレータのいずれかを使用します
(チェックではなく、ドキュメント生成を強制する)
<patterns> ファイルやディレクトリを無視するためのパターンをカンマで区切ったリスト
<processes> 同時にチェックするファイルの数 (デフォルトは1)
<report> "full"、"xml"、"checkstyle"、"csv "のいずれかを出力します
"json"、"junit"、"emacs"、"source"、"summary"、"diff"
「svnblame", "gitblame", "hgblame" または "notifysend" レポート。
または、カスタムレポートクラスへのパスを指定する
(デフォルトでは "full"レポートが出力される)
<reportFile> 指定されたファイルパスにレポートを書き込む
<reportWidth> 何列のワイドスクリーンのレポートを印刷するか
サポートされている場合は、現在の画面幅を使用するために "auto" に設定する
<severity> エラーまたは警告を表示するために必要な最小の重要度
<sniffs> チェックに含める、または除外するスニッフコードをカンマで区切ったリスト
(すべてのsniffは指定された規格の一部である必要がある)
<standard> 使用するコーディングスタンダードの名前またはパス
<stdinPath> STDINを処理する場合、STDINが処理されるファイルパス
<tabWidth> タブのスペース幅
phpcs --help
Usage: phpcs [-nwlsaepqvi] [-d key[=value]] [--colors] [--no-colors]
[--cache[=<cacheFile>]] [--no-cache] [--tab-width=<tabWidth>]
[--report=<report>] [--report-file=<reportFile>] [--report-<report>=<reportFile>]
[--report-width=<reportWidth>] [--basepath=<basepath>] [--bootstrap=<bootstrap>]
[--severity=<severity>] [--error-severity=<severity>] [--warning-severity=<severity>]
[--runtime-set key value] [--config-set key value] [--config-delete key] [--config-show]
[--standard=<standard>] [--sniffs=<sniffs>] [--exclude=<sniffs>]
[--encoding=<encoding>] [--parallel=<processes>] [--generator=<generator>]
[--extensions=<extensions>] [--ignore=<patterns>] [--ignore-annotations]
[--stdin-path=<stdinPath>] [--file-list=<fileList>] [--filter=<filter>] <file> - ...
- Check STDIN instead of local files and directories
-n Do not print warnings (shortcut for --warning-severity=0)
-w Print both warnings and errors (this is the default)
-l Local directory only, no recursion
-s Show sniff codes in all reports
-a Run interactively
-e Explain a standard by showing the sniffs it includes
-p Show progress of the run
-q Quiet mode; disables progress and verbose output
-m Stop error messages from being recorded
(saves a lot of memory, but stops many reports from being used)
-v Print processed files
-vv Print ruleset and token output
-vvv Print sniff processing information
-i Show a list of installed coding standards
-d Set the [key] php.ini value to [value] or [true] if value is omitted
--help Print this help message
--version Print version information
--colors Use colors in output
--no-colors Do not use colors in output (this is the default)
--cache Cache results between runs
--no-cache Do not cache results between runs (this is the default)
--ignore-annotations Ignore all phpcs: annotations in code comments
<cacheFile> Use a specific file for caching (uses a temporary file by default)
<basepath> A path to strip from the front of file paths inside reports
<bootstrap> A comma separated list of files to run before processing begins
<encoding> The encoding of the files being checked (default is utf-8)
<extensions> A comma separated list of file extensions to check
The type of the file can be specified using: ext/type
e.g., module/php,es/js
<file> One or more files and/or directories to check
<fileList> A file containing a list of files and/or directories to check (one per line)
<filter> Use either the "gitmodified" or "gitstaged" filter,
or specify the path to a custom filter class
<generator> Use either the "HTML", "Markdown" or "Text" generator
(forces documentation generation instead of checking)
<patterns> A comma separated list of patterns to ignore files and directories
<processes> How many files should be checked simultaneously (default is 1)
<report> Print either the "full", "xml", "checkstyle", "csv"
"json", "junit", "emacs", "source", "summary", "diff"
"svnblame", "gitblame", "hgblame" or "notifysend" report,
or specify the path to a custom report class
(the "full" report is printed by default)
<reportFile> Write the report to the specified file path
<reportWidth> How many columns wide screen reports should be printed
or set to "auto" to use current screen width, where supported
<severity> The minimum severity required to display an error or warning
<sniffs> A comma separated list of sniff codes to include or exclude from checking
(all sniffs must be part of the specified standard)
<standard> The name or path of the coding standard to use
<stdinPath> If processing STDIN, the file path that STDIN will be processed as
<tabWidth> The number of spaces each tab represents
もっと詳しく知りたい
こちらもおススメ