问题标签 [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 投票
3 回答
4553 浏览

c# - 如何降低 if-else 语句中的圈复杂度

在这种情况下,您将如何降低循环复杂度

假设我有 30 个或更多。

0 投票
4 回答
30995 浏览

c# - 在 switch 与字典中的 Func 值,哪个更快,为什么?

假设有以下代码:

通过迭代这两种方法并进行比较,我发现字典稍微快了一点,即使“a”、“b”、“c”、“d”被扩展为包含更多键。为什么会这样?

这与圈复杂度有关吗?是因为jitter只将字典中的return语句编译为本机代码一次吗?是不是因为字典的查找是 O(1),而switch 语句可能不是这种情况?(这些只是猜测)

0 投票
2 回答
809 浏览

unit-testing - 测量数据映射函数和闭包的圈复杂度

根据圈复杂度的基本规则,以下代码的复杂度应为 2(只有一个分支点 - for 循环)。

很多现代框架等都提供了数据映射功能,比如或者框架jQuery.each()中的大部分方法。Underscore.js考虑以下代码:

按照圈复杂度的典型规则,第二个例子的CC度量为1。工作完全相同,函数的人为复杂度根本没有改变。我所做的只是将一种循环数据的方式换成另一种循环数据的方式。

同样考虑这个人为的例子,我们将原始函数的内部包装在一个自调用闭包中,为外部方法生成 1 的圈复杂度,而实际上并未改变方法的工作方式:

圈复杂度的真正度量是否应该包括对数据映射/减少方法的考虑,例如jQuery.each()特别是在使用匿名局部闭包时?

也许闭包应该将其复杂性导出到关闭的父级。另外,也许一般的方法应该能够定义一个导出复杂度,该复杂度被添加到调用它的任何函数的复杂度中——例如jQuery.each(),导出复杂度可能应该为 1,以便使用它代替正常循环计数复杂度相同.

0 投票
2 回答
899 浏览

vb6 - Legacy VB6.0 应用程序中的圈复杂度

建议任何 应该支持VB6.0的工具

我正在寻找以下指标

  1. 代码分析

  2. 代码可维护性指数

  3. 圈复杂度

0 投票
0 回答
222 浏览

xml - CyVis 0.9 Ant 任务无法生成 html 报告

我目前正在尝试为使用 CyVis 0.9 作为其工具之一的 Java 项目制作 Ant 构建文件。我遇到了一个问题,我无法让它生成 html 报告。下面是我的 build.xml 文件中的确切代码,该文件几乎完全取自 CyVis 网站上的教程。目前,它正在生成文本报告就好了;但是,文本报告的帮助不大。

我已经在团队成员的计算机上运行了完全相同的代码,并且运行良好。从那以后,我重新安装了 CyVis 和 Ant,但运气不佳。

运行构建后,我得到以下输出:

注释掉 html 报告时,构建成功,但只生成文本报告。我没有运气研究这个错误,也看不出我和我同事的设置有什么不同。

0 投票
3 回答
9162 浏览

java - java中自动计算圈复杂度的工具?

是否有任何可用于 Java 的工具可以自动确定给定 Java 代码的圈复杂度?我在网上找了工具,还没有找到。

0 投票
2 回答
10401 浏览

cyclomatic-complexity - IF((A>B) AND (C>D)) 和 IF((A>B) OR (C>D)) 的圈复杂度

我想知道两段代码的圈复杂度,

据我所知,上述代码的圈复杂度=2+1=3,

另一个代码

上述代码的复杂度为=4+1=5,

上述复杂性是否正确?

0 投票
1 回答
930 浏览

c# - 如何在 Jenkins 中获得 C# 代码的代码指标?

如何在 Jenkins 中实现 C# 代码的代码指标,例如循环复杂度

0 投票
0 回答
284 浏览

c# - 如何自动提高 c# 控制流复杂度?

我搜索了一种自动工具来重构和重新排列 c# 代码块以提高控制流的复杂性。我有一个凌乱的 C# 代码,它使用“GOTO”和“switch”而不是“while & for”循环:

这是非常复杂的自动生成的意大利面条 C# 代码。我尝试通过 Re-sharper & VS 手动改进它,并用“For”循环替换“GOTO”循环并重新排列代码块,我得到了这个代码:

我想让代码更具可读性和格式。但是手动更改非常困难且耗时。那么是否有任何工具可以分析逻辑并自动执行此过程?

谢谢

0 投票
1 回答
461 浏览

c#-4.0 - 静态字典如何具有圈复杂度?

我有以下课程:

但是,Microsoft 代码分析将此标记为具有 27 的圈复杂度。我不明白为什么一系列带有委托的 Add 调用会导致如此高的圈复杂度。

我能做些什么来降低圈复杂度?