2016-09-18 26 views
0

私は以下のようなコードをC#に持っていますが、MyClassはプロジェクト内のライブラリのクラスです。どのようにして静的解析を行い、コードMethod1とMethod2が何回呼び出されたかを調べることができます。アセンブリ内の検索メソッドの名前

出力は次のようになります。namespace.MyClass.Method1 = 4、namespace.MyClass.Method2 = 1

namespace.MyClass obj = new namespace.MyClass() 
obj.Method1(); 
obj.Method2(); 

namespace.MyClass obj2 = new namespace.MyClass() 
obj.Method1(); 
obj.Method1(); 
obj.Method1(); 

おかげで、 D.

+0

あなたはあなたがでの反射を必要としないと思われる問題を宣言する方法のために働きますすべて(あなたがそれを使用しようとしているように見えますが)。単に(おそらく)グローバル辞書を定義し、メソッドが呼び出されるたびにディクショナリ内の対応するエントリを増やしてください。 – mok

答えて

0

Visual Studioで、あなたの方法上の右をクリックして選択"すべての参照を検索"。

+1

私は、特定のクラスとメソッドがどのように使用されているかに基づいてコード上でいくつかの分析を行うために、静的コード分析の一部として実際にコード内で行う必要があります。 – user3573411

+0

メソッド呼び出しをインターセプトしたいので、アスペクト指向プログラミングを探しています。 https://msdn.microsoft.com/en-us/magazine/dn574804.aspx。 – Julien

0

Visual Studio Professional Editionまたはそれ以上のバージョンをお持ちの場合、プロセスに関する情報を収集するために、計測用プロファイリングを使用することができます。その中には、特定の関数がスタックに何回置かれたか(関数が何回呼び出されたか)を決定するカウンタがあります。

計装プロファイリングの詳細を https://msdn.microsoft.com/en-us/library/ms182369.aspx

その他のオプション、あなただけの数が必要な場合、あなたは(Traceクラスhttps://msdn.microsoft.com/en-us/library/system.diagnostics.trace(v=vs.110).aspxまたはlog4netのようないくつかのサードパーティのライブラリを使用して)あなたのメソッドの先頭にログ電話をかけることができますし、実行後にログファイルから呼び出します。

0

ツールNDependを使用して、どのメソッドが他のメソッドを呼び出すかを調べるためにC#LINQクエリを記述できます。

ます。また、特定のメソッドを右クリックして、このメソッドの呼び出し元を取得するクエリを生成することができます
from m in Application.Methods 
select new { m, m.MethodsCallingMe } 

NDepend methods callers

NDepend particular caller method, generating code query

結果は次のとおりです。

NDepend particular caller method

上記のスクリーンショットでは、メソッド(メニュー私(直接的および間接的)を使用しているメソッドの選択)のすべての呼び出し元(推移的)を取得するC#LINQクエリを生成することもできます。そのような場合、クエリ結果は依存関係グラフにエクスポート可能であり、メソッドの推移的呼び出し元を見ることができます。

NDepend transtive callers graph

免責事項:

NDepend transtive callers of a method

call graphは次のように見ることができる私はNDependの

関連する問題