C#:使用FxCop sdk的方法的圈复杂度

C#:使用FxCop sdk的方法的圈复杂度,c#,sonarqube,fxcop,code-metrics,cyclomatic-complexity,C#,Sonarqube,Fxcop,Code Metrics,Cyclomatic Complexity,我需要计算C#方法的圈复杂度,并需要根据FXcop 12.0中的CC值定义规则 我发现像这样的工具提供了计算CC值的功能,但我不知道如何在代码中使用它。基本上,我的要求是通过声纳报告的CC值 如果有人为此编写了自定义规则,或者知道如何执行,请提供帮助。在我看来,重要的不是确切的绝对复杂性值,而是您的项目与所有项目平均值之间的相对差异。实际上,您可以通过这种方式发现异常复杂的代码 如果您真的需要FxCop提供的完全相同的复杂性值报告在SonarQube中可用,那么我建议您编写一个SonarQube

我需要计算C#方法的圈复杂度,并需要根据FXcop 12.0中的CC值定义规则

我发现像这样的工具提供了计算CC值的功能,但我不知道如何在代码中使用它。基本上,我的要求是通过声纳报告的CC值


如果有人为此编写了自定义规则,或者知道如何执行,请提供帮助。

在我看来,重要的不是确切的绝对复杂性值,而是您的项目与所有项目平均值之间的相对差异。实际上,您可以通过这种方式发现异常复杂的代码

如果您真的需要FxCop提供的完全相同的复杂性值报告在SonarQube中可用,那么我建议您编写一个SonarQube插件,将该值存储为一个度量,并依靠FxCop来计算它:不要尝试对FxCop的计算方式进行反向工程


仅供参考,我们有一个长期计划,在SonarQube、Code metrics、FxCop等之间调整度量计算,并使用相同的公式,但这需要时间。

也许您可以使用该工具

是的

它包含两个内置代码度量:

它集成在VisualStudio中,可以轻松编写自定义代码规则。这样的一个

例如,如果要编写代码规则以匹配复杂且测试覆盖率低的方法,只需编写:

// <Name>Complex methods poorly covered by tests</Name>
warnif count > 0 
from m in Application.Methods
where m.CyclomaticComplexity > 10 && 
      m.PercentageCoverage < 20
select new { 
   m, 
   m.CyclomaticComplexity, 
   m.PercentageCoverage,
   m.NbLinesOfCode 
}
//复杂的方法很少被测试覆盖
如果计数大于0,则警告
从m开始应用。方法
其中,m.CyclomaticComplexity>10&&
m、 百分覆盖率<20
选择新{
M
m、 环网复合性,
m、 百分比覆盖率,
m、 NbLinesOfCode
}

免责声明:我为独立基金工作