79

MyTestMyClass.phpには同じファイル (単体テスト クラス) に 2 つのクラス定義があり、PHP Code Sniffer は、各クラスがファイル自体にある必要があると文句を言います。この警告を抑制するにはどうすればよいですか?

class MyClassImpl implements MyInterface
{
    // ...
}

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

4 に答える 4

108

コメントを使用して、特定のファイルまたはファイル内の行を 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

于 2013-04-17T23:09:13.833 に答える