圈复杂度的计算方法相对直接,其基础公式为 V(G) = e - n + 2,其中 e 代表控制流图中的边的数量,n 则表示节点的数量。这个公式背后,其实反映了圈复杂度与“判定条件”数量的对应关系。更直观地讲,圈复杂度等同于判定节点的数量加一,也就是控制流图中的区域数。因此,我们可以用另一个公式来表示:V(G) = 区域数 = 判定节点数 + 1。
在处理多分支的 CASE 结构或 IF-ELSEIF-ELSE 结构时,计算判定节点的数量时,需要特别留意。每个 ELSEIF 语句和 CASE 语句都应该视为一个独立的判定节点。判定节点在模块的控制流图中具有明显特征,便于识别。因此,如果针对整个程序的控制流图计算圈复杂度 V(G),公式 V(G) = e - n + 2 更为适用。然而,如果关注的是模块本身的控制流图,那么直接统计判定节点的数量会更为简洁和直观。