2011-01-10 145 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,但当您使用依赖注入时它可能会复活。

相关问题