PHP_CodeSniffer の Slevomat コーディング標準は、次の 3 つのカテゴリに分類されるスニフを提供します。
= 自動エラー修正
= スニフチェックをローカルで抑制できる
Slevomatcoding Standard をインストールする推奨方法は、Composer を使用することです。
{
"require-dev" : {
"slevomat/coding-standard" : " ~8.0 "
}
}
ソースコードの構文エラーをチェックする php-Parallel-lint/php-Parallel-lint をインストールすることもお勧めします。スニフは、処理されたコードが構文的に有効である (解析エラーがない) ことを前提としていますが、そうでない場合、予期しない動作をする可能性があります。 PHP_CodeSniffer
実行する前にビルド ツールでPHP-Parallel-Lint
を実行し、 PHP-Parallel-Lint
が失敗した場合はビルド プロセスを早期に終了することをお勧めします。
コードベースの標準から選択したスニフのみを実行するには、2 つの方法のいずれかを選択できます。
推奨される方法は、選択したスニフのみを参照して独自の ruleset.xml を作成することです。これはサンプルの ruleset.xml です。
<? xml version = " 1.0 " ?>
< ruleset name = " AcmeProject " >
< config name = " installed_paths " value = " ../../slevomat/coding-standard " /> <!-- relative path from PHPCS source location -->
< rule ref = " SlevomatCodingStandard.Arrays.TrailingArrayComma " />
<!-- other sniffs to include -->
</ ruleset >
次に、通常の方法でphpcs
実行可能ファイルを実行します。
vendor/bin/phpcs --standard=ruleset.xml --extensions=php --tab-width=4 -sp src tests
プロジェクトのruleset.xml
で Slevomat コーディング標準に言及し、一部のスニフのみを除外することもできます。
<? xml version = " 1.0 " ?>
< ruleset name = " AcmeProject " >
< rule ref = " vendor/slevomat/coding-standard/SlevomatCodingStandard/ruleset.xml " > <!-- relative path to your ruleset.xml -->
<!-- sniffs to exclude -->
</ rule >
</ ruleset >
ただし、Slevomat コーディング スタンダードの使用は推奨されません。標準のマイナー バージョン間を移動するとビルドが中断される可能性があるためです (これは、 composer.json
で^
または~
バージョン制約を使用した場合に発生する可能性があります)。マイナー バージョンであっても、定期的に新しいスニッフを追加します。つまり、コードがパッケージの新しいマイナー バージョンに準拠していない可能性が高くなります。
シンボルでマークされたこの標準のスニフは、コーディング標準違反の自動修正をサポートします。コードを自動的に修正するには、phpcs の代わりに phpcbf を実行します。
vendor/bin/phpcbf --standard=ruleset.xml --extensions=php --tab-width=4 -sp src tests
自動修正によって望ましくない結果が生じる場合があるため、自動修正を実行する前に必ずコードをバックアップし、結果を自分の目で確認してください。
この標準でシンボルによってマークされた選択されたスニッフは、注釈を使用してコードの特定の部分に対して抑制できます。次の例を考えてみましょう。
/**
* @param int $max
*/
public function createProgressBar ( $ max = 0 ): ProgressBar
{
}
パラメータ$max
ネイティブのint
スカラー タイプヒントを含めることができます。ただし、親クラスのメソッドにはこのタイプヒントがないため、このメソッドにもそれを含めることはできません。 PHP_CodeSniffer は次のエラーを表示します。
----------------------------------------------------------------------
FOUND 1 ERROR AFFECTING 1 LINE
----------------------------------------------------------------------
67 | ERROR | [x] Method ErrorsConsoleStyle::createProgressBar()
| | does not have native type hint for its parameter $max
| | but it should be possible to add it based on @param
| | annotation "int".
| | (SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint)
このエラーを修正するのではなく抑制したい場合は、エラー コード ( SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
) を取得し、次のように@phpcsSuppress
アノテーションとともに使用できます。
/**
* @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint
* @param int $max
*/
public function createProgressBar ( $ max = 0 ): ProgressBar
{
}
このリポジトリをマシン上で動作させるには、リポジトリのクローンを作成し、リポジトリのルート ディレクトリで次の 2 つのコマンドを実行します。
composer install
bin/phing
コードを作成し、単体テストを編集または追加した後、phing を再度実行して、すべてが正常であることを確認します。
bin/phing
私たちはバグレポート、機能リクエスト、プルリクエストを常に楽しみにしています。ありがとう。
このプロジェクトは、貢献者の行動規範に準拠しています。このプロジェクトとそのコミュニティに参加することにより、この規範を遵守することが期待されます。