Есть ли способ (и если да, как?) Рекурсивно пересекать запрос XPath?Как переходить XPath рекурсивно?
У меня есть AST в Java с помощью следующего сценария
@Relevant
public void foo() {
bar(true);
}
public void bar(boolean flag) {
assert flag;
}
Я хочу, чтобы найти метод, который аннотированный с «@Relevant» (это является легким) и проверить, если метод, который вызывается в Foo (здесь bar) имеет утверждение assert.
Итак, а) как извлечь имя «bar» имени метода и спросить через XPath для метода «бар»?
и что, если «бар» на самом деле вызывает «бла», в котором происходит утверждение?
надеюсь, что это понятно ...
Спасибо за любую помощь
Неясно, каков ваш формат AST. Я предполагаю, что вы создаете его конфигурацию XML. Если это правильно, укажите более подробные сведения о том, как вы используете метод call и assert. Я могу сказать, что я играл с источниками 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 (Посетитель). –
Целью этого является создание правила XPath для PMD. Из-за обстоятельств я не могу использовать для этого реализацию Java. так что это возможно в XPath или я должен забыть всю идею ;-) Спасибо в любом случае – Marty