2011-10-30 3 views
1

Java 코드에서 다운 캐스팅을보고하는보고 도구 (예 : PMD)가 있는지 궁금해합니다. 모든 캐스트를 잡기다운 캐스트를 Java로보고 할 수있는 도구가 있습니까?

+0

최종성은 무엇입니까? –

+0

findbugs : http://findbugs.sourceforge.net/bugDescriptions.html#BC_IMPOSSIBLE_DOWNCAST –

+0

알렉스, 그 규칙은 단지 _impossible_ 다운 캐스트를 찾는다. –

답변

1

사용자 정의 PMD 규칙에 쉽다 : 그들은 명시 적으로 업 캐스팅이 경우

import net.sourceforge.pmd.AbstractJavaRule; 
import net.sourceforge.pmd.ast.ASTCastExpression; 

public class CastRule extends AbstractJavaRule { 

    public CastRule() { 
    } 

    @Override 
    public Object visit(final ASTCastExpression node, final Object data) { 
     addViolation(data, node); 
     return super.visit(node, data); 
    } 
} 

는 불행하게도 너무 업 캐스팅을 잡는다. 몇 가지 예 :

final Number myNumber = 5; 
final Integer myInteger = (Integer) myNumber; // catched 

final Number myNumber2 = (Number) myInteger; // catched 
final Number myNumber3 = myInteger; // NOT catched 

PMD는 다운 캐스트를 잡는 것이 다소 복잡해 보입니다.

this answer도 확인하십시오. 사용법에 대한 세부 정보가 포함되어 있습니다.

+0

그것은 훌륭하다. 명백한 업 캐스트도 역시 잡히지 않는다. 늦은 답변 죄송합니다. –

관련 문제