通过Visual Studio 的“代码度量值”来改进代码质量
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 使用“代码度量值结果”
筛选:

导出:

列管理:


计算代码度量值:

通过Visual Studio 的“代码度量值”来改进代码质量的更多相关文章
- 通过 Visual Studio 的“代码度量值”来改进代码质量
1 软件度量值指标 1.1 可维护性指数 表示源代码的可维护性,数值越高可维护性越好.该值介于0到100之间.绿色评级在20到100之间,表明该代码具有高度的可维护性:黄色评级在10到19之间,表示该 ...
- 关于 Visual Studio 的代码度量值
查看方式:Visual Studio -> Analyze -> Calculate code metrics feature 代码度量(Code Metrics)是用来测量专业标准的软件 ...
- Visual Studio使用技巧,创建自己的代码片段
1.代码片段的使用示例 在编写代码中常会使用代码片段来提高我们的编写代码的效率,如:在Visual Studio中编写一个 for(int i = 0; i < length;i++) { } ...
- Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力)
系列文章 Visual Studio 2015速递(1)——C#6.0新特性怎么用 Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力) Visual Studi ...
- 如何在Visual Studio和CodeBlocks中反编译C++代码
在Visual Studio中 第一步:打断点 第二步:Debug->Star Debugging 或直接按"F5" 第三步:Debug->Windows->Di ...
- 【C#】Visual Studio 2017 一边Debug,一边修改代码
好久没写C#了,最近在学习著名***工具 shadowsocks-windows 的源代码,想着可以边断点调试,边加上一些注释以方便理解,stackoverflow 和 msdn 随便翻了一下,竟发现 ...
- Visual Studio 打开程序提示仅我的代码怎么办
工具-->选项--->调试---->常规-->禁用"启动仅我的代码"
- visual studio code(vscode) 配置在terminal进行运行代码并且支持c++11特性
1.点击设置 点击CodeRunner的小齿轮,点击configure extension settings 2.点击映射 点击executor map中的Edit in settings.json ...
- Visual Studio 2010: 调试引用的dll的代码?
right click the solution in the Solution Explorer-> Properties-> Debug ->Enable Debuggers- ...
随机推荐
- EF6 使用SQLite Code First
SQLite是一款轻型关系型数据库,做一个小网站,用来替代sql server或者access数据库应该会是一个不错的选择. ASP.NET Entity Framework 6是微软平台的著名ORM ...
- Java50道经典习题-程序12 计算奖金
题目:企业发放的奖金根据利润提成.利润(I)低于或等于10万元时,奖金可提10%: 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%: ...
- mysql 基础整合大全
mysql 数据库操作: 创建数据库: create database db_sanguo charset utf8; 切进db_sanguo use db_sanguo 删除数据库: drop d ...
- 现在就启用 HTTPS,免费的!
现在就启用 HTTPS,免费的! 现在,你应该能在访问https://konklone.com的时候,在地址栏里看到一个漂亮的小绿锁了,因为我把这个网站换成了HTTPS协议.一分钱没花就搞定了. 为什 ...
- form表单元素的值序列化成对象
/** * 将form表单元素的值序列化成对象 * param: form jquery form对象 */ var serializeObject = function(form) { var o ...
- AngularJS入门讲解3:$http服务和路由讲解
上一课的例子中,我们的模型数据是硬编码的,也就是说,我们的数据不是从服务器请求回来的. 这里,我们先讲解,如何从服务器获取数据: function PhoneListCtrl($scope, $htt ...
- C语言实现单链表,并完成链表常用API函数
C语言实现单链表,并完成链表常用API函数: 1.链表增.删.改.查. 2.打印链表.反转打印.打印环形链表. 3.链表排序.链表冒泡排序.链表快速排序. 4.求链表节点个数(普通方法.递归方法). ...
- 关于莫比乌斯函数的塞 : 莫比乌斯前n项和 , 莫比乌斯函数绝对值的前n项和
https://ac.nowcoder.com/acm/contest/874#submit/{%22problemIdFilter%22%3A25455%2C%22statusTypeFilter% ...
- [转] 使用HTTPS在Nexus Repository Manager 3.0上搭建私有Docker仓库
FROM: https://www.hifreud.com/2018/06/06/03-nexus-docker-repository-with-ssl/ 搭建方式 搭建SSL的Nexus官方提供两种 ...
- [转] CDH6 安装文章链接收集
CentOS 7下Cloudera Manager及CDH 6.0.1安装过程详解 http://blog.51cto.com/wzlinux/2321433?source=dra Cloudera ...