问题标签 [cyclomatic-complexity]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
59372 浏览

java - 我怎样才能降低这个的循环复杂度?

我有一个接收对象并根据它检测到的对象类型执行某些操作的方法:

如何降低圈复杂度?我四处寻找,但找不到任何有用的东西。

0 投票
5 回答
586 浏览

linq - 您会将您的 LINQ 查询抽象为扩展方法吗

在我当前的项目中,我们为代码指标“可维护性指数”和“循环复杂性”设定了一些目标。可维护性指数应为 60 或更高,循环复杂度应为 25 或更低。我们知道 60 或更高的可维护性指数是一个相当高的指数。

我们还使用很多 linq 来过滤/分组/选择实体。我发现这些 linq 查询在可维护性指数上的得分并不高。将此查询抽象为扩展方法给了我更高的可维护性指数,这很好。但在大多数情况下,扩展方法不再是通用的,因为我将它们与我的类型而不是通用类型一起使用。

例如下面的 linq-query vs 扩展方法:

LINQ查询

扩展方法:

扩展方法使我的可维护性指数提高了 6 分,并提供了流畅的语法。另一方面,我必须添加一个静态类,它不是通用的。

关于哪种方法会让您受益的任何想法?或者可能对如何重构 linq 查询以提高可维护性索引有不同的想法?

0 投票
1 回答
3535 浏览

pseudocode - 计算圈复杂度 [伪代码]

下面伪代码的圈复杂度为“4”。

我们如何计算它?听说是条件数+1?我们计算那些 else 语句吗?我很困惑。

编辑:案例2:如果我们有:

圈复杂度是多少?2?还是3?

0 投票
2 回答
1511 浏览

r - 你如何计算 R 函数的圈复杂度?

圈复杂度衡量通过一个函数可以采用多少个可能的分支。是否有现有的函数/工具来计算 R 函数?如果没有,建议以最佳方式编写。

一个廉价的开始是计算所有出现的if,ifelseswitch在你的函数中。但是,要获得真正的答案,您需要了解分支何时开始和结束,这要困难得多。也许一些 R 解析工具会让我们开始?

0 投票
2 回答
4397 浏览

objective-c - 是否有任何工具可以可视化代码复杂性或在 Objective-C 中绘制方法调用?

我希望展示代码库的可视化,它可以显示过于复杂和相互交织的区域。

我知道 clang 是什么,但我不确定在这种情况下它是否能给我想要的东西。

0 投票
6 回答
2223 浏览

c# - 为什么我要将此代码重构为 Cyclomatic Complexity 为 58

我读到拥有 CC 10 或更少的代码将是高度可维护的代码。但是我写的方法有CC 58。感谢VS 2010代码分析工具。就我的理解而言,我相信我写的方法非常简单、可读和可维护。因此,我不喜欢重构代码。但由于 CC 高于可接受的水平,我想知道为什么要重构这种方法。我正在学习改进我的代码的东西如果我有错误,请纠正我。这是代码。

0 投票
1 回答
521 浏览

c# - C# 代码表达式的完整列表,其中 +1 表示循环复杂度

我需要为我的 C# 项目中的每个方法构建一个控制流程图(带有节点和边的简单流程图),以演示计算圈复杂度的图形方式。

我首先使用 VS 2010 计算了圈复杂度,然后我构建了图形以确保结果值与从 VS 计算的值相同。但是,我在这里遇到了一些问题,因为我不确定哪个表达式实际上被认为是圈复杂度的 +1。

让我们看一个例子:

对于这种方法,VS计算的圈复杂度为10。但是,只有7个case语句,我不明白其他表达式对复杂度的贡献。

我搜索了许多来源,但无法获得将被计算在内的所有表达式的完整列表。

有人可以帮忙吗?或者有什么工具可以从 C# 代码生成控制流程图?

先感谢您...

0 投票
1 回答
235 浏览

c# - 从哪里获得 C# 的 N'SIQ?

N'SIQ Code Metric Collector (2010-03-31内置2.1.4)的最新官方版本不支持C#。但是互联网上有证据表明有人正在使用适用于HudsonJenkins的 NSIQ 收集器插件以及C# 和 Objective C 等不受支持的语言。我在哪里可以找到支持 C# 的 N'SIQ 构建,即使它是非官方构建?

0 投票
1 回答
283 浏览

java - java圈复杂度工具使用完全限定的类名

大多数 javancss 工具使用源代码中给出的方法参数。变量名被删除,但类名不是 FQN。

例如,给定以下课程。

Javancss 产生输出

请注意,show2 仅带有文件,而不是 java.io.File 对于我的处理,我需要完全限定的名称。有没有可以在报告中输出 FQN 的 ncss 工具?(我尝试了 cobertura 内置的 javacss 和 checkstyle .. 都表现相同)

编辑(背景)我们现在为每种方法创建 cobertuta 覆盖率报告。我们希望报告具有高复杂性和低覆盖率的方法。当我尝试映射方法的CCN时,上述情况造成了一些困难。它(部分)通过只比较类名而不是 FQN 来解决。

0 投票
4 回答
59445 浏览

cyclomatic-complexity - 圈复杂度的计算

我处于圈复杂度(CC)的学习阶段。为了实践,我正在计算 2 个示例的圈复杂度,并想确认我的答案是否正确......

参考维基百科,CC 由M = E − N + 2Pwhere 给出:

  • E = 图的边数
  • N = 图的节点数
  • P = 连接组件的数量

请帮忙。

示例 1

这里,E = 8,N = 9 和 P = 1。因此 M = 8 - 9 + (2x1) = 1。

示例 2:

示例 2

这里 E = 11,N = 10 和 P = 1。因此 M = 10 - 11 + (2x1) = 1。

因此,对于这两个示例,CC 都是 1。请让我知道我的计算是否正确。