如何找到具有多个出口点的函数的圈复杂度?wiki 页面说 p-s+2 其中 p 是决策点的数量,s 是退出点的数量。
但是更多的出口点不应该增加圈复杂度,因为它可能导致更多的独立路径吗?
干杯,
阿曼
如何找到具有多个出口点的函数的圈复杂度?wiki 页面说 p-s+2 其中 p 是决策点的数量,s 是退出点的数量。
但是更多的出口点不应该增加圈复杂度,因为它可能导致更多的独立路径吗?
干杯,
阿曼
CC 测量线性独立的路径。出口点不会向代码添加路径,它们会终止路径,从而减少 CC(或者至少,它们当然不会增加CC)。
换句话说,添加出口点的唯一方法是添加更多路径(IF 等条件)。否则,“裸”退出点之后的代码是无法访问的,因此增加复杂性的是条件,而不是退出点。
为什么不尝试试用NDepend呢?它将计算圈复杂度和许多其他代码指标。
谢谢迈克尔。发布问题后,我意识到了我的错误。我的错误源于观察到 JavaNcss(使用源文件)和 Xdepend(使用 jar 文件)似乎都高估了具有多个退出点的一段代码的 CC。我已经在 这里发布了代码。但是使用公式 p-s+2 答案似乎是 4。我缺少一些简单的解释吗?
@Richard:我尝试过 Xdepend(Ndepend 的非 .NET 版本)。它看起来是一个很好的工具。但是当它使用 jar 文件时,它高估了 CC(他们已经在他们的文档中接受了)。在这个阶段,我正在探索不同的工具。你知道有更好的吗?
干杯。