Как настроить CODESNIFFER PHP, чтобы разрешить отступы моих случаев быть отступлением к тому, как мне нравится?

StackOverflow https://stackoverflow.com//questions/9652868

Вопрос

У меня есть код, который выглядит так:

function processRequest() {

  // get the verb
  $method = strtolower($_SERVER['REQUEST_METHOD']);

  switch ($method) {
    case 'get':
      handleGet();
      break;
    case 'post':
      handlePost();
      // $data = $_POST;
      break;
    case 'delete':
      handleDelete();
      break;
    case 'options':
      header('Allow: GET, POST, DELETE, OPTIONS');
      break;
    default:
      header('HTTP/1.1 405 Method Not Allowed');
      break;
  }
}
.

PHP CodeSniffer жалуется на отступы этих случаев дела.В Emacs с Flymake это выглядит так:

Введите описание изображения здесь

Сообщение:

Ошибка - строка с отступом неверно;Ожидаемые 2 пробела, найдено 4 (Pear.WhiteSpace.scoPeIndent.Incorrect)

Очевидно, кодовые сообщения не хотят, чтобы данные о том, чтобы быть менее отступом, чем они.

Как я могу сказать CodeSniffer, чтобы позволить моими случаям утверждать, как они их нужно.Или лучше, чтобы обеспечить принуждение , что мои операторы дела сдаются таким образом?

Это было полезно?

Решение

нюхает, известная как PEAR.Whitespace.ScopeIndent, определяется в файле кода phpcs\CodeSniffer\Standards\PEAR\Sniffs\Whitespace\ScopeIndentSniff.php и включает в себя следующий код:

class PEAR_Sniffs_WhiteSpace_ScopeIndentSniff extends Generic_Sniffs_WhiteSpace_ScopeIndentSniff
{
    /**
     * Any scope openers that should not cause an indent.
     *
     * @var array(int)
     */
    protected $nonIndentingScopes = array(T_SWITCH);

}//end class
.

Смотрите генеракодицетагкод? Очевидно, что означает, что что-то в пределах объема оператора выключателя не может быть отступлением к вьюнному вьющимися в курсу.

Я не мог найти способ настроить эту настройку в $nonIndentingScopes, но .... что нюхает расширяет более базовый генеракодицетагкод, который не включает в себя GenaCodicetacodcode в массиве PEAR.Whitespace.ScopeIndent.

Итак, что я сделал, чтобы позволить своему делу утверждать, как я хотел, чтобы изменить свой файл vulualet.xml, чтобы исключить грушевую версию этой понюхивания и включать в себя общую версию этой понюхивания. Похоже, это:

<?xml version="1.0"?>
<ruleset name="Custom Standard">
  <!-- http://pear.php.net/manual/en/package.php.php-codesniffer.annotated-ruleset.php -->
  <description>My custom coding standard</description>

  <rule ref="PEAR">
         ......
    <exclude name="PEAR.WhiteSpace.ScopeIndent"/>
  </rule>

   ....

  <!-- not PEAR -->
  <rule ref="Generic.WhiteSpace.ScopeIndent">
    <properties>
      <property name="indent" value="2"/>
    </properties>
  </rule>

</ruleset>
.

Этот файл должен присутствовать в подразделе по стандартам каталог для PHP CodeSniffer. Для меня местоположение файла является Generic.Whitespace.ScopeIndent

Тогда я запускаю такие phpcs, как это:

T_SWITCH

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top