如何检查我的应用程序中的其他代码是否正在引用文件?

How to check if a file is being referenced by other code in my application?

我正在开发一个由我之前的开发人员编写的应用程序,至少可以说该应用程序没有得到很好的维护。看起来好像有一些文件已添加到解决方案中但从未使用过。我不确定为什么,但似乎是这样。

问题: 确定文件是否以任何方式在软件中 referenced/used 以便我可以在不需要时将其删除的最佳方法是什么?这是 Resharper 可以做的事情吗?

我还想提一下这个应用程序非常大,我想找到一个可以一次分析整个应用程序与一个文件的解决方案。

我通常会在 visual studio 中执行诸如 CTRL+SHIFT+F 之类的操作,即搜索,而不是在整个解决方案中查找文件名字符串。

但它不会给你 100% 的保证 来确定文件是否被使用。因为如果文件名是动态生成的,从数据库或服务等来源检索,那么整个解决方案搜索都会给你误报。

因此,如果您假设这些文件仅被静态引用,那么您可以编写小程序来遍历整个项目目录并在源代码文件中搜索子字符串。

ReSharper 可以通过一项名为 Solution-wide Analysis 的功能为您提供帮助。启用后(双击状态栏右下角的指示器圆圈),让它花点时间分析你解决方案中的所有文件,它会告诉你各种 public 类 未在解决方案内的任何地方使用。

然后可以利用ReSharper中的各种工具找到类似未使用的类和方法,判断调用是否移除

这里需要注意两点:ReSharper(和类似工具)是一种静态分析工具 - 它只能根据它看到的信息工作。例如,它不会告诉您一段代码是否正在通过反射动态调用。因此,再次确保在进行任何大型删除之前有备份(and/or 良好的源代码控制,例如 git)。第二个需要注意的是,ReSharper 的解决方案范围的分析也会在不相关的文件中提取错误(例如 css/html),您可以忽略这些。

最后,请记住 ReSharper 按解决方案工作:如果那些 类 从其他解决方案中使用,ReSharper 将无法告诉您。再次重申,删除无用代码时要小心。