Resharper-未使用のクラスをすべて見つけます


122

ファイルを右クリックして[使用状況を検索]オプションを選択することにより、1つのファイルの未使用の参照を見つける方法を知っています。プロジェクト内のすべての未使用のクラスまたはファイルのリストを表示または取得する方法はありますか?


2
私は過去にこれにndependを使用しました。
Cine

回答:


195

まず、「ソリューション内のエラーの分析」を有効にします(ステータスバーのResharperアイコンを右クリックします)。

次に、ソリューションノードを右クリックし、[コードの問題を検索]を選択します。「検査結果」ツールウィンドウで、「問題のタイプ」ごとにグループ化し、「タイプまたはタイプメンバーは使用されません」を探して、未使用のクラス(およびさらに多くの未使用のシンボル)を取得します。

2番目のオプション(「ソリューションでのエラーの分析」を有効にした後)は、未使用のクラスに移動し、Alt + Enterを押し、「「タイプまたはタイプメンバー...」検査のオプション」を選択します。このタイプのすべてのコードの問題を見つける| ソリューション全体。

検査結果画面サンプル


41
未使用のクラス/メソッドは、「シンボル宣言の冗長性」の「タイプまたはタイプメンバーは使用されない」で表示されます。これがバージョン変更によるものなのか、それとも別の見方をしているのかわかりません。
猛烈な

4
これは、Windows 7上のWindows 8またはVS2012でVS2013にReSharperの7.1を使用して、任意のカテゴリの下で、未使用のクラスは戻っていない
サム・ジョーンズ

1
少なくともReSharper 8では、結果を取得するために「ソリューション内のエラーの分析」を有効にする必要はありません。
Pieter van

@SamJones:そうです... Resharper 8.1でも未使用のクラスは返されません...
以前の

3
Resharper 10:このレポートには未使用のクラスは表示されません。回避策:コードで未使用のクラスを見つけて、「ソリューションで同様の問題を検索する」を実行してください
altumano

17

@ulrichcによるソリューションは完璧に聞こえ、CastleやNinject などの依存性注入フレームワークを使用していないが、DIコンテナ[Castle]などを使用していて、次のようなものがある小規模からミドルウェイトのプロジェクトでうまく機能します。

public class IoC
{
    private WindsorContainer _container;

    private IoC()
    {
         _container = new WindsorContainer();
    }

    public static void RegisterFromAssembly(Assembly assembly, string classEndsWith, LifeTime lifeTime)
    {
        var lifestyle = ConvertLifeStyleType(lifeTime);

        _container.Register(AllTypes.FromAssembly(assembly)
                  .Where(type => type.Name.EndsWith(classEndsWith))
                  .WithService.AllInterfaces()
                  .Configure(c => c.LifeStyle.Is(lifestyle))
                  .WithService.FirstInterface());
    }
}

ご覧のとおり、RegisterFromAssemblyはアセンブリ内のすべての型を調べ、盲目的に[メソッドパラメータに基づいて]実行時にそれらをコンテナに追加します。

コンテナー内で登録または解決されたタイプのナビゲーションを提供するAgent Mulderプラグインのようなものが必要になります。これも視覚的には[おそらく設計時に]機能するかもしれませんが、未使用のクラスを削除するたびに、アプリケーション[すべての可能なレイヤー]内のすべてのテストを実行して80%が安全であることを確認しない限り、確実ではありません。話の教訓:Resharperにとってクラスは未使用に聞こえるかもしれませんが、依存性注入を使用すると復活する可能性があります。


3
まあ、DIだけでなく、リフレクションを使用すると、ソリューションが失敗する可能性があります。
モハエミン2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.