Emma、Cobertura、Clover などのコード カバレッジ ツールは、コードを計測し、一連のテストを実行してコードのどの部分が呼び出されるかを記録します。これは非常に便利で、開発プロセスの不可欠な部分です。テスト スイートがコードをどの程度カバーしているかを特定するのに役立ちます。
ただし、これは実際のデッド コードを特定することと同じではありません。テストでカバーされている (またはカバーされていない) コードのみを識別します。これにより、偽陽性 (テストがすべてのシナリオをカバーしていない場合) や偽陰性 (実際のシナリオでは実際に使用されていないコードにテストがアクセスする場合) が発生する可能性があります。
デッド コードを実際に特定する最善の方法は、ライブ実行環境でカバレッジ ツールを使用してコードを計測し、長期間にわたってコード カバレッジを分析することだと思います。
負荷分散された冗長環境で実行している場合 (そうでない場合はなぜでしょうか?)、アプリケーションのインスタンスを 1 つだけ計測し、ロード バランサーを構成して、ランダムではあるが小さい部分をユーザーはインストルメント化されたインスタンスで実行されます。長期間にわたってこれを行うと (季節変動など、実際の使用シナリオをすべてカバーしていることを確認するため)、実際の使用状況でコードのどの領域がアクセスされ、どの部分がアクセスされているかを正確に確認できるはずです。実際にはアクセスされないため、デッドコードです。
私は個人的にこれが行われたのを見たことがなく、前述のツールを使用して、テスト スイートを介して呼び出されていないコードを計測および分析する方法を知りませんが、できると確信しています。