具有多个出口点的代码的循环复杂性

时间:2010-01-15 17:06:59

标签: cyclomatic-complexity

如何找到具有多个出口点的函数的圈复杂度? 维基页面说  p-s + 2其中p是决策点的数量,s是出口点的数量。

但是,不应该有更多的出口点增加圈复杂度,因为它可能会导致更独立的路径?

干杯,

阿曼

3 个答案:

答案 0 :(得分:5)

CC测量线性独立路径。退出点不会添加到代码的路径,它们会终止路径,从而减少CC(或者至少,它们肯定不会增加 CC)。

换句话说,添加退出点的唯一方法是添加更多路径(IF等条件)。否则,“裸”出口点之后的代码无法访问,因此条件会增加复杂性,而不是退出点。

答案 1 :(得分:1)

为什么不尝试NDepend的试用?它将计算圈复杂度和许多其他代码度量。

答案 2 :(得分:0)

谢谢迈克尔。我在发布问题后意识到自己的错误。我的错误源于对JavaNcss(使用源文件)和Xdepend的观察 (它使用jar文件)似乎都高估了一段具有多个退出点的代码的CC。我已发布代码here。 但是使用公式p-s + 2,答案似乎是4.我是否缺少一些简单的解释?

@Richard:我尝试过Xdepend(Ndepend的非.NET版本)。它看起来是个不错的工具。但是当它使用jar文件时,它会过高估计CC(他们在文档中已经接受了)。在这个阶段,我正在探索不同的工具。你知道哪个更好吗?

干杯。