5

コードが多すぎるC#クラスがあり、それをしたいと思ってrefactorいます。私がやりたいことは、すべての から始めて、それぞれに対してpublic methodsを構築treeし、クラス内の他のどのメソッドがそこから呼び出され、次にどのメソッドが子メソッドから呼び出されるかなどを示すことです。

これにより、どれがprivate methods1 つだけに属しているかpublic method、共有されているかなどを確認できます。

実行時にこれを行いたくないことに注意してください。直接.cs file、またはコンパイル済みのリフレクションを使用して、クラスを確認できるようにしたいと考えていますDLL

コンパイルされた DLL でリフレクションを使用してメソッドを取得できることはわかっていますが、どのメソッドがクラス内の他のメソッドによって呼び出されているかを見つける方法が見つかりません。

誰でもアイデアはありますか?繰り返しますが、これは実行時の問題ではなく、単に再利用可能なユーティリティを構築して、大きすぎるクラスのリファクタリングを支援するためのものです。私が取り組んでいるソリューションにはかなりの数があるため、コードは何度も使用されます。

4

1 に答える 1

10

Visual Studio 2010 には、コードが呼び出されるソリューション内のすべての場所を表示できるアクション「呼び出し階層の表示」があります。

私の経験からすると、この静的分析はやや不足している可能性があります。たとえば、リフレクションを使用して、データバインディングを介して、依存性注入コンテナーなどを介してメソッドを動的に呼び出すことができます。

また、それはトピックから少し外れている可能性があり、あなたの場合には当てはまりませんが、コンポーネントのデッドコードを見つける良い方法は、一連の統合テストを用意することです。その後、コード カバレッジを実行し、実行されないコードのパスを視覚的に確認できます。

于 2013-01-09T17:54:55.673 に答える