web-dev-qa-db-ja.com

Resharper-未使用のクラスをすべて検索

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

118
Rocky Singh

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

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

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

Inspection results window sample

188
ulrichb

@ulrichcによる解決策は完璧に聞こえ、 Castle やNinjectなどの Dependency Injection フレームワークを使用していない小規模から中規模のプロジェクトに適していますが、DIを使用している場合コンテナ[たとえば、城]と、次のようなものがあります。

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はアセンブリ内のすべてのタイプを通過し、[methodsパラメーターに基づいて]実行時にそれらをコンテナーに追加します。

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

17
MHOOS