windows下 Source Monitor代码度量工具的使用
windows下 Source Monitor代码度量工具的使用
引用链接:
https://www.cnblogs.com/xuehanyu/p/4520965.html
1.总体介绍
SourceMonitor是一款免费的软件,运行在Windows平台下。它可对多种语言写就的代码进行度量,包括C、C++、C#、Java、VB、Delphi和HTML,并且针对不同的语言,输出不同的代码度量值。
像其他代码度量工具一样,SourceMonitor只关注代码,并为编码人员提供及时的反馈,它不是一款项目管理工具,不关注项目实施中从功能分析到设计编码,再到测试这整个过程。
度量指标
SourceMonitor只是一个“度量”工具,但是通过基本的度量,可以从代码表面层次发现1些根本的,基础的问题,所以将其作为介绍的第一个工具,也应当做为最基础的一个工具来为软件质量把关。
说到SourceMonitor的度量,对不同的语言提供不同方面的度量,这里仅针对C++进行介绍,其提供了以下几方面的度量。(关于其他语言,请参考SourceMonitor的帮助文档Explanation of Language Metrics章节)
总行数(Lines)
包括空行在内的代码行数。
语句数(Statements)
在C++中,语句是以分号结尾的。分支语句if,循环语句for、while,跳转语句goto都被计算在内,预处理语句#include、#define和#undef也被计算在内,对其他的预处理语句则不作计算,在#else和#endif、#elif和#endif之间的语句将被疏忽。
分支语句比例(Percent Branch Statements)
该值表示分支语句占语句数目的比例,这里的“分支语句”指的是使程序不顺序履行的语句,包括if、else、for、while、break、continue、goto、switch、case、default和return。需要注意的是,do不被计算在内,由于其对应的while已计算了。另外,异常处理的catch也被作为1个分支计算。
注释比例(Percent Lines with Comments)
该值唆使注释行(包括/……/和//……情势的注释)占总行数的比例。1般公司会对每一个文档的header或footer部份进行特殊的声明注释,可以再工程属性中设置过滤,不计算在内。
类个数(Classes)
包括class,struct和template在内的个数。
平均每一个类方法数(Methods per Class)
平均每一个类的方法数,即包括内联和非内联的,template函数在内的类方法数除以所有类的个数。
函数个数(Functions)
所有函数的个数。
平均每一个函数包括的语句数目(Average Statements per Method)
总的函数语句数目除以函数数目得到该值。
函数圈复杂度(Function Complexity)
圈复杂度唆使1个函数可履行路径的数目,以下语句为圈复杂度的值贡献1:if/else/for/while语句,3元运算符语句,if/for/while判断条件中的"&&"或“||”,switch语句,后接break/goto/ return/throw/continue语句的case语句,catch/except语句等。对应有最大圈复杂度(Max Complexity)和平均圈复杂度(Avg Complexity)。
函数深度(Block Depth)
函数深度唆使函数中分支嵌套的层数。对应有最大深度(Max Depth)和平均深度(Avg Depth)。
关于SourceMonitor的安装,我们可以在其官方网站:http://www.campwoodsw.com
在安装完成后我们来尝试使用这个软件。
软件使用
打开软件后点击File->New Project来创建一个新的项目,之后需要经过如下几个步骤:
1.程序语言选择,这里我们选择Java语言;
2.命名当前项目并选择保存路径;
3.选择该项目要度量解析的文件,可以通过XML配置文件导入,也可通过选择项目目录通过扩展名自动筛选文件;
4.选择项目配置,这里可以根据自己的需要去选择这三项,我们选择不修改直接下一步;
5.选择项目保存的格式,这里我们选择New SourceMonitor project format;
6.创建项目的第一个检查点并命名,如果涉及到UTF-8格式编码的,可以选择下面的选项窗口;
7.最后再确认以上所选择的所有信息,如有错误点击上一步退回重新选择,无误则单机完成;
8.完成后确认要度量的文件列表;
9.这样项目就成功建立了,并且完成了第一个度量点的建立;
10.双击我们刚才创立的度量点,我们可以看到项目中包含的各个Java文件的度量值;
11.双击文件我们可以看到对这个文件进行分析的详细内容;
这样,SourceMonitor的安装和使用方法就简单的介绍完了。
下面再简要提一下在Eclipse中集成SourceMonitor的方法:
点击Run->External Tools->External Tools Configurations…
点击左上角的添加图标或者在Program处右击选择New
填写Name、Location、Arguments如下如所示,之后点击Apply
此时再单击该窗口中的Run(以后可以点击Run->External Tools→SourceMoniter)即可运行处当前Eclipse中项目的SourceMonitor结果了
相关文章:

MVVM 数据绑定
一、在 XAML 中创建绑定 定义源对象。 C# public class Dog {public string DogName { get; set; } }在 XAML 中创建对源对象的命名空间的引用。 XAML <UserControl x:Class"BindingXAML.Page" xmlns"http://schemas.microsoft.com/winfx/2006/xaml/pres…

linux配置文件怎么把某行后几个字符替换_vim(Linux运维)
一、vim使用介绍 介绍在linux系统中,大部分配置文件都是ASCII的纯文本形式存放的,所以我们在修改系统设置的时候使用简单的文本编辑软件就可以实现了,如果你使用过windows当中的word的话,那么你可能会感觉linux字符界面的文本编辑…

Debian 6.0 安装过程 及中文乱码
2019独角兽企业重金招聘Python工程师标准>>> Debian 6.0 安装过程 Debian 6.0 安装过程 转(一个别人自录的安装过程录相) http://v.youku.com/v_show/id_XMjUyMzY1OTIw.html 转(别人写的一个过程) http://hi.baidu.com/ljx_freebsd/blog/item/88d60c09da379da22edd…

git 提交丢失Warning, you are leaving 2 commits behind,
早上在自己的一个版本代码上编辑,提交commint,但是checkout到其他分支再checkout回来发现该的东西不见了, 幸好terminal还没有关掉,回看日志: Warning: you are leaving 2 commits behind, not connected toany of you…

一台支持vlan管理的交换机_关于交换机的VLAN技术你了解多少?
VLAN(虚拟局域网)是对连接到的第二层交换机端口的网络用户的逻辑分段,不受网络用户的物理位置限制而根据用户需求进行网络分段。一个VLAN可以在一个交换机或者跨交换机实现。VLAN可以根据网络用户的位置、作用、部门或者根据网络用户所使用的…

需要反射时使用dynamic
//使用dynamic的写法 dynamic fileExplorerData _currentFolder.FileExplorerData; var data fileExplorerData.InsertFromPath(newPath);//使用反射的写法 MethodInfo InsertMethod _currentFolder.FileExplorerData.GetType().GetMethod("InsertFromPath"); var…

Linux平台下QtCreator集成代码静态分析工具clang-tidy和Clazy
Linux平台下QtCreator集成代码静态分析工具clang-tidy和Clazy 原文连接: https://blog.csdn.net/wsj18808050/article/details/79824619 内容: QtCreator在前几天发布了4.6.0的版本,增加了两个非常棒的新功能,分别是Clang-Tidy和Clazy 官方…

JAVA swing初级教程(四)
附加的swing小部件(下) JOptionPane JOptionPane 是在 Swing 中类似“快捷方式”的东西。通常,作为 UI 开发人员,您需要向用户呈现快速信息,让用户了解错误和信息。甚至可能想得到一些快速数据,例如名称或数字。在 Swing 中&#…

Akka源码分析-Remote-发消息
上一篇博客我们介绍了remote模式下Actor的创建,其实与local的创建并没有太大区别,一般情况下还是使用LocalActorRef创建了Actor。那么发消息是否意味着也是相同的呢? 既然actorOf还是委托给了LocalActorRef,那么在本地创建的Actor…

用sed 给文本文件加行号
看例子: [rootlocalhost tmp]# sed test.txt 1 tsttst tsttsttst 2 west gao 3 west abces [rootlocalhost tmp]# sed test.txt | sed N;s/\n/\t/ 1 tsttst tsttsttst 2 west gao 3 west abces [rootlocalhost tmp]# N的解释: N&am…

Qt 编译一直死循环问题
Qt 编译一直死循环问题 有时候Qt编译项目时, 一直编不过,查看一下编译窗口,发现一直在循环 输出如下: C:\soft\Qt5.11\5.11.1\mingw53_32\bin\qmake.exe -o Makefile ..\..\..\..\PalmQtLib\PalmQtLib\PalmQtLib.pro -spec win32-g "…

路由器运行python脚本_写个Python脚本来登录小米路由器
这个脚本写起来难度并不是很大,博主还是一步步的分析下,这样思路会比较清晰,下次遇到类似系统脚本写起来也更快速。好了,一起来分析分析。首先看下小米路由器的登录界面可以看到只需要输入密码即可登录,博主这里为了演…

PHP定时执行任务的实现
2019独角兽企业重金招聘Python工程师标准>>> ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行. set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去 $interval60*30;// 每隔半小时运行 do{//这里是你要执行的代码 sleep($i…

Spring事务管理 与 SpringAOP
1,Spring事务的核心接口 Spring事务管理的实现有许多细节,如果对整个接口框架有个大体了解会非常有利于我们理解事务,下面通过讲解Spring的事务接口来了解Spring实现事务的具体策略。 Spring事务管理涉及的接口的联系如下: 1.…

iso镜像文件烧写到U盘
iso镜像文件烧写到U盘 windows rufus-3.1.exe 百度云盘链接:https://pan.baidu.com/s/16p1O4lXMVTUltTvCm0DnHA 提取码:inzj 文件格式一般选择默认的就行,如果起不来,就换一个, linux 1、dd命令 2、系统自带 usb-creator-gtk工具 命令行输入&#x…

webgl 游戏_30个令人惊叹的WebGL示例和演示
WebGl仍在增长,尽管大多数现代浏览器都支持它,但它也可能需要在旧的浏览器上工作。在本文中,我遇到了很多WebGL的示例和演示,它们可以增进您对这项新技术的理解。因此,请坐下来放松身心,使用最新的浏览器&a…

IE8下的VML显示问题解决方案
最近在维护一个使用VML画曲线的网站,在不同的IE下浏览效果不一样,特别是在IE8下,出现莫名其妙的样式显示问题: 1.曲线不可见!在IE9或IE7下,曲线正常绘制,但是在IE8下,不见坐标轴和曲…

创新工场有哪些失败项目?不要只看着成功
创新工场有哪些失败项目?不要只看着成功 李开复 ,创新工场CEO回答:失败或碰到挑战的项目也不少。这里不点名,不谈细节,但是谈谈碰到什么挑战(有些已经失败,有些还在努力):…

彻底解决Linux索引节点(inode)占用率高的告警
今天邮箱里发现有一封某服务器inode使用率发生告警的邮件 登录到服务器上df -i查看,发现/路径下91%,磁盘使用率却不高,猜测可能是某个目录下的小文件过多,进而造成inode占用率过高,但不清楚根路径下各文件夹里的文件数…

镜像打包工具clonezilla
镜像打包工具clonezilla clonezilla 百度云盘链接:https://pan.baidu.com/s/1LOEPqNE9O0Z4QJmNExlgeA 提取码:zlso 使用方法: 1、将镜像直接烧入U盘 2、U盘启动

python数据分析设置_Python 数据分析系列之如何安装和设置 Python
由于人们用 Python 所做的事情不同,所以没有一个普适的 Python 及其插件包的安装方案,接下来我将详细介绍各个操作系统上 Python 科学计算环境部署。我推荐免费的 Anaconda 安装包,Anaconda 提供 Python 2.7 和 3.6 两个版本,以后…

javamail gmail
http://www.programfan.com/club/showpost.asp?id27614转载于:https://www.cnblogs.com/yqskj/archive/2013/01/11/2855715.html

robots.txt文件的解析及过滤
什么是robots.txt文件? robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不能被搜索引擎的漫游器获取的…

CF949C Data Center Maintenance(建图+强联通分量)
题意 有 n 个信息中心,第 i 个信息中心要在第 ti 个小时维护,维护期间信息不能被获得。 每个用户的数据都有两份备份,第 i 个用户的数据放在信息中心 c(i,1) 和 c(i,2)。 现在要挑选一个尽量小的信息中心集合,使得将这个集合的维护…

fabric 启动peer_编写 Fabric 链码的一般准则
我相信智能合约(链码)是 Hyperledger Fabric 区块链网络的核心。正确开发链码可以真正发挥一个安全区块链的优势,反之则会带来灾难性的后果。在这篇文章里我不打算探讨 Hyperledger Fabric 链码设计的特定模式的好与坏,而是希望分享我在开发若干 Hyperle…

Qt pro文件下跨平台宏的使用(windows/linux 以及x86 和 arm的区分)
#Qt pro文件下跨平台宏的使用(windows/linux 以及x86 和 arm的区分) 在pro文件中添加: #仅在linux 系统下, 硬件平台无关的内容 unix{HEADERS \SOURCES \Manager.cpp \ }#arm64 的编译宏 contains(QMAKE_HOST.arch, aarch64){…
数论(一)——素数,GCD,LCM
这是一个数论系列:) 一、素数 费马小定理 Theorem: 设 p 是一个素数,a 是一个整数且不是 p 的倍数,那么 很遗憾,费马小定理的逆定理是不成立的。对 a 2,满足的非素数 n 是存在的。 比如 n 341 11 31 对于整数 a,称满足的合数为以 a 为底的…

java自学 day1
1.数据类型 基本数据类型(存放数据本身) 分为数值型(int,double等) 字符型(char)布尔型(boolean) 引用数据类型(存放数据的地址)分为类࿰…

Qt下一行代码就可以使用的稳定易用的日志log类
Qt下一行代码就可以使用的稳定易用的日志类 此日志类是基于Qt 自带的 扩展的一个易用的日志类, 使用的是Qt自带的日志输出形式, 已长期运行在许多实际项目中,稳定可靠,而且跨平台, 在windows和linux 上都能稳定运行 …

apue读书笔记-第十二章
1 可重入,线程安全,异步信号安全之间的区别? 可重入:可以重复进入,不会引起问题(这个概念最宽) 线程安全:被多个线程使用时,不会出问题,也就是可以被多个进程…