1. ホーム
  2. php

PHPCSの警告をコメントで抑制するには?

2023-08-07 19:32:45

質問

私の TestMyClass.php には同じファイル (ユニットテストクラス) にふたつのクラス定義があり、PHP Code Sniffer では 各クラスはそれ自体でファイルに存在する必要があります . どうすればこの警告を抑えられるでしょうか?

class MyClassImpl implements MyInterface
{
    // ...
}

class MyClassTest extends \PHPUnit_Framework_TestCase
{
    // ...
}

どのように解決するのですか?

PHP_CodeSniffer が特定のファイルや行を無視するようにするには、 コメントを使用します。 https://github.com/squizlabs/PHP_CodeSniffer/wiki/Advanced-Usage#ignoring-files-and-folders

この場合、2つ目のクラス定義でエラーが発生するので、2つ目の定義を以下のように記述する必要があります。

// @codingStandardsIgnoreStart
class MyClassTest extends \PHPUnit_Framework_TestCase
{
    // @codingStandardsIgnoreEnd
    // ...
}

しかし、@codingStandardsIgnoreFileコメントを使用するか、コマンドラインで除外を指定することで、チェックする必要がない場合はファイル全体を無視することもできます(詳細は前のリンクを参照してください)。

これを頻繁に行い、コードにコメントを追加したくないことがわかったら、独自のカスタム コーディング標準を作成することもできます。今 PSR2 標準を使用していると仮定して、XML ファイル (例: mystandard.xml) を作成し、次の内容を含めます。

<?xml version="1.0"?>
<ruleset name="MyStandard">
 <description>My custom coding standard.</description>
 <rule ref="PSR2" />
 <rule ref="PSR1.Classes.ClassDeclaration.MultipleClasses">
   <severity>0</severity>
 </rule>
</ruleset>

次に、PHP_CodeSnifferをこのように実行します。 phpcs --standard=/path/to/mystandard.xml /path/to/code

独自のルールセットを持つことで、エラーメッセージの変更、メッセージの重要度や種類の変更、他の標準からのチェックの取り込み、グローバルな無視ルールの設定など、さまざまなことができるようになります。詳細はこちら。 https://github.com/squizlabs/PHP_CodeSniffer/wiki/Annotated-ruleset.xml