【问题标题】:Cyclomatic complexity of a code with multiple exit points具有多个退出点的代码的圈复杂度
【发布时间】:2010-01-15 17:06:58
【问题描述】:

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

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

干杯,

阿曼

【问题讨论】:

    标签: cyclomatic-complexity


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        干杯。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多