2014-05-15 3 views
1

checkstyles를 사용하고 있는데 어떤 사람이 조건을 사용하여 if ... else ... 블록 아래에있는 경우 경고를 표시하는 것과 같은 규칙을 정의하고 싶습니다. 예를 들어 : 그것은 좋은 것Checkstyle 규칙이 조건을 피하기 위해

if (!employeeNotExist) { 
    // code 
} else { 
    // code 
} 

이유는 checkstyle 또는 일부 사용자 지정 checkstyle 규칙에 따라 이에 대한 준비가 만든 모듈이이를 위해 작성해야하는가 가독성

만 긍정적 인 조건을 가지고?

답변

1

Checkstyle에서이 작업을 수행 할 수 없습니다. 따라서 타사 라이브러리를 사용할 수없는 경우 write a custom check입니다. 어떤 위안이라면 : 이것은 사용자 정의 검사의 아주 간단한 경우입니다.

DescendantToken 체크를 구성하는 것이 가장 좋습니다 (Eclipse-CS에서 작동 함) DescendantToken 검사는 구성하기 위해 AST를 이해해야하는 복잡한 하위 수준 검사이며, 링크 된 문서를 참조하십시오.) 기타 정보 :는 else 블록이있는 경우는 검출되지 않고, 또한 플래그 방법 if (!map.isEmpty()) 같은 호출로

<module name="DescendantToken"> 
    <property name="tokens" value="LITERAL_IF"/> 
    <property name="limitedTokens" value="LNOT"/> 
    <property name="minimumDepth" value="2"/> 
    <property name="maximumDepth" value="2"/> 
    <property name="maximumNumber" value="0"/> 
    <property name="maximumMessage" value="Consider changing this to a 
      positive condition for better readability."/> 
</module> 

이 접근법 다소 조이다. 단, 케이스 if (!employeeNotExist)에 해당됩니다. !(a || b)과 같은 조건도 플래그를 지정하지만 !a && !b으로 다시 쓸 수 있습니다.

그렇다면이 모든 것이 완벽하지는 않지만, 가장 가까운 Checkstyle을 사용하면 가장 가까운 것입니다.

+0

감사합니다. Thomas. 가양성에 의한 의미는 무엇입니까? – user3198603

+0

거짓 긍정 (false positive)은 수표에서 문제가보고되는 경우이지만 실제로는 모든 것이 좋습니다. 대조적으로, 위음성은 수표가 문제를 놓친 경우입니다. –

+0

내가 OP에서 말했듯이, 나는 else 블록이 if 연산자가 들어 있지 않은 경우에만 플래그를 지정하려고합니다. (연산자가없는 경우 플래그를 지정하고 싶지 않습니다.) – user3198603

관련 문제