我需要计算C#方法的圈复杂度,并需要在FXcop 12.0中根据CC值定义规则。
我发现像Code Metrics这样的工具提供了计算CC值的功能,但我不知道如何在我的代码中使用它。基本上我的要求是通过声纳报告CC的值。
如果有人为此编写了自定义规则或任何想法如何执行此操作,请帮助
答案 0 :(得分:2)
也许您可以使用NDepend工具。
它附带内置代码指标:
它集成在Visual Studio中,可以轻松编写自定义代码规则。这样rule is actually a C# LINQ query。
例如,如果您想编写一个代码规则来匹配测试中复杂且覆盖范围很小的方法,那么只需编写:
-fno-elide-constructors
免责声明:我为NDepend工作
答案 1 :(得分:1)
在我看来,重要的不是确切的绝对复杂度值,而是项目与所有项目平均值之间的相对差异。实际上,您可以通过这种方式发现异常高的复杂代码。
如果你真的需要FxCop完全相同的复杂度值报告在SonarQube中可用,那么我建议你编写一个SonarQube插件来存储该值作为度量,并依靠FxCop来计算它:不要尝试逆向设计FxCop如何计算它。
仅供参考,我们有一个长期计划来协调SonarQube,Code Metrics,FxCop等之间的指标计算,并使用相同的公式,但这需要时间。