1
是否有一种方法(如果是这样,如何?)递归地遍历一个XPath查询?如何递归遍历XPath?
我在Java中的AST有以下情形
@Relevant
public void foo() {
bar(true);
}
public void bar(boolean flag) {
assert flag;
}
我想找到它标注有“@Relevant”(那很容易)的方法,并检查被称为在FOO的方法(这里吧)确实有一个assert语句。
所以a)如何提取方法名称'bar'并通过XPath询问名为'bar'的方法?
以及如果'bar'实际调用assert发生的'bla'会怎么样?
希望这是可以理解的......
感谢所有帮助
目前还不清楚你的AST格式是什么。我假设你创建了它的XML配置。如果这是正确的,请提供有关您使用的方法调用和断言语句定义的更多详细信息。 我可以说我玩过javac源代码(可以从OpenJDK项目中获得),它们以编程方式构建AST(以JCTree.JCCompilationUnit格式 - http://xref.jsecurity.net/openjdk-6/langtools/dd/d25/ classcom_1_1sun_1_1tools_1_1javac_1_1tree_1_1_j_c_tree_1_1_j_c_compilation_unit.html)。通过该API然后使用JCTree.JCCompilationUnit.accept(Visitor)很容易完成您的任务。 – 2009-10-20 09:08:15
的目的实际上是为PMD创建一个XPath规则。 由于情况,我不能使用Java的实现。 所以无论是在XPath中是可能的还是我必须忘记整个想法;-) 谢谢无论如何 – Marty 2009-10-21 11:11:28