AST(抽象構文木)パーサーを使用してプログラムの各メソッド宣言で呼び出されるメソッドの名前を取得するにはどうすればよいですか?これまでは、メソッド宣言のすべての名前と呼び出されるメソッドの名前をすべて取得することができましたが、どちらのメソッドがどのメソッドを呼び出すかを知りたいと思います。この方法は、などの方法mC
とmD
を呼び出しm2
ながらたとえば、私は、メソッドmA
とmB
を呼び出すm1
その方法を見てみたいメソッド呼び出しAST
[EDIT 2011年11月9日IDBの身体に戻っ初心者の拡張コメントを転写元の質問。私は正しくそれを転記したことを願っています。私は、(Eclipseの)MethodDeclaration apiにGetInvokedMethodName関数を呼び出すことができないようです。ここに私のコードは次のとおりです。
public class MethodVisitor extends ASTVisitor {
List<MethodDeclaration> methods = new ArrayList<MethodDeclaration>();
@Override public boolean visit(MethodDeclaration node) {
methods.add(node);
return super.visit(node); }
public List<MethodDeclaration> getMethods()
{ return methods; }
List<MethodInvocation> methods1 = new ArrayList<MethodInvocation>();
@Override public boolean visit(MethodInvocation node)
{ methods1.add(node);
return super.visit(node); }
public List<MethodInvocation> getMethods1()
{ return methods1; }
}
...
for (MethodDeclaration method : visitor .getMethods())
{ System.out.println("Method name: " + method.getName()
+ " Return type: " + method.getReturnType2()
+ " Is constructor: " + method.isConstructor()
+ " Method invoked: " + ASTNode.METHOD_INVOCATION);
); }
for (MethodInvocation method1 : visitor .getMethods1())
{ System.out.println("Method name invoked: " + method1.getName()); }
Spyros:質問の背景として追加した追加情報は、質問自体に実際に追加する必要があります。コードブロックをコメントサイズの断片に分割して、基本的には判読できないことは明らかです。私の答えを読んでいる他の人がこれらのコメントをスキップし、余分なものを逃してしまう可能性はかなり高いです。質問を編集できます。あなたの質問の下で**編集** "ボタン"を参照してください。私はあなたの質問にあなたの追加されたコメントを移動する自由を取っています(あなたを助けるために上位のSOユーザがそれを行うことができます)。このクリーンアップを完了するために、*あなた*はそれらのコメントを削除できます。 –