Игнорировать фрагменты кода в PHP_CodeSniffer

Можно игнорировать некоторые части кода из файла php при его анализе с помощью PHP_CodeSniffer?


person Madalina    schedule 29.11.2010    source источник


Ответы (3)


Да, это возможно с аннотациями @codingStandardsIgnoreStart и @codingStandardsIgnoreEnd.

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

Это также описано в документации.

person Anti Veeranna    schedule 29.11.2010
comment
можно ли игнорировать определенное правило? - person TroodoN-Mike; 26.07.2012
comment
@TroodoN-Mike: Нет, не сейчас. Прямо сейчас можно либо игнорировать весь файл, либо блоки, разделенные комментариями Start и End выше. - person bishop; 15.05.2014
comment
@TroodoN-Mike: в CodeSniffer версии 1.3 вы можете исключить определенные анализы из определенных файлов (squizlabs.com/php-codesniffer/rule-based-exclude-patterns) на уровне файла ruleset.xml. Но это не будет работать с определенными разделами данного файла. - person Peter; 08.10.2014
comment
есть ли фрагмент кода для игнорирования сложности? :) - person Attila Naghi; 19.03.2018
comment
См. stackoverflow.com/a/52881595/6523409 более новый синтаксис, который позволяет игнорировать определенные правила. - person Filip Š; 18.10.2018

Вы можете использовать комбинацию: @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
person Martin Vseticka    schedule 10.06.2015
comment
См. stackoverflow.com/a/52881595/6523409 более новый синтаксис, который позволяет игнорировать определенные правила. - person Filip Š; 18.10.2018

До версии 3.2.0 PHP_CodeSniffer использовал другой синтаксис для игнорирования частей кода из файла. См. анти-Вееранна и Мартин Ответы Всетички. Старый синтаксис будет удален в версии 4.0

PHP_CodeSniffer теперь использует комментарии // phpcs:disable и // phpcs:enable для игнорирования частей файлов и // phpcs:ignore для игнорирования одной строки.

Теперь также можно отключать или включать только определенные коды сообщений об ошибках, сниффы, категории сниффов или целые стандарты кодирования. Вы должны указать их после комментариев. При необходимости вы можете добавить примечание, объясняющее, почему сниффы отключаются и снова включаются, используя разделитель --.

<?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.

person Filip Š    schedule 18.10.2018