1 软件度量值指标

1.1 可维护性指数

  表示源代码的可维护性,数值越高可维护性越好。该值介于0到100之间。绿色评级在20到100之间,表明该代码具有高度的可维护性;黄色评级在10到19之间,表示该代码适度可维护;红色评级在0至9之间,表示低可维护性。

1.2 圈复杂度

  它是通过计算程序流中不同代码路径的数量来创建的,用来表示一个程序的复杂性。具有复杂控制流的程序需要更多的测试才能获得良好的代码覆盖率,并且不易维护。

  以下两种情况会在计算圈复杂度时加1:

  •   分支(if、while、do)
  •   switch中的case语句  

  例如:

    //圈复杂度1
public void Method()
{
Console.WriteLine("Hello World!");
} //圈复杂度3
public void Method(bool condition1, bool condition2)
{
if (condition1 || condition2)
{
Console.WriteLine("Hello World!");
}
} //圈复杂度8
public void Method(DayOfWeek day)
{ switch (day)
{
case DayOfWeek.Monday:
Console.WriteLine("Today is Monday!");
break;
case DayOfWeek.Tuesday:
Console.WriteLine("Today is Tuesday!");
break;
case DayOfWeek.Wednesday:
Console.WriteLine("Today is Wednesday!");
break;
case DayOfWeek.Thursday:
Console.WriteLine("Today is Thursday!");
break;
case DayOfWeek.Friday:
Console.WriteLine("Today is Friday!");
break;
case DayOfWeek.Saturday:
Console.WriteLine("Today is Saturday!");
break;
case DayOfWeek.Sunday:
Console.WriteLine("Today is Sunday!");
break;
}
}

1.3 继承深度

  计算在继承层次结构中的继承深度,继承树中层次结构越深,类的开发、测试和维护就越复杂,因为层次结构越深,理解特定方法和字段的定义和(或)重新定义的难度也就越大。

1.4 类耦合度

  类耦合是一个类是如何与另一个类连接或依赖的度量。好的做法是总是实现较少的依赖类或低级耦合。

1.5 代码行数

  表示代码行数,计数基于IL代码,因此不是源代码文件中的确切行数。一个非常高的计数可能表明一种类型或方法试图做太多的工作,应该分开。它还可能表明类型或方法可能难以维护。

2 计算代码度量值

Step 01 运行“计算代码度量值”

Step 02 查看“代码度量值结果”

Step 03 使用“代码度量值结果”

  筛选:

  导出:

  列管理:

  计算代码度量值:

参考文档:https://www.codeguru.com/csharp/csharp/cs_network/improving-code-quality-with-visual-studio-code-metrics.html

通过Visual Studio 的“代码度量值”来改进代码质量的更多相关文章

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

    1 软件度量值指标 1.1 可维护性指数 表示源代码的可维护性,数值越高可维护性越好.该值介于0到100之间.绿色评级在20到100之间,表明该代码具有高度的可维护性:黄色评级在10到19之间,表示该 ...

  2. 关于 Visual Studio 的代码度量值

    查看方式:Visual Studio -> Analyze -> Calculate code metrics feature 代码度量(Code Metrics)是用来测量专业标准的软件 ...

  3. Visual Studio使用技巧,创建自己的代码片段

    1.代码片段的使用示例 在编写代码中常会使用代码片段来提高我们的编写代码的效率,如:在Visual Studio中编写一个 for(int i = 0; i < length;i++) { } ...

  4. Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力)

    系列文章 Visual Studio 2015速递(1)——C#6.0新特性怎么用 Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力) Visual Studi ...

  5. 如何在Visual Studio和CodeBlocks中反编译C++代码

    在Visual Studio中 第一步:打断点 第二步:Debug->Star Debugging 或直接按"F5" 第三步:Debug->Windows->Di ...

  6. 【C#】Visual Studio 2017 一边Debug,一边修改代码

    好久没写C#了,最近在学习著名***工具 shadowsocks-windows 的源代码,想着可以边断点调试,边加上一些注释以方便理解,stackoverflow 和 msdn 随便翻了一下,竟发现 ...

  7. Visual Studio 打开程序提示仅我的代码怎么办

    工具-->选项--->调试---->常规-->禁用"启动仅我的代码"

  8. visual studio code(vscode) 配置在terminal进行运行代码并且支持c++11特性

    1.点击设置 点击CodeRunner的小齿轮,点击configure extension settings 2.点击映射 点击executor map中的Edit in settings.json ...

  9. Visual Studio 2010: 调试引用的dll的代码?

    right click the solution in the Solution Explorer-> Properties->  Debug ->Enable Debuggers- ...

随机推荐

  1. Fiddler4无法抓取HttpWebRequest本地请求的解决办法

    网上很多解决案例是如下方代码设置代理,但在我的Fiddler4环境下无效,后寻得官方处理方法证实与代理无关. HttpWebRequest request= WebRequest.Create(&qu ...

  2. await使用中的阻塞和并发(二)

    本文继续上篇未完成的讨论,通过将Lambda还原成最普通的代码段,来解释上篇提出的疑问.并更正上篇中一些不太正确的写法.最后会给出无需等待Async方法返回值时,对Async方法使用await的建议, ...

  3. JAVA实现长连接(含心跳检测)Demo

    实现原理: 长连接的维持,是要客户端程序,定时向服务端程序,发送一个维持连接包的.       如果,长时间未发送维持连接包,服务端程序将断开连接. 客户端:       Client通过持有Sock ...

  4. [ActionScript3.0] 使用FileReferenceList处理多个文件上载

    package { import flash.display.Sprite; import flash.events.DataEvent; import flash.events.Event; imp ...

  5. 手机APP测试点总结

    一.功能性测试: (1)根据产品需求文档编写测试用例 (2)软件设计文档编写用例 二.兼容性适配性测试: (1)Android.iOS版本的兼容性 (2)手机分辨率兼容性 (3)网络的兼容性:2G/3 ...

  6. iOS 本地时间 / UTC时间 / 时间戳等操作 / 获取当前年月日

    //获得当前时间并且转为字符串 - (NSString *)dateTransformToTimeString { NSDate *currentDate = [NSDate date];//获得当前 ...

  7. 《Implementing QuantLib》译后记

    目录 <Implementing QuantLib>译后记 初心 瞎忙 收获 彩蛋 展望 就在几天之前,经历了一年时间断断续续的坚持,<Implementing QuantLib&g ...

  8. python的copy模块

    python的copy模块 概念 Python中的赋值语句不复制对象,它们在目标和对象之间建立索引,这就是浅复制.对于一些对象或者集合,我们有时需要一个副本,以便可以更改一个副本中的值而不改变其原对象 ...

  9. (五)Audio子系统之AudioRecord.stop

    在上一篇文章<(四)Audio子系统之AudioRecord.read>中已经介绍了AudioRecord如何获取音频数据,接下来,继续分析AudioRecord方法中的stop的实现 函 ...

  10. ftpClient.retrieveFileStream导致FTPClient的后面操作失败

    问题代码: FTPFile[] fs = ftpClient.listFiles(); for (FTPFile ff : fs) { if (ff.getName().equals(fileName ...