软件质量之道:SourceMonitor

学习提速专享!AI工具全家桶免费用 限时购周边加赠Coding Plan Lite,解锁20+主流AI工具,写代码、查资料快人一步! 阅读详情

有些事非做不可,并非为了幸福,而是缓解痛苦,因为不做,则更痛苦——这便是无奈。

夏中义 《文心独白》

 

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部分进行特殊的声明注释,可以再工程属性中设置过滤,不计算在内。

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建立工程,针对不同的Solution活着Project建立Checkpoint。

1. 安装SourceMonitor,这个不详细介绍,下载安装即可。

2. 打开SourceMonitor,建立工程。


3. 选择语言,并点击下一步。


4. 为当前工程命名,并选择工程文件保存路径。


5. 选择当前工程要度量解析的文件,可以通过配置文件列表(XML)或者指定路径自动搜索方式添加。


6. 选择相关的配置,可以直接下一步忽略,如果有相关需要进行选择设定。



7. 指定当前Checkpoint的名称。


8. 查看配置项,并确定。


9. 确认要度量的文件列表。


10. 工程建立完毕,并完成第一个度量点。


11. 双击检查点,查看各个文件的度量值。


12. 双击某个文件,查看详细信息。


这样,基本的一个工程就建立完毕了,其他的功能,例如设置各个指标的默认值,大家可以自己尝试一下。

 

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打印窗口中去,真是其乐无穷啊。

上周末,又看了一遍《星际宝贝》,也总结了最近各个不尽人意的方面,发现自己以前实在是太过自我为中心,有很多问题不知道从自己找原因,而不断的责备别人(真心的对被我伤害的人说声对不起)。还是应该时时刻刻警醒自己,如果“坏蛋”成分要满了,那就暂时放下所有的事,“治疗”好了再继续,不要因为自己而犯错!


利用Source Monitor分析代码复杂度 最近利用SourceMonitor+ ASP+BAT来分析代码并生成静态分析文件:1. 利用shell从CVS check out code:运行此程序; ./ auto_checkout.sh page. “page” 对应page_cfg.sha) Auto_checkout.sh#!/bin/bash#function log_time() {# echo `$DT_FO 阅读详情

相关推荐

SourceMonitor:提升代码质量的实用重构工具

SourceMonitor是一款用于C/C++、C#、Java和VB等编程语言源代码的静态代码分析工具。它能够帮助开发者理解程序的结构,通过统计程序的复杂性、代码行数、函数调用关系等指标来评估代码质量。它特别适合用在项目维护阶段,帮助识别出复杂或难以理解的代码部分,从而促进代码的重构和优化。代码度量是指对软件代码进行定量分析的过程,它包括从简单的行数统计到复杂的代码结构和设计模式分析的各种方法。代码度量的目的是为了提高软件质量,通过数值指标量化软件产品的某些特性。

weixin_35920379的博客 722

SourceMonitor 一款简单的代码复杂度查看工具

SourceMonitor 一款简单的代码复杂度查看工具

SourceMonitor 代码重构的小工具

SourceMonitor 代码重构的小工具

sourcemonitor的具体使用教程

这是我在csdn上写的第一篇文章,在这篇文章中,我来介绍一下sourcemonitor这款软件的具体使用的教程。 什么是sourcemonitor 引用从百度百科上的定义:SourceMonitor是一款国外软件,利用它可以为C++、C、C#、Java、Delphi、Visual Basic和HTML的源代码文件测试代码数量和性能。最终结果可以描绘成图、输出打印。 SourceMonitor是一款...

qq_41804339的博客 1万+

集成Source Monitor至VS中

Source Monitor是一款免费的代码品质度量软件。 合理地利用这个工具,可以在一定程度上提高自己代码可读性、可维护性,进而提高代码品质。 Source Monitor的帮助手册中写明了如何将代码品质评审集成到VS中,这里简单说下过程。 通过下述方式,可以在VS中直接查看当前代码文件的细节。 选择菜单栏——工具——外部工具,添加一项Source Monitor。 命令:填...

weixin_30781631的博客 677

【转】软件质量SourceMonitor

转:https://blog.csdn.net/feng_ma_niu/article/details/40594799 SourceMonitor是一个源代码衡量工具,由http://www.campwoodsw.com/开发,免费下载。 1 引子 博客又有一阵子没更新了,最近认真思考了阿里上市的成功之处:选择和坚持。其实人生并没有绝对的对与错,也没有绝对的成功与失败。正如“有些人活着,他...

weixin_30565199的博客 149

软件质量工具SourceMonitor

简介 SourceMonitor是一款代码度量工具。 通过基本的度量,可以从代码表面层次发现一些根本的,基础的问题,为软件质量把关。 官网 SourceMonitor官网:http://www.campwoodsw.com/ 下载 在官网下载最新安装包 安装完毕后打开本软件 使用 我们首先给大家看看这个东西使用的样子,然后再讲这个工具的其他部分。 点击File=>Ne...

cgm625637391的博客 2819

软件质量

本文主要针对C++软件质量进行分析,同样也适用于其他语言,在不同的环节提供了一些软件,进行软件质量的控制。使用自动化的集成构建环境,来减少Bug发生,从而提高开发质量。

风马牛 2582

SourceMonitor代码度量实战:从圈复杂度到CI集成,提升软件质量

在软件工程中,代码质量度量是评估和维护软件健康状态的基础实践。其核心原理是通过静态分析工具,对源代码的复杂度、规模、结构等维度进行量化评估,从而将主观的“代码感觉”转化为客观数据。这项技术的核心价值在于,它能在开发早期识别出潜在的技术债务和风险点,如过度复杂的函数、过深的嵌套或不足的注释,为代码重构和规范制定提供科学依据。典型的应用场景包括持续集成流水线中的质量门禁、代码审查的客观补充,以及项目长期维护中的趋势跟踪。本文以SourceMonitor工具为例,深入解析圈复杂度、代码行数等关键指标,并分享如何将

weixin_34192816的博客 391

SourceMonitor,免费代码统计工具,圈复杂度,代码数量,覆盖率等等

SourceMonitor,免费代码统计工具,圈复杂度,代码数量,覆盖率等等

代码复杂度检查工具Source Monitor

Source Monitor能够检查函数/方法的圈复杂、代码深度注释率等指标,帮助改进代码的可维护性。

SourceMonitor最新版本

可以为C++, C, C, Java, Delphi, Visual Basic 和 HTML的源代码文件测试代码数量和性能。最终结果可以描绘成图、输出打印 。

软件质量SourceMonitor

有些事情必须这样做,不是幸福,但是,缓解疼痛,因为不。更痛苦——这是无奈。 夏中义 《文心独白》 1 简介 博客没有更新了一段时间,了阿里上市的成功之处:选择和坚持。事实上人生并没有绝对的对与错。也没有绝对的成功与失败。正如“有些人活着,他已经死了”云云,我总是拿对与错来让自己选择,事实上就是根本的错误。决定走一条路,就继续走下去,终点尽管不知在哪里,那就尽情享受沿...

weixin_30588827的博客 151

SourceMonitor代码体检:量化分析圈复杂度与函数长度,提升软件质量

在软件工程领域,代码质量是决定软件可维护性与长期健康度的核心要素。静态代码分析技术通过在不运行程序的情况下,对源代码进行词法和语法层面的扫描,从而量化评估其内在质量。这项技术的核心价值在于,它能够将主观的代码感受转化为客观的度量指标,帮助团队识别潜在的技术债务与重构热点。其典型应用场景包括持续集成流水线中的质量门禁、遗留系统重构前的评估,以及日常开发中的代码评审辅助。本文聚焦于SourceMonitor这一轻量级静态分析工具,深入解读其提供的**圈复杂度**与**函数长度**等关键指标,并分享如何将其集成到

weixin_33946020的博客 445

软件质量保障QA

软件质量保障。

专注Java(全栈)应用开发,求知若渴,虚心若愚,talk is cheap, show me the code. 421

代码度量工具SourceMonitor:从圈复杂度到工程实践的质量守护

在软件工程领域,代码质量是决定项目长期可维护性的核心要素。静态代码分析技术通过在不运行程序的情况下扫描源代码,量化评估其结构特性,为开发者提供了客观的质量洞察。其核心价值在于将主观的“代码感觉”转化为可度量的数据,帮助团队提前识别技术债务与潜在风险。圈复杂度作为衡量逻辑复杂度的关键指标,与函数语句数、嵌套深度、注释率等共同构成了代码的“健康体检表”。这些度量数据在持续集成流水线、代码审查及日常开发中,能有效驱动重构决策与质量改进。本文以SourceMonitor工具为例,深入解读如何利用代码度量数据优化工程

weixin_33895475的博客 447

SourceMonitor安装及使用

SourceMonitor是一款免费的软件,运行在Windows平台下。它可对多种语言写就的代码进行度量,包括C、C++、C#、Java、VB、Delphi和HTML,并且针对不同的语言,输出不同的代码度量值。 像其他代码度量工具一样,SourceMonitor只关注代码,并为编码人员提供及时的反馈,它不是1款项目管理工具,不关注项目实行中从功能分析到设计编码,再到测试这全部进程。 Sourc...

weixin_30731287的博客 228
上一篇: C++ 11
下一篇: 软件质量之道:PCLint之一
o0风马牛0o
博客等级 码龄16年 44粉丝 23原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值