【问题标题】:How to find unused code over a group of projects?如何在一组项目中找到未使用的代码?
【发布时间】:2019-09-20 07:46:43
【问题描述】:

在我的解决方案中,我想以自动方式检测未使用的代码,作为 CI 的一部分。更具体地说,我想分析一组项目(例如那些在/src 下但不是/test 的项目),然后在该范围内决定使用什么,不使用什么。例如:如果同一组内的所有引用项目都没有使用它,则较低级别项目中的 public 方法应该被标识为未使用(某些工具不会检测到,因为 @987654326 @member 也可以在解决方案之外使用,但我对此不感兴趣,因为我正在编写产品而不是要使用的库)。

几年前,我通过建立一个包含相关项目的 FxCop 项目,然后针对这些项目进行分析,从而能够使用 FxCop 实现这一目标。

今天,在 .NET Core 世界中,Roslyn 分析器似乎是要走的路(我在这里可能错了,如果有更好的替代工作请告诉我)但我不知道如何我可以设置一个跨越多个项目的规则集,并且分析器是否能够按照所述检测未使用的代码。查看Write Better Code Faster with Roslyn Analyzers等文章,似乎规则集只针对一个项目(即安装了Microsoft.CodeAnalysis.FxCopAnalyzers的项目)。

【问题讨论】:

  • 如果您可以将您的代码与 SonarQube 集成,则可以通过代码分析指标提供未使用的代码

标签: .net-core static-analysis fxcop roslyn-code-analysis


【解决方案1】:

您可以为此使用默认的 NDepend 规则集,该规则集具有检测 Unused TypesUnused MethodsUnused Fields 的规则。

该工具可以分析任何 .NET Core 或 .NET Framework 代码。

一个 NDepend 项目的范围可以衍生出一个 VS 解决方案的多个或所有 VS 项目,甚至可以产生多个 VS 解决方案。

>我想分析一组项目(例如那些在 /src 下但不在 /test 下的项目),然后在该范围内决定使用什么,不使用什么。

NDepend code rules are editable C# LINQ queries 这样您就可以轻松地编辑或复制默认规则以强制执行一些限制,例如:

from t in JustMyCode.Types
   .Where(t1 => t1.ParentNamespace.FullNameLike("*YourRegexPattern*")) 
where t.NbTypesUsingMe == 0 && canTypeBeConsideredAsDeadProc(t)
select t
...

免责声明:我为 NDepend 工作

【讨论】:

    猜你喜欢
    • 2010-09-14
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 2011-09-01
    • 1970-01-01
    • 2011-07-30
    相关资源
    最近更新 更多