2

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

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

干杯,

阿曼

4

3 回答 3

5

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

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

于 2010-01-15T17:21:01.233 回答
1

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

于 2010-01-15T17:18:53.153 回答
0

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

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

干杯。

于 2010-01-16T10:42:41.243 回答