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

c++ - 是否有任何工具可以在 Pro*C++ 源代码上进行圈计算?

是否有任何工具能够对 Pro*C++ 源代码进行代码度量?

我无法通过谷歌找到任何具体的东西。

有人对这个有经验么?

0 投票
15 回答
10176 浏览

refactoring - 你觉得圈复杂度是一个有用的衡量标准吗?

我一直在尝试测量大型代码库的圈复杂度。

圈复杂度是通过程序源代码的线性独立路径的数量,并且有许多免费工具可供您选择的语言。

结果很有趣,但并不令人惊讶。也就是说,我知道最毛茸茸的部分实际上是最复杂的(评分> 50)。但是我发现有用的是每个方法都分配了一个具体的“坏”数字,作为我在决定从哪里开始重构时可以指出的东西。

你使用圈复杂度吗?你发现的最复杂的代码是什么?

0 投票
4 回答
1047 浏览

c# - 用于计算代码块的代码复杂度的现有库

我得到一个包含任意数量代码的字符串。我想计算一个代表该字符串的代码复杂度的数字。就像是:

我意识到有很多工具可以为你做到这一点。 这些工具对我不起作用,因为我想以编程方式进行。 我希望该库位于 C# 中,但此时可以使用任何东西。

提前致谢!

0 投票
5 回答
17052 浏览

c# - 确定代码循环复杂度的最佳工具

人们能否建议在 C# winforms 代码库中确定循环复杂性的最佳工具。

0 投票
15 回答
19000 浏览

language-agnostic - 什么是圈复杂度?

我不时看到的一个术语是“循环复杂性”。在这里,我看到了一些关于“如何计算语言 X 的 CC”或“我如何用最少的 CC 做 Y”的问题,但我不确定我真的理解它是什么。

NDepend 网站上,我看到一个解释,基本上是说“方法中的决策数量。每个 if、for、&& 等都会在 CC“分数”上加 1。真的是这样吗?如果是,为什么是这很糟糕吗?我可以看到人们可能希望将 if 语句的数量保持在相当低的水平,以使代码易于理解,但这真的是一切吗?

还是有更深层次的概念?

0 投票
4 回答
11235 浏览

refactoring - 您维护的任何功能的最高圈复杂度是多少?你将如何重构它?

前几天,我正在使用NDepend(很棒的工具检查一下)对我维护的遗留系统进行一些探索。我的发现几乎让我在屏幕上喷了一口咖啡。该系统中按圈复杂度降序排列的前 3 个函数是:

  1. SomeAspNetGridControl.CreateChildControls (CC of 171!!!)
  2. SomeFormControl.AddForm (CC of 94)
  3. SomeSearchControl.SplitCriteria (CC of 85)

我的意思是171,哇!它不应该低于20或什么的吗?所以这让我很奇怪。您维护或重构的最复杂的功能是什么?您将如何重构这样的方法?

注意:我测量的 CC 是代码,而不是 IL。

0 投票
2 回答
16311 浏览

c# - Visual Studio 中的代码度量计算

以下代码指标计算的首选分数范围是多少

  • 可维护性指数
  • 圈复杂度
  • 继承深度
  • 类耦合
0 投票
2 回答
1081 浏览

java - 使用 jar 文件的圈复杂度

我正在做一个项目,该项目需要我找到 Apache ant 的圈复杂度(版本 1.1 到 1.6)。我被要求为此目的使用 jar 文件。我使用了几个工具(Xdepend 试用版和 Cyvis)来查看结果。然后我尝试使用 Ant Ver1.6 源代码的结果来验证结果。为了分析源代码,我使用了 Netbeans 插件,并且还手动找到了一些方法的 CC。

我发现在许多情况下,jar 文件中的 CC 几乎相同,但在某些情况下存在很大差异。我检查了一种这样的方法,发现它包含很少的 try 和 catch 块。我的问题是:

  1. java编译器是否进行了可能主要影响CC值的优化(比如循环展开)?是否建议使用 jar 文件进行此类分析?
  2. try 和 catch 块是否存在一些特定问题,在这种情况下我可以考虑其他分析方法?
  3. 有没有更好(更准确)的工具来进行这种分析?

请分享您在此主题上的经验。提前致谢。

干杯

0 投票
3 回答
1190 浏览

cyclomatic-complexity - 具有多个退出点的代码的圈复杂度

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

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

干杯,

阿曼

0 投票
2 回答
2368 浏览

cyclomatic-complexity - 圈复杂度的常见原因及其解决方案

在工作中,我们正在研究导致高圈复杂度的常见问题。例如,具有较大的 if-else 语句会导致高圈复杂度,但可以通过用多态替换条件来解决。你还发现了哪些其他例子?