1

有没有办法(如果有,如何?)递归地遍历 XPath 查询?

我在 Java 中有一个 AST,具有以下场景

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

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

我想找到用'@Relevant'注释的方法(这很容易)并检查在 foo (此处为 bar)中调用的方法是否有 assert 语句。

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

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

希望这是可以理解的……

谢谢你的帮助

4

1 回答 1

0

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

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

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

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

于 2010-07-22T08:31:22.450 回答