圈复杂度

160 阅读1分钟

前言

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