道路软件质量:SourceMonitor
有些事情必须这样做,不是幸福,但是,缓解疼痛,因为不。更痛苦——这是无奈。
夏中义 《文心独白》
1 简介
博客没有更新了一段时间,了阿里上市的成功之处:选择和坚持。事实上人生并没有绝对的对与错。也没有绝对的成功与失败。正如“有些人活着,他已经死了”云云,我总是拿对与错来让自己选择,事实上就是根本的错误。决定走一条路,就继续走下去,终点尽管不知道在哪里,那就尽情享受沿途的风景,以及珍惜与身边的陪伴着的人的分分钟钟。
扯得有点远,回归主题。之前讨论了软件质量之道的各个方面,可是也都是一些虚话,达不到真正的目的。既然如此。还不如针对上一篇文章结尾部分的流程图的每一个部分,进行具体的描写叙述,达到人人可用的效果,使之发扬光大。
循序渐进,首先先说一下各个工具的用途以及用法,然后再说明怎样用Ant进行管理,最后再统一加到CruiseControl中进行调度。
2 SourceMonitor简单介绍
SourceMonitor是一款免费的软件,执行在Windows平台下。它可对多种语言写就的代码进行度量,包含C、C++、C#、Java、VB、Delphi和HTML,而且针对不同的语言,输出不同的代码度量值。
像其它代码度量工具一样。SourceMonitor仅仅关注代码。并为编码人员提供及时的反馈,它不是一款项目管理工具,不关注项目实施中从功能分析到设计编码,再到測试这整个过程。
SourceMonitor仅仅是一个“度量”工具,可是通过主要的度量。能够从代码表面层次发现一些根本的。基础的问题,所以将其作为介绍的第一个工具。也应当成为最基础的一个工具来为软件质量把关。
3 SourceMonitor度量值
说到SourceMonitor的度量,对于不同的语言提供不同方面的度量。这里仅针对C++进行介绍,其提供了下面几方面的度量。
(关于其它语言,请參考SourceMonitor的帮助文档Explanation of Language Metrics章节)
1. 总行数(Lines)
包含空行在内的代码行数。
2. 语句数(Statements)
在C++中。语句是以分号结尾的。
分支语句if。循环语句for、while,跳转语句goto都被计算在内。预处理语句#include、#define和#undef也被计算在内,对其它的预处理语句则不作计算,在#else和#endif、#elif和#endif之间的语句将被忽略。
3. 分支语句比例(Percent Branch Statements)
该值表示分支语句占语句数目的比例,这里的“分支语句”指的是使程序不顺序运行的语句。包含if、else、for、while、break、continue、goto、switch、case、default和return。须要注意的是。do不被计算在内。由于其相应的while已经计算了。另外,异常处理的catch也被作为一个分支计算。
4. 凝视比例(Percent Lines with Comments)
该值指示凝视行(包含/*……*/和//……形式的凝视)占总行数的比例。
一般公司会对每一个文档的header或者footer部分进行特殊的声明凝视,能够再project属性中设置过滤。不计算在内。
5. 类个数(Classes)
包含class,struct和template在内的个数。
6. 平均每一个类方法数(Methods per Class)
平均每一个类的方法数,即包含内联和非内联的,template函数在内的类方法数除以全部类的个数。
7. 函数个数(Functions)
全部函数的个数。
8. 平均每一个函数包括的语句数目(Average Statements per Method)
总的函数语句数目除以函数数目得到该值。
9. 函数圈复杂度(Function Complexity)
圈复杂度指示一个函数可运行路径的数目,下面语句为圈复杂度的值贡献1:if/else/for/while语句,三元运算符语句,if/for/while推断条件中的"&&"或“||”,switch语句,后接break/goto/ return/throw/continue语句的case语句。catch/except语句等。
相应有最大圈复杂度(Max Complexity)和平均圈复杂度(Avg Complexity)。
10. 函数深度(Block Depth)
函数深度指示函数中分支嵌套的层数。相应有最大深度(Max Depth)和平均深度(Avg Depth)。
4 SourceMonitor实战
以下介绍怎样使用SourceMonitor建立project。针对不同的Solution活着Project建立Checkpoint。
1. 安装SourceMonitor。这个不具体介绍,下载安装就可以。
2. 打开SourceMonitor,建立project。
3. 选择语言。并点击下一步。
4. 为当前project命名,并选择project文件保存路径。
5. 选择当前project要度量解析的文件。能够通过配置文件列表(XML)或者指定路径自己主动搜索方式加入。
6. 选择相关的配置,能够直接下一步忽略。假设有相关须要进行选择设定。
7. 指定当前Checkpoint的名称。
8. 查看配置项,并确定。
9. 确认要度量的文件列表。
10. project建立完毕,并完毕第一个度量点。
11. 双击检查点,查看各个文件的度量值。
12. 双击某个文件,查看具体信息。
这样,主要的一个project就建立完成了,其它的功能。比如设置各个指标的默认值,大家能够自己尝试一下。
5 配置SourceMonitor到编辑器内
因为SourceMonitor是代码度量最基础的一个模块。所以每一个程序猿都可能会将其作为代码评測的一个经常使用功能项加入到熟悉的编辑器中。这样每写完一段代码,都能够运行检測一下当前文件是否满足度量指标。
5.1 Visual Studio设置
1. 设置外部工具。
2. 加入并配置选项
Title: SourceMonitor
Command: 安装SourceMonitor的文件夹
Arguments: /DC++ $(ItemPath)
Initial directory: $(SolutionPath)
3. 加入快捷键
选择刚才加入SourceMonitor是ExternalTools里面第几个,比如说我刚才加入的位置为第六个,则选择Command6,并指定快捷键(我默认指定为Alt + 1。这个依据个人喜好来。可是尽量别造成快捷键冲突)。
4. 打开某个文件。按快捷键运行SourceMonitor,结果就显示出来了。
5.2 UltraEdit设置
因为非常多公司都会开发二次语言。来适合自己工具的使用。
这样的语言可能跟C或者某些语言非常相似,可是用Visual Studio这样的庞大的工具来打开,效率不是非常高,所以有可能选择使用一些轻量级的编辑器,比如说UltraEdit这样的,那么加入方法跟Visual Studio类似,例如以下。
1. 工具栏配置加入新工具。
2. 进行參数设置
名称: SourceMonitor
命令行: "D:\SourceMonitor\SourceMonitor.exe" /DC++"%f"
工作文件夹: %p
3. 点击运行,或者通过快捷键运行。
5.3 其它工具设置
假设使用其它工具,则能够參考工具的帮助文档。改动/DC++后的文件名參数以及工作文件夹參数就可以。
6 进一步思考
又到了最后关键的一步了。谈一下最近的一些感悟吧。
有些事情不了解的时候,总会从消极的角度的方面去考虑问题。
比如说,曾经我对多线程不是非常了解,我便会极力的保护自己“不懂多线程”这个缺点,从而去从消极的角度及方面评判多线程。可是近期处理大规模数据文件时(大概2000万个以上)。我却深深的体会到了多线程的各个方面的优势,也学会了很多其它的知识,尽管也写出了让大牛们嘲笑的“自旋锁”代码。看过《Imperfect C++》关于多线程的那一节后,立刻脸红了,利用周末的时间,彻底改动了这个“问题”。
另外。再接触这方面的知识时。就会从不同的角度上去理解及思考。也发现了很多其它更有趣的内容,比如怎么用C++11的异步,把界面和处理扔到不同的线程中去。又如何把Log扔到相应的Log打印窗体中去。真是其乐无穷啊。
上周末,又看了一遍《星际宝贝》。也总结了近期各个不尽人意的方面。发现自己曾经实在是太过自我为中心,有非常多问题不知道从自己找原因,而不断的责怪别人(真心的对被我伤害的人说声对不起)。还是应该时时刻刻警醒自己。假设“坏蛋”成分要满了,那就临时放下全部的事,“治”好了,然后继续。因为,不要看错了!
版权声明:本文博主原创文章,博客,未经同意不得转载。
转载于:https://www.cnblogs.com/hrhguanli/p/4797448.html
道路软件质量:SourceMonitor相关推荐
- 软件质量之道:SourceMonitor
有些事非做不可,并非为了幸福,而是缓解痛苦,因为不做,则更痛苦--这便是无奈. 夏中义 <文心独白> 1 引子 博客又有一阵子没更新了,最近认真思考了阿里上市的成功之处:选择和坚持.其实人 ...
- jsp+sql智能道路交通信息管理系统的设计与实现(论文+系统+开题报告+答辩PPT+外文翻译)
毕业设计(论文) 附 件 目 录 任务书1 文献综述4 开题报告9 译文14 译文原文 附件A 毕业设计(论文) 任 务 书 设计(论文)题目 智能道路交通信息管理系统 学 院 计算机学院 专 业 计 ...
- 软件质量保障实践合集
这一份软件质量保障实践合集是我们团队所采用的实践,全部来源于真实项目经历,都在我以往的文章中有介绍,这里是将它们重新整合浓缩到了7页 PPT 里边,并且对每个部分有详细的总结性介绍. 浓缩的都是精华, ...
- 揭秘阿里软件质量保障团队的建设方法
"质量与效率"一直是阿里关注的焦点.相对于软件开发,软件测试起步较晚,缺乏拥有专业知识的人才.即便是大学开设的软件工程专业,针对软件测试的介绍也只是涉及少量的概念和设计测试用例的方 ...
- 【软件质量与软件测试】
文章目录 第一章 软件质量和测试的背景 1.1 软件特征与软件工程 软件的定义(IEEE) 计算机硬件vs计算机软件 软件具有与硬件完全不同的特征 硬件.软件失效曲线图 1.1.1 软件分类 当前的计 ...
- 2023深度分析中国软件质量存在的问题
2023深度分析中国软件质量存在的问题 -- 非专家但热心国力增强.经济繁荣的中国人 [纯属个人观点] 契机一 一.<质量强国建设纲要>发布 北京2月6日电 近日,中共中央.国务院印发了& ...
- 通往安全自动驾驶汽车的艰难道路
通往安全自动驾驶汽车的艰难道路 Tough road to safe autonomous vehicles 中国深圳-本周,来自多家领先汽车原始设备制造商(OEM)的自主驾驶专家齐聚美国汽车工程师学 ...
- 道路场景语义分割算法
道路场景语义分割算法 输入输出接口 Input: (1)左右两个摄像头采集的实时图像视频分辨率(整型int) (2)左右两个摄像头采集的实时图像视频格式 (RGB,YUV,MP4等) (3)摄像头标定 ...
- ADAS可行驶区域道路积水反光区域的识别算法
ADAS可行驶区域道路积水反光区域的识别算法 Water logging area reflecting recognition algorithm for ADAS 工程概要 1.1 概述: 随着社 ...
最新文章
- requests.exceptions.TooManyRedirects: Exceeded 30 redirects
- 重磅!英特尔终于挤出10nm芯片 六大技术战略,震动芯片届
- c语言查看cpu温度代码_很多程序员都不知道,C语言中还有“快类型”和“小类型”...
- 「快学springboot」SpringBoot整合freeMark模板引擎
- java截取文件名.后的字符串
- 使用悲观锁还是乐观锁
- oracle 伪造ip连接,Oracle做ip连接限制
- 深入浅出 SSL 管理配置实战
- 关于Ubuntu下firefox无法观看视频的解决
- 微信小程序微信登录-云端登录模板
- 国内外反垃圾邮件技术
- ZOJ 2480 Simplest Task in Windows
- java神雕侠侣1古墓情缘游戏攻略_神雕侠侣古墓派后期攻略讲解
- 笔记本电脑外接显示器接口类型
- 苹果手机无线网显示无网络连接到服务器,iPhone提示:“无线局域网似乎未接入互联网”,咋回事?...
- html代码中的nofollow属性
- 一步一步理解 python web 框架,才不会从入门到放弃 -- 简单登录页面
- 教育家 | 吴文俊:懂数学,更懂中国
- QQ宠物明信片收到啦
- USACO修理牛棚 Barn Repair