SonarQube:认证认知复杂性

时间:2017-07-13 14:29:11

标签: sonarqube sonarqube-web

我理解认知复杂性是什么以及它将如何计算,但我现在不知道如何确定该度量的好价值,因此我的代码应该是多么复杂。我需要客观的方法来估计它,而不是相互比较项目。一种类似“复杂性/行代码”之类的公式。 或者,如果我为大项目定义质量门,我该如何计算它的值。

1 个答案:

答案 0 :(得分:8)

在方法级别,建议最大值为15。

在课程级别,它取决于您对包中的期望。

例如,在一个只包含带字段和简单getter或setter的类的包中,认知复杂度超过0(5?10?)的类可能值得再看一次。

另一方面,在包含业务逻辑类的包中,类得分> = ... 150(?)可能表示是时候查看拆分类了。

就项目的限制而言,这是无法回答的,并且让我们回到弗雷德布鲁克斯的基本与偶然的复杂性。基本上,完成工作需要一定的逻辑。超出此范围的复杂性是偶然的,理论上可以消除。弄清楚两者之间的差异是问题的症结所在,在寻找偶然的复杂性时,我会集中精力于复杂度超过默认阈值15的方法。

要回答您的初步问题,“应用程序的限制应该是什么?”,我会说应该没有。因为简单的计算器应用程序的基本复杂性远远低于航天飞机上的程序。如果你试图让航天飞机计划符合计算器门槛,你绝对会打破一些东西。

(披露:我是Cognitive Complexity

的主要作者