Visual Studio 中的代码度量计算

Posted

技术标签:

【中文标题】Visual Studio 中的代码度量计算【英文标题】:Code Metrics Calculation in Visual Studio 【发布时间】:2011-01-03 06:34:57 【问题描述】:

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

可维护性指数 圈复杂度 继承深度 类耦合

【问题讨论】:

【参考方案1】:

理论上的最优值是:

可维护性指数:100。值越高表示可维护性越好。 圈复杂度:1. 代码可以采用的不同路径的数量。 继承深度:1. 继承树中在此之上的类定义的数量,不包括接口。 类耦合:0。此实体所依赖的其他实体的数量。

虽然可以做出一些笼统的陈述,但没有硬性和快速的“好”范围。

每个方法的圈复杂度较高表明方法变得过于复杂。 继承深度超过 3 或 4(您自己的类,而不是框架的)是一个麻烦的迹象,表明您可能不必要地表示了不在您的软件领域中的抽象关系。 低类耦合通常更好,但有时它是不可避免的。在可能的范围内,您绝对应该尽量减少命名空间之间的依赖关系,因为这里的依赖关系要少得多。

一个项目只能通过基本上什么都不做和无用的方式同时达到所有四个价值:什么都不做且不依赖任何东西的软件当然是可维护的,但不能很好地利用客户资金。

因此,所有复杂性都是一种权衡:额外的所谓固有复杂性将更多复杂性编码到程序中,允许它扩展功能集。您想要避免的是由糟糕或有缺陷的实现引入的意外复杂性。

【讨论】:

确实没有硬性和快速的好范围。尤其是如果你使用表达式树之类的东西,或者你的类耦合的新动态关键字被射到月球上。【参考方案2】:

在过度依赖它(或完全依赖它)之前,请查看以下页面,其中提供了有关如何计算指标的更多详细信息:

https://avandeursen.com/2014/08/29/think-twice-before-using-the-maintainability-index/

VS 的可维护性指数是一个验证不佳的指标组合,它本身依赖于一个指标(圈复杂度),该指标已被证明与代码可理解性无关(因此与可维护性无关)。请参阅 Scalabrino 等人的“自动评估代码可理解性:我们有多远?”。 和https://shape-of-code.com/?s=cyclomatic+complexity

此外,该指标中使用的常量和函数选择尚未在 C# 或 VB 代码上进行校准,这进一步使其无用。

(通过指出甚至不应该问原始问题来解决原始问题。)

【讨论】:

以上是关于Visual Studio 中的代码度量计算的主要内容,如果未能解决你的问题,请参考以下文章

通过 Visual Studio 的“代码度量值”来改进代码质量

通过Visual Studio 的“代码度量值”来改进代码质量

用于 C++ 的 Visual Studio 代码指标插件

Visual Studio 2017 中的 Visual Studio 2010

Visual Studio 2015 探查器未显示我的代码中的任何内容

Visual Studio 2010 中 SQLCLR 项目中的计算列