环形复杂度数

时间:2014-12-14 19:51:51

标签: java numbers complexity-theory

嗨,我刚刚学习了Cyclomatic Complexity而我却得不到它。 我在互联网上阅读了一些wikipediaposts和一些随机帖子,我认为总有不同的解决方案。

首先我要算什么? 在许多页面上,它表示我应该从1开始为该函数,然后为每个添加,如果我发现这是正确的吗?

http://docs.klocwork.com/Insight-10.0/McCabe_Cyclomatic_Complexity 所以在这等于CCN应该是5这是正确的还是我错过了什么? 我只是不知道该怎么算,什么不是因为互联网上有如此不同的帖子。 如果这个问题被问到bevore但是我无法找到它。

所以有一个愉快的星期天,享受你的时间 有没有像一个简单的"技巧"怎么看得很快..只是想知道

http://s16.postimg.org/ufouegwut/number.png) 这是剪辑的链接我希望这不是一个问题,我不只是在这里编写代码

1 个答案:

答案 0 :(得分:1)

函数的圈复杂度是代码可以通过函数获取的路径数。

你指出的例子:

Function 
  While
    If
    Else
    Endif
  Endwhile
End Function

是否具有3的圈复杂度,这是因为有一条路没有击中while,一条路径击中了while,而一条路径击中了if的内部(else是前一条路径的一部分)打了一会儿而不是if)。

我发现最简单的方法是计算可能分支的数量:whileforifswitch个案例(不包括default case),catch和三元运算符,然后加1。

以下是GMetrics计数的分支:

  • if statement
  • while statement
  • for statement
  • 案件陈述
  • catch statement
  • &安培;&安培;和||布尔运算
  • ?:三元运算符和?:Elvis运算符。
  • ? null-check operator

编辑:刚刚注意到您的示例实际上是在帖子的末尾,正如您所说的那样,由于您有4个分支(4个if语句),因此具有5的循环复杂度,因此4 + 1 = 5