【发布时间】:2013-07-09 15:39:11
【问题描述】:
我正在使用谷歌javaparser解析java文件,当我尝试计算“if”语句时,似乎无法得到“else-if”语句的数量。
比如我要解析如下代码:
if(i>1){
i++;
}else if(i>2){
i++;
}else if(i>3){
i++;
}else{
i++;
}
我想获得圈复杂度,因此我需要计算“if”和“else-if”的数量。 当我使用访问者模式时,我只能访问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;
}
}
没有办法获得“else-if”,但带有“IfStmt”的访问者模式将整个代码块视为一个“if”语句。所以,我希望数字是 4,但它是 2。
有人知道吗?
【问题讨论】:
标签: java if-statement javaparser