1

XPath クエリを再帰的にトラバースする方法はありますか?

次のシナリオでJavaにASTがあります

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

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

「@Relevant」で注釈が付けられたメソッドを見つけて(簡単です)、foo(ここではバー)で呼び出されたメソッドにassertステートメントがあるかどうかを確認したいと思います。

a) メソッド名 'bar' を抽出し、XPath 経由で 'bar' と呼ばれるメソッドを要求するにはどうすればよいですか?

そして、「bar」が実際にアサートが発生する「bla」を呼び出すとどうなりますか?

これが理解できることを願っています...

助けてくれてありがとう

4

1 に答える 1

0

達成しようとしているタスクには、単一の Xpath では不十分です。

まず、型バインディングが必要です (たとえば、bar() メソッド宣言を見つけるため)。

次に、AST で再帰的に実行され、コール スタックに「アサート式が存在する」という条件を満たそうとする、ある種の静的コード アナライザーを開発する必要があります。

型バインディングがどのように実装されているかについては、Eclipse JDT ソース コードを参照してください。バインディングを作成したら、それに対してロジックを呼び出すことができます。

于 2010-07-22T08:31:22.450 に答える