tags:

views:

152

answers:

1

Hi,

is there a way (and if so, how ?) to traverse a XPath query recursively ?

I have an AST in Java with the following scenario

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

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

I want to find the method which is annotated with '@Relevant' (thats easy) and check if the method which is called in foo (here bar) does have an assert Statement.

So a) how do I extract the methode name 'bar' and ask via XPath for the method called 'bar' ?

and what if 'bar' actually calls 'bla' in which the assert happens ?

hope this is understandable...

Thanks for any help

A: 

A single Xpath is not sufficient for the task you're trying to accomplish.

First, you need a type binding (for finding a bar() method declaration, for example).

Second, you need to develop some kind of static code analyzer, which runs on ASTs recursively and tries to satisfy a condition, which is "an assert expression exists" in a call stack.

You may have a look at the Eclipse JDT source code for how type binding is implemented there. Once you have a binding, you can invoke your logic on it.

spektom