web-dev-qa-db-ja.com

PHP_CodeSnifferのコードスニペットを無視する

PHP_CodeSniffer?によって分析される場合、phpファイルのコードの一部を無視することができます。

51
Madalina

はい、@ codingStandardsIgnoreStartおよび@codingStandardsIgnoreEndアノテーションで可能です

<?php
some_code();
// @codingStandardsIgnoreStart
this_will_be_ignored();
// @codingStandardsIgnoreEnd
some_other_code();

ドキュメントにも記載されています

76
Anti Veeranna

次の組み合わせを使用できます:@codingStandardsIgnoreStartおよび@codingStandardsIgnoreEndまたは @codingStandardsIgnoreLine

例:

<?php

command1();
// @codingStandardsIgnoreStart
command2(); // this line will be ignored by Codesniffer
command3(); // this one too
command4(); // this one too
// @codingStandardsIgnoreEnd

command6();

// @codingStandardsIgnoreLine
command7(); // this line will be ignored by Codesniffer
32
Martin Vseticka

バージョン3.2.0より前のバージョンでは、PHP_CodeSnifferはファイルからコードの一部を無視するために異なる構文を使用していました。 Anti Veeranna's および Martin Vseticka's の回答を参照してください。古い構文はバージョン4.0で削除されます

PHP_CodeSnifferは// phpcs:disableおよび// phpcs:enableコメントを使用してファイルの一部を無視し、// phpcs:ignoreは1行を無視するようになりました。

現在、特定のエラーメッセージコード、スニフ、スニフのカテゴリ、またはコーディング標準全体のみを無効または有効にすることもできます。コメントの後に指定する必要があります。必要に応じて、--セパレータを使用して、スニフが無効になり、再度有効になる理由を説明するメモを追加できます。

<?php

/* Example: Ignoring parts of file for all sniffs */
$xmlPackage = new XMLPackage;
// phpcs:disable
$xmlPackage['error_code'] = get_default_error_code_value();
$xmlPackage->send();
// phpcs:enable

/* Example: Ignoring parts of file for only specific sniffs */
// phpcs:disable Generic.Commenting.Todo.Found
$xmlPackage = new XMLPackage;
$xmlPackage['error_code'] = get_default_error_code_value();
// TODO: Add an error message here.
$xmlPackage->send();
// phpcs:enable

/* Example: Ignoring next line */
// phpcs:ignore
$foo = [1,2,3];
bar($foo, false);

/* Example: Ignoring current line */
$foo = [1,2,3]; // phpcs:ignore
bar($foo, false);

/* Example: Ignoring one line for only specific sniffs */
// phpcs:ignore Squiz.Arrays.ArrayDeclaration.SingleLineNotAllowed
$foo = [1,2,3];
bar($foo, false);

/* Example: Optional note */ 
// phpcs:disable PEAR,Squiz.Arrays -- this isn't our code
$foo = [1,2,3];
bar($foo,true);
// phpcs:enable PEAR.Functions.FunctionCallSignature -- check function calls again
bar($foo,false);
// phpcs:enable -- this is out code again, so turn everything back on

詳細は PHP_CodeSnifferのドキュメント を参照してください。

5
Filip Š