Игнорировать конкретные предупреждения с помощью PHP_CodeSniffer - PullRequest
8 голосов
/ 13 августа 2011

Я работаю над модулем инструментов паролей, и часть его использует base64 Encoding / Decoding. В результате у меня есть ряд переменных, которые по понятным причинам включают термин «base64». Проблема в том, что когда я запускаю инструмент PHP_CodeSniffer, он выдает предупреждения: "Переменная" ... 64 "содержит числа, но это не рекомендуется" .

Есть ли способ сказать PHP_CodeSniffer игнорировать эти предупреждения для этого конкретного файла? Я уверен, что есть веская причина избегать цифр, но в этом случае я бы предпочел использовать 'base64' , чем 'baseSixtyFour' ...

Вот как я запускаю PHP_CodeSniffer:

valorin@gandalf:~/workspace/library$ phpcs --standard=ZEND ./Tools/

FILE: /home/valorin/workspace/library/Tools/Password.php
--------------------------------------------------------------------------------
FOUND 0 ERROR(S) AND 6 WARNING(S) AFFECTING 5 LINE(S)
--------------------------------------------------------------------------------
  38 | WARNING | Variable "_bEncryptionBase64" contains numbers but this is
     |         | discouraged
  94 | WARNING | Variable "_bEncryptionBase64" contains numbers but this is
     |         | discouraged
  94 | WARNING | Variable "base64" contains numbers but this is discouraged
  95 | WARNING | Variable "base64" contains numbers but this is discouraged
 210 | WARNING | Variable "bEncryptionBase64" contains numbers but this is
     |         | discouraged
 251 | WARNING | Variable "bEncryptionBase64" contains numbers but this is
     |         | discouraged
--------------------------------------------------------------------------------

Time: 1 second, Memory: 7.50Mb

Ответы [ 2 ]

4 голосов
/ 29 сентября 2011

В CodeSniffer версии 1.3 вы можете исключить определенные сниффы из определенных файлов на уровне файла ruleset.xml.

4 голосов
/ 13 августа 2011

До версии 3.2.0 PHP_CodeSniffer использовал другой синтаксис для игнорирования частей кода из файла, который будет удален в версии 4.0

Старый синтаксис:

// @codingStandardsIgnoreStart

/* put your bad code here! */    

// @codingStandardsIgnoreEnd

Для этого требуется версия 1.2 или более поздняя.

Новый синтаксис:

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 .

...