如何递归遍历XPath?

时间:2009-10-20 07:29:38

标签: java xpath abstract-syntax-tree

有一种方法(如果是这样,如何?)以递归方式遍历XPath查询?

我在Java中有一个带有以下场景的AST

@Relevant
public void foo() {
   bar(true);
}

public void bar(boolean flag) {
  assert flag;
}

我想找到用'@Relevant'注释的方法(很简单)并检查在foo(这里的栏)中调用的方法是否有一个断言语句。

那么a)如何提取方法名称'bar'并通过XPath询问名为'bar'的方法?

如果'bar'实际上调用断言发生的'bla'怎么办?

希望这是可以理解的......

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

单个Xpath不足以完成您要完成的任务。

首先,您需要一个类型绑定(例如,用于查找bar()方法声明)。

其次,您需要开发某种静态代码分析器,它在递归上运行AST并尝试满足条件,即调用堆栈中存在“断言表达式”。

您可以查看Eclipse JDT源代码,了解如何在那里实现类型绑定。一旦你有了绑定,就可以调用你的逻辑。