2014-01-16 1 views
0

Я использую PHP_CodeSniffer в течение нескольких дней, но я все еще не могу проверить некоторые коды. Когда я использую тройной оператор, даже очень просто, как это:Как сделать PHP CodeSniffer стандартным PHPCS проверять тернарный оператор?

$name = (strlen($name) > 0) ? $name : 'nameless'; 

Кодекс Наркоман говорит:

ERROR | Инлайн IF заявления не допускаются

Но если я пишу неправильный код с помощью тройного, как это:

$name = strlen($name) > 0? $name: 'nameless'; 

Code Sniffer говорит: "НАЙДЕНО 4 ERRO (S) ...":

ОШИБКА | Значение сравнения не должно присваиваться переменной
ОШИБКА | Inline сокращенный IF заявление требует скобки вокруг сравнения
ОШИБКА | Запросы Inline IF недопустимы
ОШИБКА | Ожидается 1 пробел до «?»; 0 найдено
ОШИБКА | Ожидается 1 место до «:»; 0 найдено

Почему это проверяет все термины выражения, но, когда я исправить все, PHPCS говорит, что это недействительно? Я пишу это неправильно или просто не допускаю тройной вообще?

ответ

0

Снюк не работает, а не ошибки синтаксиса. У вас есть определенные правила, которые вы не соблюдаете. Вам нужно либо исправить свой код, либо удалить правила из набора правил.

Операторы Inline IF будут тройным вариантом, который вы написали. По вашему набору правил, вам необходимо написать:

if (strlen($name) > 0) 
{ 
    $name = $name; 
} 
else 
{ 
    $name = 'nameless'; 
} 

Вероятно, лучше удалить из правил понюхание.

В редактируемом коде, то сопит жалуюсь, что

> 0? 

должен быть

> 0 ? 

и

$name: 'nameless'; 

должны быть

$name : 'nameless';