Google 자바 파서를 사용하여 자바 파일을 구문 분석 할 때 "If"문을 계산할 때 "else-if"문을 얻을 수없는 것 같습니다. 나는 "만약"과 "다른-경우"의 수를 계산해야 할 수 있도록Google javaparser IfStmt 결과가 계산되지 않음 <else-if>
if(i>1){
i++;
}else if(i>2){
i++;
}else if(i>3){
i++;
}else{
i++;
}
I가 된 Cyclomatic 복잡성을 얻으려면 :
예를 들어, 다음 코드를 구문 분석합니다. 같은 내가 방문자 패턴을 사용할 때, 나는 단지 API에 정의 된 "IfStmt"를 방문 할 수 있습니다, 코드는 같습니다
private static class IfStmtVisitor extends VoidVisitorAdapter<Void> {
int i = 0;
@Override
public void visit(IfStmt n, Void arg) {
//visit a if statement, add 1
i++;
if (n.getElseStmt() != null) {
i++;
}
}
public int getNumber() {
return i;
}
}
얻을 수있는 방법이 없다 "다른-경우"하지만 IfStmt "와 Visitor 패턴 "전체 코드 블록을 하나의"if "문으로 처리합니다. 그래서 숫자가 4가 될 것으로 예상하지만 2입니다.
누구나 알고 계십니까?
그것은 마치 마법처럼 작동합니다. 정말 고맙습니다. 실제로 재귀를 시도했지만 isAssignablerom 메서드를 사용하지 않아서 항상 더 큰 숫자를 얻었습니다. – Xiansong