Intellij Idea Intellij中的圈复杂性

r9f1avp5  于 2023-06-21  发布在  其他
关注(0)|答案(1)|浏览(220)

我今天在做一个作业,基本上要求我们写一个Java程序,检查HTML语法在文本文件中是否有效。非常简单的赋值,我做得非常快,但是这么快我把它做得非常复杂(很多循环和if语句)。我知道我可以让它更简单,在提交之前我会的,但是在我的拖延中,我开始下载插件,看看他们能给予我什么信息。
我下载了两个我特别好奇的- CodeMetrics和MetricsReloaded。我想知道它产生的这些数字到底与什么相关。我看到了一个半相似的帖子,我读了它以及链接的文章,但我仍然有一些困难理解一些事情。也就是说,前两列(CogC和ev(G))以及其他两列(iv(G)和v(G))的含义。
度量重新加载的方法度量:

度量重新加载的类度量:

前面的数字来自MetricsReloaded,但另一个应用程序CodeMetrics也计算圈复杂度,它给出的数字略有不同。我想知道这些数字是如何相互关联的,如果有人能给予一个简短的一般性解释。
CodeMetrics分析结果:

最后一个问题是时间复杂度。我对圈复杂度的理解是,它是可能的执行路径的数量,它由条件的数量和它们的嵌套方式决定。看起来不像,但这与时间复杂度有任何关系吗?如果是这样的话,它们之间是否有一种可以轻松实现的转换?如果没有,这些插件(或IntelliJ中的任何其他插件)中是否有一种方法可以自动计算时间复杂度?

rsaldnfx

rsaldnfx1#

这里要回答的第一个问题是这些指标的定义

      • CogC**-认知复杂性对于控制和确认高度的软件可维护性至关重要,这通常涉及软件更改。
      • ev(G)**-基本复杂度度量是模块包含非结构化构造的程度的度量。这个度量标准衡量代码的结构化程度和质量。它用于预测维护工作量并帮助模块化过程。
      • iv(G)**-模块设计复杂度度量是设计缩减的模块的复杂度,并且反映模块对其直接下属模块的调用模式的复杂度。该度量区分了将严重复杂化它们所属的任何程序的设计的模块和仅包含复杂计算逻辑的模块。
      • v(G)**-圈复杂度是模块决策结构复杂度的度量。它是线性独立路径的数量,因此是应该测试的最小路径数量。

来源:
https://www.sciencedirect.com/science/article/abs/pii/S0950584918301903http://www.mccabe.com/iq_research_metrics.htm

相关问题