【问题标题】:Cyclomatic Complexity: Resharper vs CodeMaid圈复杂度:Resharper 与 CodeMaid
【发布时间】:2015-08-06 07:41:02
【问题描述】:
我已经使用 CodeMaid 和 Resharper 有一段时间了,并注意到它们都计算了 Cyclomatic Complexity。虽然,他们的计算总是不同的,所以我认为他们的计算逻辑也是如此。
但是,根据您的经验,哪一个更准确?似乎 Resharper 的通常更高,但 CodeMaid 更容易被发现。
也许他们中的一个人计算错了?或者只是不同,但可以接受?
提前致谢!
【问题讨论】:
标签:
visual-studio-2013
resharper
cyclomatic-complexity
codemaid
【解决方案1】:
CodeMaid 的实现我说不上来,但是 ReSharper 的实现是基于将源代码解析成抽象语法树,并根据这些信息实际构建一个控制流图(这个控制流图也用于空值分析,跟踪事物何时为空、不为空或未知,允许进行诸如“可能的 NullReferenceException”之类的检查)。我希望 ReSharper 的计算准确,但不确定。
也就是说,只要值之间的差异相当一致,那么确切的值是多少并不重要 - 只要您知道阈值意味着您拥有的代码太复杂。
【讨论】:
-
作为 CodeMaid 的作者,我同意citizenmatt 的评价。 ReSharper 的实现比我们自己的要复杂得多,它是基于检测到的关键字的快速而肮脏的近似。随着 VS2015 和 Roslyn 现在提供这些指标,我们的待办事项是利用新的 VS 指标并弃用我们自己的快速计算。 trello.com/c/wlC1l3RB