Visual studio 维修性指数

Visual studio 维修性指数,visual-studio,maintainability,code-complexity,Visual Studio,Maintainability,Code Complexity,我发现可维护性指数(MI)的建议值如下: 85及以上:良好的可维护性 65-85:中等可维护性 65岁及以下:很难用 错误的代码片段(大的、未注释的、, 非结构化)MI值可以是 甚至是消极的 这些价值观是否取决于技术?例如,值70对于大型机来说是好的,但是对于Java来说很难维护吗 是否可以使用与技术无关的相同尺度?这取决于“可维护性指数”的计算方式。在我看来,这不像是跨语言工作的东西,因为语言是如此的不同 比较简单地比较“每个函数行数”,但当你尝试比较满是指针的C代码或者充满模板的C++代

我发现可维护性指数(MI)的建议值如下:

  • 85及以上:良好的可维护性
  • 65-85:中等可维护性
  • 65岁及以下:很难用 错误的代码片段(大的、未注释的、, 非结构化)MI值可以是 甚至是消极的
这些价值观是否取决于技术?例如,值70对于大型机来说是好的,但是对于Java来说很难维护吗

是否可以使用与技术无关的相同尺度?

这取决于“可维护性指数”的计算方式。在我看来,这不像是跨语言工作的东西,因为语言是如此的不同

比较简单地比较“每个函数行数”,但当你尝试比较满是指针的C代码或者充满模板的C++代码,或者用LINQ查询,或者用java编写泛型的C时,会发生什么?


所有这些因素都会影响可维护性,但无法以任何有意义的跨语言方式进行衡量,因此,您如何比较两种语言之间的数字呢?

我认为您无法对开发人员维护一段代码的难易程度给出一个数字

不同的人会根据自己的经验、文化、阅读理解等,看待同一个代码并以自己的方式进行解释

这就是说,不同技术的衡量标准肯定会有所不同。您看到的是完全不同的语法、约定、术语等。如何量化低级大型机代码和高级语言(如Java或C)之间的难度差异

我认为指标有一个好处,而且只有一个好处:指导方针。就代码质量而言,我认为它们不应该用于描述代码库之外的任何事情。它们不应被用作难度或“摸索能力”的决定因素。

这是关于维修性指标值的含义

很快这就是

MI = 171 - 5.2*ln(Halstead Volume) - 0.23*(Cyclomatic Complexity) - 16.2*ln(Lines of Code)
在0和100之间缩放


显而易见,该指标可用于任何程序语言。

可维护性指数是一个经验公式。这是一个基于观察和适应的模型。如果你搜索更多的细节,你会发现这个等式必须为一种特定的语言进行编译。SEI的版本是针对Pascal和C进行校准的,并且使用了一系列由Hewlett-Packard维护的程序,平均为50KLOC


Visual Studio版本的校准与SEI版本的校准相同,但已将域限制在0到100之间。

65和85阈值来自于1992/1994年引入的可维护性指数

VisualStudio稍微调整了度量(乘以100/171),使其适合1-100的比例。VisualStudio使用


一般来说,我不会太认真对待这个指标及其阈值:另请参阅我的博客文章“

lambda尤其不受这些指标的影响。每个lambda函数都会增加额外的复杂性,即使实际上它简化了代码。我们放弃了度量标准。我可以理解为什么lambdas会影响复杂性分数,这对于初级开发人员来说是一个合理的问题,因为它本质上集中了复杂性。不过,对于高级开发人员来说,可能需要一个不同的复杂性度量……”“如果您搜索更多详细信息”,最好在您的答案中包含详细信息或指向更多信息的链接。Oops。链接不再有效。我相信这就是现在的情况——事实上,博客档案建议使用一个不同的公式来计算MI,即
MAX(0,(171–5.2*ln(Halstead体积)–0.23*(圈复杂度)–16.2*ln(代码行))*100/171)
@RBT这是相同的公式。你打开了“0到100之间缩放”的句子。