0

例として PSR2 ruleset.xml を見ていると、多くのコメント付きブロックが表示されます。<!-- checked in Files/SideEffectsSniff -->

ここに小さなスニペットがあります: https://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/PSR2/ruleset.xml

<!-- PHP code MUST use only UTF-8 without BOM. -->
<rule ref="Generic.Files.ByteOrderMark"/>

<!-- 2.3. Side Effects -->

<!-- A file SHOULD declare new symbols (classes, functions, constants, etc.) and cause no other side effects, or it SHOULD execute logic with side effects, but SHOULD NOT do both. -->
<!-- checked in Files/SideEffectsSniff -->

ファイルの残りの部分には、 のような規則はありませんFiles.SideEffectsSniff

私の質問は、副作用がチェックされているかどうかです。はいの場合、どのルールが原因ですか?

明確にしていただきありがとうございます。

4

1 に答える 1

1

簡単な答え: はい、副作用は PSR1 と PSR2 によってチェックされ、責任のあるスニフはこれです: https://github.com/squizlabs/PHP_CodeSniffer/blob/master/CodeSniffer/Standards/PSR1/Sniffs/Files/SideEffectsSniff.phpそれを独自の標準にインポートするコードはPSR1.Files.SideEffects.


最初に、投稿したルールセット スニペットは実際には PSR1 のものですが、PSR2 は ruleset.xml ファイルの先頭にある PSR1 標準全体をインポートするため、両方の標準を実行するとスニフが実行されることに注意してください。

これらの ruleset.xml ファイルを作成<rule>したとき、タグを使用して、他の標準からスニフをインポートしたことを示し、コメントを使用して、スニフが標準自体の内部に含まれていることを示しました。

PHPCS では、コードを使用してスニフをインポートするかSniffs、ruleset.xml ファイルと同じディレクトリ内のフォルダー内にクラスを含めることができます。PSR1 と PSR2 の両方に独自の sniff クラスがあり、これらは自動的にインポートされるため<rule>、ルールセットでタグを使用する必要はありません。

于 2015-10-30T22:13:48.483 に答える