嗨,我刚刚学习了Cyclomatic Complexity而我却得不到它。 我在互联网上阅读了一些wikipediaposts和一些随机帖子,我认为总有不同的解决方案。
首先我要算什么? 在许多页面上,它表示我应该从1开始为该函数,然后为每个添加,如果我发现这是正确的吗?
http://docs.klocwork.com/Insight-10.0/McCabe_Cyclomatic_Complexity 所以在这等于CCN应该是5这是正确的还是我错过了什么? 我只是不知道该怎么算,什么不是因为互联网上有如此不同的帖子。 如果这个问题被问到bevore但是我无法找到它。
所以有一个愉快的星期天,享受你的时间 有没有像一个简单的"技巧"怎么看得很快..只是想知道
http://s16.postimg.org/ufouegwut/number.png) 这是剪辑的链接我希望这不是一个问题,我不只是在这里编写代码
答案 0 :(得分:1)
函数的圈复杂度是代码可以通过函数获取的路径数。
你指出的例子:
Function
While
If
Else
Endif
Endwhile
End Function
是否具有3的圈复杂度,这是因为有一条路没有击中while,一条路径击中了while,而一条路径击中了if的内部(else是前一条路径的一部分)打了一会儿而不是if)。
我发现最简单的方法是计算可能分支的数量:while
,for
,if
,switch
个案例(不包括default
case),catch
和三元运算符,然后加1。
以下是GMetrics计数的分支:
编辑:刚刚注意到您的示例实际上是在帖子的末尾,正如您所说的那样,由于您有4个分支(4个if语句),因此具有5的循环复杂度,因此4 + 1 = 5