循环复杂度

17 Mar 2025 | 阅读 2 分钟

圈复杂度是一种用于衡量程序复杂度的软件度量。Thomas J. McCabe 在 1976 年开发了这种度量。McCabe 将计算机程序解释为一组强连接的有向图。节点表示没有分支的源代码部分,弧表示程序执行期间可能的控制流传输。程序图的概念已用于此度量,它用于测量和控制通过程序的路径数量。计算机程序的复杂性可以与图的拓扑复杂性相关联。

如何计算圈复杂度?

McCabe 提出了图论的圈数 V (G) 作为软件复杂度的指标。圈数等于其图形表示中通过程序的线性独立路径的数量。对于程序控制图 G,圈数 V (G) 给出为

              V (G) = E - N + 2 * P

E = 图 G 中的边数

N = 图 G 中的节点数

P = 图 G 中连接的组件数。

示例

Cyclomatic Complexity

圈复杂度的属性

以下是圈复杂度的属性

  1. V (G) 是图中独立路径的最大数量
  2. V (G) >=1
  3. 如果 V (G) = 1,则 G 将有一条路径
  4. 将复杂度降至最低 10