前言
zhuanlan.zhihu.com/p/139386961
节点判定法
圈复杂度的计算还有另外一种更直观的方法,因为圈复杂度所反映的是“判定条件”的数量,所以圈复杂度实际上就是等于判定节点的数量再加上1。
对应的计算公式为:V (G) = P + 1
其中 P 为判定节点数,常见的判定节点有:
- if 语句
- while 语句
- for 语句
- case 语句
- catch 语句
- and 和 or 布尔操作
- ? : 三元运算符
对于多分支的 case 结构或 if - else if - else 结构,统计判定节点的个数时需要特别注意:必须统计全部实际的判定节点数,也即每个 else if 语句,以及每个 case 语句,都应该算为一个判定节点。
...
if (a === 1 && b === 2) {
} else {
}
// 圈复杂度为 2 + 1 + 1
if (a === 1 && b === 2) 判定条件有2个,圈复杂度算2