Cyclomatic Complexity
来自 SonarQube
函数的复杂度是通过函数体中的逻辑运算符(&&、||)和条件控制语句(if、while、do-while、for、?:、catch、case、default)的数量来衡量的。
计算规则:
默认复杂度是 1,每遇到一次上述符号,复杂度增加 1。
- 复杂度在 1 到 10 之间的方法被认为是简单的,易于理解和测试。
- 复杂度在 10 到 20 之间的值表示代码更复杂,但仍然可以理解;然而,由于代码可能包含更多的分支,测试变得更加困难。
- 复杂度在 20 及以上是典型的具有大量潜在执行路径的代码,只有经过极大的困难和努力才能完全掌握和测试。
- 复杂度大于 50,肯定是不可维护的,或者说非常然维护的。
错误提示
- The Cyclomatic Complexity of this function is 31 which is greater than 20 authorized.
- The Cyclomatic Complexity of this function is 23 which is greater than 20 authorized.
分析

其中:
+1: function definition
表示定义函数时,复杂度默认为 1。
+1: if statement
表示识别到
if语句,复杂度加 1。+1: while loop
表示识别到
while或do-while语句,复杂度加 1。+1: conditional operator
表示识别到
? :语句,复杂度加 1。+1: logical operator
表示识别到
&&或||,复杂度加 1。+1: for loop
表示识别到
for (;;)语句,复杂度加 1。
测试
测试代码:
| |
检查结果:


版权声明
本文为「Zeepunt 日常随笔」的原创文章,遵循 CC BY-NC-ND 4.0 许可协议。允许在署名作者、注明原文链接且不作任何更改的前提下非商业性地分享本文。