.NET在多个解决方案中查找无效代码

| 我们有一个大约15个解决方案的产品,每个项目都有多个。 问题很简单:哪种工具将使我们能够在整个代码库中搜索无效代码? 在单个解决方案中进行搜索就足够容易了(该解决方案在SO上有很多答案)。 但是,如何确定解决方案AlphaSol的项目AlphaProj中的\“ public void Foo()\”是否真正用于例如? BetaSol?     
已邀请:
尽管您有15个解决方案,但是没有什么可以阻止您创建另一个将引用所有项目的解决方案,比如说All.sln。因此,每当需要查找外部引用时,都可以打开All.sln解决方案并查找引用。 我们可能有大约100个解决方案,并且一个All.sln引用了这些解决方案中的所有项目。将所有项目从一个解决方案添加到All.sln很容易:您只需选择ѭ0,然后从这15个解决方案文件中选择一个即可。您需要在“ 0”对话框中调整文件类型才能选择解决方案文件。另外,要使这个大型解决方案井井有条,您可以使用解决方案文件夹。     
您可能还需要检出NDepend。 由于另一个答案很安静,足以满足您的迫切需求,并且我不想听起来像是不好的广告,因此我将其留给有兴趣的读者来查找有关该工具的更多信息。     
为了详细说明Christian的答案,NDepend工具确实可以帮助在.NET代码库中查找未使用的代码。免责声明:我是该工具的开发人员之一。 NDepend建议通过LINQ查询(CQLinq)编写代码规则。提出了大约200个默认代码规则,其中3个专用于未使用/死代码检测: 潜在的死类型(因此检测未使用的类,结构,接口,委托...) 潜在失效的方法(因此检测未使用的方法,ctor,属性获取器/设置器...) 潜在的死亡领域 NDepend集成在Visual Studio中,因此可以在IDE内部检查/浏览/编辑这些规则。该工具还可以集成到您的CI流程中,并且可以生成报告,以显示违反规则和罪魁祸首的代码元素。 如果您单击上面指向这些规则源代码的这3个链接,您会发现与类型和方法有关的链接有点复杂。这是因为它们不仅检测未使用的类型和方法,而且还检测仅由未使用的无效类型和方法(递归)使用的类型和方法。 这是静态分析,因此是规则名称中的潜在前缀。如果仅通过反射使用代码元素,则这些规则可能会将其视为未使用,情况并非如此。 除了使用这3条规则外,我建议您通过测试来衡量代码的覆盖率,并力争全面覆盖。通常,您会看到测试无法涵盖的代码实际上是可以安全丢弃的未使用/无效代码。这在尚不清楚代码分支是否可达的复杂算法中特别有用。     

要回复问题请先登录注册