伪码的环形复杂度计算

Rav*_*hta 5 cyclomatic-complexity

while(m<n)
  if(x>y) AND (a<b) then
    a=a+1
    y=y-1
  end if 
m=m+1
end while
Run Code Online (Sandbox Code Playgroud)

我正在计算上面伪代码的Cyclomatic Complexity,我用快捷方法得出结论

M =(决策点)+ 1

其中M是环状复杂性

我有答案3

这是真的吗?

Jos*_*Sol 7

首先,让我们确定每一个陈述.我在这里使用字母,但它可能是数字.

A    while(m<n)              
B,C    if(x>y) AND (a<b) then
D        a=a+1
E        y=y-1
       end if 
F      m=m+1
G    end while
Run Code Online (Sandbox Code Playgroud)
  • 请注意,第二个语句有两个条件/谓词/决策点(或者你称之为的任何一个),所以我将它们命名为B和C.
  • 我将使用end while(G)作为退出点.

现在我们可以绘制控制流图(CFG):

CFG

最后,以三种不同的方式计算Cyclomatic Complexity(M):

  1. M = E-V + 2*K = 9-7 + 2*1 = 4

  2. M = C + 1 = 3 + 1 = 4

  3. M =区域(CFG)= 4

哪里:

  • E =边数

  • V =顶点数

  • K =图形组件的数量

  • C =条件/决策点的数量