2014-01-16 2 views
0

나는 며칠 동안 PHP_CodeSniffer를 사용해 왔지만 일부 코드의 유효성을 검사 할 수는 없습니다. 심지어 아주 간단한이 같은 삼항 연산자를 사용하는 경우 :PHP CodeSniffer 표준 PHPCS를 작성하는 방법은 삼항 연산자의 유효성을 검사합니까?

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

강령 스니퍼는 말한다 :

ERROR | 문은

을 허용하지만이 같은 원을 사용하여 잘못된 코드를 작성하는 경우되지 않습니다 인라인 경우 :

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

코드 스니퍼는 말한다 "를 4 에로 (S) ... FOUND"

오류 | 비교 값을 변수에 할당하면 안됩니다.
ERROR | 인라인 속기 IF 문은 비교를 대괄호로 묶어야 함
ERROR | 인라인 IF 문은 허용되지 않습니다.
ERROR | "?"앞에 하나의 예상 된 공간이 있습니다. 0 찾았습니다.
오류 | ":"앞에 1 개의 예상 된 공간이 있습니다. 0 찾았습니다

왜 모든 삼항식이 검증되었지만 모두 고칠 때 PHPCS는 유효하지 않다고 말합니까? 내가 잘못 쓰는가 아니면 단순히 삼항을 전혀 허용하지 않는가?

답변

0

스니핑이 실패하고 구문 오류가 발생하지 않습니다. 귀하가 따르지 않는 규칙이 정의되어 있습니다. 코드를 수정하거나 규칙 집합에서 규칙을 제거해야합니다.

인라인 IF 문은 작성한 세 가지 옵션입니다. 귀하의 룰셋에 따라 다음을 작성해야합니다.

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

규칙에서 스 니프를 제거하는 것이 좋습니다. 편집 된 코드에서

상기 스니핑은

> 0? 

> 0 ? 

$name: 'nameless'; 

이어야 할 것을 불평

$name : 'nameless'; 
관련 문제