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