2017-10-21 19 views
0

内で呼び出されるメソッドを収集するために、私は具体的な方法の両方明示的およびimplicitly.For例で呼び出されるメソッドを収集したい:どのようにJavaメソッド

Class A { 
@Autowired 
C c; 

foo() { 
    B b = new B(); 
    b.print("abc"); 
    if (somecondition) { 
     c.anotherPrint("def"); 
    } 
} 

Class B { 
    print(String arg) { 
    } 
} 

Class C { 
    @Autowired 
    B b; 
    anotherPrint(String arg) { 
     b.print(arg); 
    } 
} 

コードから、私は、クラスAのメソッド情報を収集したいの上fooが引数「ABC」と「DEF」私は、この目的のために別の方法を使用する方法を見てませんが、あなただけのいくつかを追加することができます

A::foo 
    --> B::print("abc") 
    --> C::anotherPrint("def") 
      --> B::print("def") 
+0

あまりにも広い質問ですが、恐らくhttps://github.com/gousiosg/java-callgraphのような既存のソリューションのいくつかを勉強して始めるべきです。 https://stackoverflow.com/questions/4951517/static-analysis-of-java-call-graphも参照してください。 – fvu

答えて

0

コールグラフのように.somethingをしてBの印刷()メソッドを呼び出しますメソッドが呼び出されたことを示すマーカー。例えば、それはロガーであるか、単にいくつかのフィールドcountOfInvokesであり、メソッド内で増加します。