从抽象语法树中查找变量/方法引用

时间:2013-06-28 12:26:09

标签: java static-analysis abstract-syntax-tree

我希望找到给定方法的给定变量或调用者的引用,就像Eclipse中的“open call hierarchy”和“(find)references”一样(右键单击变量或方法时)。

现在我已经获得了源代码的抽象语法树。我使用Eclipse JDT来获取AST,它也解析了所有类型的绑定。

所以我的问题是,是否可以仅使用此抽象语法树找到变量/方法引用? (我知道一些代码分析库使用字节码来实现这一点。我想知道是否可以使用AST执行类似的分析。)

1 个答案:

答案 0 :(得分:0)

仅使用此抽象语法树

仅给出AST,您无法轻松确定引用或调用者。 AST是只是语法,并不直接编码它的意思(用 意义的一个子集,“这被称为”。“

要确定引用或调用的内容,必须以非常复杂的方式分析AST,以构建符号范围并确定触及的内容。 (许多 Java标准/书的内容与此过程有关,但信息分散 因为它的复杂性而在整本书中都有。)

良好的前端通常会从AST计算此信息或允许轻松提取的内容。我相信Eclipse JDT有这方面的信息和优惠 一组用于访问它的API,但我对JDT一无所知。

但是你无法从AST那里轻松搞定。