.net core 如何在一组项目中查找未使用的代码?

.net core 如何在一组项目中查找未使用的代码?,.net-core,static-analysis,fxcop,roslyn-code-analysis,.net Core,Static Analysis,Fxcop,Roslyn Code Analysis,在我的解决方案中,我希望以自动化的方式检测未使用的代码,作为CI的一部分。更具体地说,我想分析一组项目(例如/src下的项目,而不是/test),然后在该范围内决定使用什么和不使用什么。例如:如果同一组中的引用项目均未使用较低级别项目中的public方法,则应将其标识为未使用(有些工具没有检测到这一点,因为public成员也可能在解决方案之外使用,但我对此不感兴趣,因为我正在编写产品,而不是要使用的库) 几年前,我使用FxCop建立了一个包含相关项目的FxCop项目,并对这些项目进行了分析,从而

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

几年前,我使用FxCop建立了一个包含相关项目的FxCop项目,并对这些项目进行了分析,从而实现了这一点


今天,在.NET核心世界中,Roslyn分析器似乎是一个不错的选择(我在这里可能错了,请告诉我是否有更好的工作替代方案)但我不知道如何设置一个跨多个项目的规则集,以及分析器是否能够检测到所描述的未使用的代码.

您可以为此使用默认的独立规则集,该规则集包含要检测的规则,以及

该工具可以分析任何.NET核心或.NET框架代码

一个独立项目的范围可以产生一个VS解决方案的几个或所有VS项目,甚至几个VS解决方案

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

因此,您可以轻松编辑或复制默认规则以强制执行某些限制,如:

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

免责声明:我为NDepend工作

如果您可以将代码与SonarQube集成,则可以通过代码分析度量给出未使用的代码