2011-01-10 98 views
107

我知道如何通過右鍵單擊文件並選擇「Find Usages」選項來查找單個文件的未使用引用。有沒有什麼辦法可以看到或得到全部我的項目中未使用的類或文件的列表?Resharper-查找所有未使用的類

+2

我在過去使用了ndepend。 – Cine 2011-01-10 11:10:56

回答

167

首先啓用「分析解決方案中的錯誤」(右鍵單擊狀態欄中的Resharper圖標)。

然後右鍵單擊解決方案節點並選擇「查找代碼問題」。在「檢查結果」工具窗口中,您可以按「問題類型」進行分組,並查找「從不使用類型或類型成員」來獲取所有未使用的類(以及更多未使用的符號)。

第二個選項(在啓用「分析解決方案中的錯誤」後)是去任何未使用的類,按Alt + Enter,選擇「選項for'類型或類型成員...'檢查」查找這種類型的所有代碼問題|整個解決方案

Inspection results window sample

+40

未使用的類/方法出現在「符號聲明中的冗餘項」下的「類型或類型成員永遠不會使用」下。不知道這是由於版本更改,還是我正在以不同方式查看。 – bulltorious 2012-05-30 17:12:06

+4

在Windows 8上的VS2013或Windows 7上的VS2012上,使用Resharper 7.1的任何類別都沒有返回任何未使用的類。 – 2013-11-04 15:11:36

17

解決方案通過@ulrichc聽起來很完美,併爲小型工作正常,在其中,如果你正在使用DI容器不使用任何Dependency Injection框架如Castle或Ninject但什麼量級項目[城堡例如]和你有類似以下內容:

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的插件,它爲您的容器內註冊或解析的類型提供導航。這又可能在視覺上[可能設計時間]起作用,但除非每次移除未使用的類時,都會執行所有測試[每個可能的圖層],以確保您的安全。故事的道德:一個類可能聽起來不適用於Resharper,但當您使用依賴注入時它可能會復活。

相關問題