我正在使用 Google 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。
有人有什么想法吗?