Как настроить CODESNIFFER PHP, чтобы разрешить отступы моих случаев быть отступлением к тому, как мне нравится?
-
11-12-2019 - |
Вопрос
У меня есть код, который выглядит так:
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