使用JavaParser统计IfStmt语句数量时如何仅获取最终总计数
JavaParser统计IfStmt语句总数量实现方案
修改逻辑
- 移除
IfStmtVisitor的visit方法中的打印语句,仅保留计数累加逻辑,避免输出逐次递增的中间值 - 在
main方法的AST遍历逻辑执行完成后,再统一获取并打印总计数 - 新增
super.visit(n, arg)调用,保证嵌套在if块内部的if语句也能被正常统计
完整修改后代码
package org.javaparser.examples.chapter2; import com.github.javaparser.StaticJavaParser; import com.github.javaparser.ast.CompilationUnit; import com.github.javaparser.ast.stmt.IfStmt; import com.github.javaparser.ast.visitor.VoidVisitorAdapter; import java.io.FileInputStream; public class VoidVisitorComplete { private static final String FILE_PATH = "src/main/java/org/javaparser/samples/prime.java"; public static void main(String[] args) throws Exception { CompilationUnit cu = StaticJavaParser.parse(new FileInputStream(FILE_PATH)); IfStmtVisitor ifStmtVisitor = new IfStmtVisitor(); ifStmtVisitor.visit(cu, null); // 遍历完成后统一输出if语句总数量 System.out.println(ifStmtVisitor.getNumber()); } private static class IfStmtVisitor extends VoidVisitorAdapter<Void> { int count = 0; @Override public void visit(IfStmt n, Void arg) { count++; // 遍历当前if语句内部的子节点,保证嵌套if可被统计 super.visit(n, arg); } public int getNumber() { return count; } } }
内容的提问来源于stack exchange,提问作者Mohamed Ifham
相关产品推荐
相关产品推荐

