问题标签 [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.
java - 我怎样才能降低这个的循环复杂度?
我有一个接收对象并根据它检测到的对象类型执行某些操作的方法:
如何降低圈复杂度?我四处寻找,但找不到任何有用的东西。
linq - 您会将您的 LINQ 查询抽象为扩展方法吗
在我当前的项目中,我们为代码指标“可维护性指数”和“循环复杂性”设定了一些目标。可维护性指数应为 60 或更高,循环复杂度应为 25 或更低。我们知道 60 或更高的可维护性指数是一个相当高的指数。
我们还使用很多 linq 来过滤/分组/选择实体。我发现这些 linq 查询在可维护性指数上的得分并不高。将此查询抽象为扩展方法给了我更高的可维护性指数,这很好。但在大多数情况下,扩展方法不再是通用的,因为我将它们与我的类型而不是通用类型一起使用。
例如下面的 linq-query vs 扩展方法:
LINQ查询
扩展方法:
扩展方法使我的可维护性指数提高了 6 分,并提供了流畅的语法。另一方面,我必须添加一个静态类,它不是通用的。
关于哪种方法会让您受益的任何想法?或者可能对如何重构 linq 查询以提高可维护性索引有不同的想法?
pseudocode - 计算圈复杂度 [伪代码]
下面伪代码的圈复杂度为“4”。
我们如何计算它?听说是条件数+1?我们计算那些 else 语句吗?我很困惑。
编辑:案例2:如果我们有:
圈复杂度是多少?2?还是3?
r - 你如何计算 R 函数的圈复杂度?
圈复杂度衡量通过一个函数可以采用多少个可能的分支。是否有现有的函数/工具来计算 R 函数?如果没有,建议以最佳方式编写。
一个廉价的开始是计算所有出现的if
,ifelse
或switch
在你的函数中。但是,要获得真正的答案,您需要了解分支何时开始和结束,这要困难得多。也许一些 R 解析工具会让我们开始?
objective-c - 是否有任何工具可以可视化代码复杂性或在 Objective-C 中绘制方法调用?
我希望展示代码库的可视化,它可以显示过于复杂和相互交织的区域。
我知道 clang 是什么,但我不确定在这种情况下它是否能给我想要的东西。
c# - 为什么我要将此代码重构为 Cyclomatic Complexity 为 58
我读到拥有 CC 10 或更少的代码将是高度可维护的代码。但是我写的方法有CC 58。感谢VS 2010代码分析工具。就我的理解而言,我相信我写的方法非常简单、可读和可维护。因此,我不喜欢重构代码。但由于 CC 高于可接受的水平,我想知道为什么要重构这种方法。我正在学习改进我的代码的东西如果我有错误,请纠正我。这是代码。
c# - C# 代码表达式的完整列表,其中 +1 表示循环复杂度
我需要为我的 C# 项目中的每个方法构建一个控制流程图(带有节点和边的简单流程图),以演示计算圈复杂度的图形方式。
我首先使用 VS 2010 计算了圈复杂度,然后我构建了图形以确保结果值与从 VS 计算的值相同。但是,我在这里遇到了一些问题,因为我不确定哪个表达式实际上被认为是圈复杂度的 +1。
让我们看一个例子:
对于这种方法,VS计算的圈复杂度为10。但是,只有7个case语句,我不明白其他表达式对复杂度的贡献。
我搜索了许多来源,但无法获得将被计算在内的所有表达式的完整列表。
有人可以帮忙吗?或者有什么工具可以从 C# 代码生成控制流程图?
先感谢您...
c# - 从哪里获得 C# 的 N'SIQ?
N'SIQ Code Metric Collector (2010-03-31内置2.1.4)的最新官方版本不支持C#。但是互联网上有证据表明有人正在使用适用于Hudson和Jenkins的 NSIQ 收集器插件以及C# 和 Objective C 等不受支持的语言。我在哪里可以找到支持 C# 的 N'SIQ 构建,即使它是非官方构建?
java - java圈复杂度工具使用完全限定的类名
大多数 javancss 工具使用源代码中给出的方法参数。变量名被删除,但类名不是 FQN。
例如,给定以下课程。
Javancss 产生输出
请注意,show2 仅带有文件,而不是 java.io.File 对于我的处理,我需要完全限定的名称。有没有可以在报告中输出 FQN 的 ncss 工具?(我尝试了 cobertura 内置的 javacss 和 checkstyle .. 都表现相同)
编辑(背景)我们现在为每种方法创建 cobertuta 覆盖率报告。我们希望报告具有高复杂性和低覆盖率的方法。当我尝试映射方法的CCN时,上述情况造成了一些困难。它(部分)通过只比较类名而不是 FQN 来解决。
cyclomatic-complexity - 圈复杂度的计算
我处于圈复杂度(CC)的学习阶段。为了实践,我正在计算 2 个示例的圈复杂度,并想确认我的答案是否正确......
参考维基百科,CC 由M = E − N + 2P
where 给出:
- E = 图的边数
- N = 图的节点数
- P = 连接组件的数量
请帮忙。
这里,E = 8,N = 9 和 P = 1。因此 M = 8 - 9 + (2x1) = 1。
示例 2:
这里 E = 11,N = 10 和 P = 1。因此 M = 10 - 11 + (2x1) = 1。
因此,对于这两个示例,CC 都是 1。请让我知道我的计算是否正确。