有一种方法(如果是这样,如何?)以递归方式遍历XPath查询?
我在Java中有一个带有以下场景的AST
@Relevant
public void foo() {
bar(true);
}
public void bar(boolean flag) {
assert flag;
}
我想找到用'@Relevant'注释的方法(很简单)并检查在foo(这里的栏)中调用的方法是否有一个断言语句。
那么a)如何提取方法名称'bar'并通过XPath询问名为'bar'的方法?
如果'bar'实际上调用断言发生的'bla'怎么办?
希望这是可以理解的......感谢您的帮助
答案 0 :(得分:0)
单个Xpath不足以完成您要完成的任务。
首先,您需要一个类型绑定(例如,用于查找bar()方法声明)。
其次,您需要开发某种静态代码分析器,它在递归上运行AST并尝试满足条件,即调用堆栈中存在“断言表达式”。
您可以查看Eclipse JDT源代码,了解如何在那里实现类型绑定。一旦你有了绑定,就可以调用你的逻辑。