cyclomatic-complexity相关内容

具有最小圈复杂度的条件日志记录

阅读后“你对圈复杂度的/一个好的限制是什么?",我意识到我的许多同事对这个新的 QA 项目的政策:不再有 10 每个函数的圈复杂度. 含义:不超过10个'if'、'else'、'try'、'catch'等代码工作流分支语句.对.正如我在“您是否测试私有方法?"中所述,这样的政策有很多好的副作用. 但是:在我们(200 人 - 7 年)项目开始时,我们很高兴地进行日志记录(不,我们不能轻 ..

什么是圈复杂度?

我时不时看到的一个术语是“圈复杂度".在 SO 上,我看到了一些关于“如何计算语言 X 的 CC"或“我如何用最少的 CC 做 Y"的问题,但我不确定我是否真的理解它是什么. 在 NDepend 网站 上,我看到一个解释,基本上是“方法中的决策.每个 if、for 和 & 等都会为 CC“分数"增加 +1.真的是这样吗?如果是,为什么这很糟糕?我可以看到人们可能想要保留为使代码易于理解,if ..

正则表达式的计算复杂度

正则表达式很快变得太复杂(对我而言)以至于无法理解.甚至像 [ab] [cd] 这样简单的东西,也有几个逻辑分支.我的目标是改善代码库的可维护性,因此对这些问题的答案可以帮助我们检测和修复复杂的代码: 是否存在计算复杂性指标(类似于圈复杂度),其中包括正则表达式固有的复杂性? 有没有工具产生正则表达式的复杂度数? 是否有工具可以建议对正则表达式进行简化? 解决方案 您可以尝试使用 ..

多个return语句的圈复杂度

我读到了关于循环复杂度和多个返回语句的信息,但是由于对多个返回语句的不同见解,我有点困惑. 首先,在进行循环复杂度计算时,我是否应该将每个return语句都视为端点,这会增加我认为的复杂度?在公式(M = E-N + 2 * P)中,当我添加一个return语句时,它增加了一个,对吗? 用于简单健全性检查的 Guard子句添加了另一种方法,而不是嵌套的if子句,以便尽快返回.但是,这会增 ..
发布时间:2021-04-30 19:27:56 其他开发

如果计算流复杂度时控制流程图由多个起始和/或终止节点组成,会发生什么情况

我想知道在控制流程图中有多个开始或停止节点时,它将如何影响环复杂性,如果您能解释环复杂性与开始/停止节点之间的关系,将有很大帮助。 / p> 解决方案 •控制流程图可以由许多开始和停止组成。但是根据麦凯布(McCabe)的理论,如果它由多个起点和终点组成,则不满足该公式。 ..

Visual Studio 2013 Ultimate中CA1502的自定义阈值

此问题: CA1502的自定义阈值 讨论了如何设置自定义代码分析中代码度量标准规则的阈值。 我也有同样的问题,但认为旧问题已经过时了。 要重复: 特别是,当方法具有 时,我们希望构建失败代码复杂度超过20。不幸的是,规则CA1502的 阈值为25: 当圈复杂度大于$ b $时,该规则将报告违规b大于25。 我们可以以某种方式更改它吗? 答案是编辑.fxco ..

具有多个出口点的代码的循环复杂度

如何找到具有多个出口点的函数的圈复杂度? Wiki页面上说 p-s + 2,其中p是决策点数,s是退出点数。 但是更多出口点是否不应该增加环行复杂性,因为它可能导致更独立的路径? 干杯, 阿曼 解决方案 为什么不尝试 NDepend ?它将计算圈复杂度和许多其他代码指标。 ..
发布时间:2020-06-11 01:47:06 其他开发

Java开关循环复杂度与性能

我这里有一个案例,其中switch语句包含大约40个案例,每个案例都基于输入返回不同的配置对象。该方法显示出度量标准的环复杂性过高,通常我会将其更改为处理程序对象映射。但是此开关位于其中性能至关重要的一段代码中,因此我想到了一个问题:如何将HashMap查找和处理程序调用与性能方面的开关块进行比较。有人比较过吗?值得考虑吗?还是对于有限数量的int键有更快的查找对象? 干杯, Kai ..

如何计算Clojure函数的圈复杂度?

计算Clojure函数的圈复杂度的合理方法是什么?根据“ if”和“ cond”之类的函数来计算决策点很容易,但是使用宏开始变得棘手。有人尝试过使用Clojure或其他功能语言吗? 解决方案 宏是一种抽象,不应该用于CC计算, 话虽如此,我认为CC对Clojure并不是特别有趣。我对测量过度使用可变性的东西更感兴趣。 ..
发布时间:2020-06-11 01:47:02 其他开发

在Java中自动计算圈复杂度的工具?

是否有可用于Java的工具,可以自动确定给定Java代码的循环复杂性?我已经在网上找到了工具,但尚未找到。 解决方案 我使用Sonar(我的首选方法)。有一些插件可以在构建时“自动”生成报告(即ANT / Maven等)。 另一篇有关如何在仪表板上显示抄送的相关文章:如何列出最复杂的方法 我过去使用的另一个工具是Corbetura。不过,您必须具有良好的单元测试,并且发现CC的 ..
发布时间:2020-06-11 01:46:58 Java开发

使用jar文件的圈复杂度

我正在从事一个项目,该项目需要我发现Apache ant(版本1.1至1.6)的复杂性。我被要求为此目的使用jar文件。我使用了一些工具(Xdepend试用版和Cyvis)来查看结果。然后,我尝试使用Ant Ver1.6的源代码中的结果验证结果。为了分析源代码,我使用了Netbeans插件,还手动找到了某些方法的CC。 我发现在很多情况下,jar文件中的CC几乎是相同,但是在某些方面存在很大 ..
发布时间:2020-06-11 01:46:55 Java开发

衡量SQL语句的复杂性

大多数编程语言中方法的复杂性可以使用静态源代码分析器以循环复杂性进行度量。是否有类似的度量标准来衡量SQL查询的复杂性? 它很简单,可以衡量查询返回的时间,但是如果我只是想能够量化查询的复杂程度? [Edit / Note] 虽然获得执行计划很有用,但这不一定是我要做的在这种情况下试图识别。我不是在寻找服务器执行查询的难易程度,而是在寻找一种指标,该指标可以确定开发人员编写查询的难易 ..
发布时间:2020-06-11 01:46:45 其他开发