eclipse ASTNode 到源代码行号

标签 eclipse abstract-syntax-tree eclipse-jdt

eclipse中给定一个ASTNode,有什么办法可以得到对应的源代码行号吗?

最佳答案

您可以获取 ASTNode 的行号使用下面的代码

    int lineNumber = compilationUnit.getLineNumber(node.getStartPosition()) - 1;

编译单元可以从ASTParser获得使用下面的代码

    ASTParser parser = ASTParser.newParser(AST.JLS3);

    // Parse the class as a compilation unit.
    parser.setKind(ASTParser.K_COMPILATION_UNIT);
    parser.setSource(source); // give your java source here as char array
    parser.setResolveBindings(true);

    // Return the compiled class as a compilation unit
    CompilationUnit compilationUnit = parser.createAST(null);

然后你可以使用ASTVisitor使用以下代码访问所需节点类型(例如 MethodDeclaration 节点)的模式:

    compilationUnit.accept(new ASTVisitor() {

        public boolean visit(MethodDeclaration node) {       
            int lineNumber = compilationUnit.getLineNumber(node.getStartPosition()) - 1;
            return true;
        }
    });

关于eclipse ASTNode 到源代码行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11126857/

相关文章:

java - 如何隐藏一些 Eclipse 自动完成结果

java - 无法访问浏览器异常

java - 为什么 jaxws-maven-plugin 忽略我的 .WSDL 文件?

scala - 递归地评估 Scala 抽象语法树

go - 如何表达 "slice of (string or ' 其他此类 slice 的类型')"

java - 在 maven 组件中使用 eclipse 编译器

java - 将静态代码分析从单独的进程转移到 Eclipse 插件

java - 部署描述符和 Java 资源消失了

c# - 获取显示受影响的方法(名称)的代码文件版本差异

java - 如何为自定义 Java 标记添加 Eclipse Quick Fix?