Resharper-查找所有未使用的类


122

我知道如何通过右键单击文件并选择“查找用法”来查找单个文件的未使用引用。有什么办法可以查看或获取项目中所有未使用的类或文件的列表?


2
过去,我已经使用ndepend了。
Cine

Answers:


195

首先启用“分析解决方案中的错误”(在状态栏中右键单击Resharper图标)。

然后右键单击解决方案节点,然后选择“查找代码问题”。在“检查结果”工具窗口中,可以按“问题类型”分组,然后查找“从未使用过Type或type成员”以获取所有未使用的类(以及更多未使用的符号)。

第二个选项(启用“分析解决方案中的错误”后)是转到任何未使用的类,按Alt + Enter,选择“用于'类型或类型成员...'检查的选项”。查找此类型的所有代码问题| 整个解决方案。

检验结果窗口样本


41
“符号声明中的冗余”下的“类型或从未使用过类型成员”下出现了未使用的类/方法。不知道这是由于版本更改引起的,还是我以不同的方式看待它。
令人鼓舞的

4
这还没有恢复下的VS2013使用ReSharper的7.1在Windows 8或VS2012任何种类的任何未使用的类在Windows 7
萨姆-琼斯

1
至少在ReSharper 8中,您不必启用“分析解决方案中的错误”即可获得结果。
Pieter van Ginkel 2013年

@SamJones:你是对的..它也不会在Resharper 8.1下返回任何未使用的类...
2014年

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遍历了程序集内的所有类型,并且在运行时盲目地[基于Methods参数]将它们添加到了容器中。

您将需要诸如Agent Mulder插件之类的插件,该插件可为容器内注册或解析的类型提供导航。这可能在外观上[可能会在设计时]起作用,但是除非您每次删除未使用的类,否则您将无法真正确定,必须在应用程序内(每个可能的层)运行所有测试,以确保80%的安全。故事的寓意:Resharper听起来可能没有使用一个类,但是当您使用依赖注入时,它可能会复活。


3
不仅是DI,对于反射的任何使用都可能导致解决方案失败。
Mohayemin 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.