Thomas が指摘したように、ツールNDependは、.NET コード ベースで未使用のコードを見つけるのに役立ちます。免責事項: 私はこのツールの開発者の 1 人です。
NDepend は、LINQ Query (CQLinq) で Code Ruleを作成することを提案しています。約200 の既定のコード規則が提案されており、そのうちの 3 つは未使用/デッド コードの検出専用です。
NDepend は Visual Studio に統合されているため、これらのルールは IDE 内で直接チェック/参照/編集できます。このツールは CI プロセスに統合することもでき、違反したルールやコード要素の原因を示すレポートを作成できます。
上記の 3 つのリンクをクリックしてこれらのルールのソース コードに移動すると、型とメソッドに関するものが少し複雑であることがわかります。これは、未使用の型とメソッドだけでなく、未使用のデッド型とメソッド (再帰的) によってのみ使用される型とメソッドも検出するためです。
これはstatic analysisであるため、ルール名に接頭辞Potentiallyが含まれています。コード要素がリフレクションによってのみ使用される場合、これらのルールはそれを未使用と見なす可能性がありますが、そうではありません。
これら 3 つのルールを使用することに加えて、テストによってコード カバレッジを測定し、完全なカバレッジを達成するよう努めることをお勧めします。多くの場合、テストでカバーできないコードは、実際には安全に破棄できる未使用/デッドコードであることがわかります。これは、コードの分岐が到達可能かどうかが明確でない複雑なアルゴリズムで特に役立ちます。
さらに、パブリック メソッドから呼び出されるプライベート メソッドごとに、それがどのパブリック メソッドであるかを知る必要があります。
この情報を取得するには、CQLinq を使用して次のように記述するだけです。
from m in Application.Methods
where m.IsPrivate
let publicMethodsCallingMe = m.MethodsCallingMe.Where(m1 => m1.IsPublic)
where publicMethodsCallingMe.Count() > 0
select new { m, publicMethodsCallingMe }
クエリの結果は簡単に閲覧できます。
