总体思路:如何评估开发代码质量-->千行代码Bug率-->StatSVN工具统计代码量

情景

小A所在的项目组,每个项目版本都bug数都在400-500之间,每次项目测试期间都要给验证Bug单独安排2-3天的时间进行Bug验证。Bug多的问题一直存在,终于在4.6.0版本发布后问题爆发了,项目上线后线上版本出现了十几个问题,后期针对问题又紧急发布了一个新版本修复问题。

针对情景中小A遇到的问题,你所在的项目组是否也存在此问题呢?如果有同样的问题,你就需要特别注意啦!小编与公司其他项目组的同事沟通后,发现很多项目组每个版本的Bug数在100以内。为什么bug数差距这么大呢?

行业内有一句话:质量不是被测试出来的。为了提高项目质量,我们就要从源头抓起,开发是项目的建造者,如何让开发提测的版本质量本身提高,我们就要建立一个标准衡量开发的代码质量。小编使用的标准是千行代码率,今天带你一起探索此方法。

一、评估目的

1.从开发角度分析每个人员的技术水平;

2.建立量化标准,从源头评估代码质量,做到质量控制前移;

3.根据分析出现的问题制定改进计划。

二、统计指标

  1. Bug数

最直接反映开发人员代码质量就是其所写的代码产生了多少个Bug。另外Bug的严重性不一样,对用户的影响也是不一样的。所以我们不仅要统计开发人员名下的Bug总数,还要统计其在不同严重性程度的Bug数量。 统计Bug数量的时候需要注意将一些不属于开发原因的Bug排除在外,如需求建议、需求补充、不是问题的Bug、重复的Bug。

2.代码行数

小编使用的工具是StatSVN,这个工具使用很便捷。但是在统计之前一定要了解清楚自己所在项目的代码结构。比如说开发写的代码文件格式都有哪些,这些不同格式的文件中具体包含是哪些方面的代码,哪些代码是不需要统计的。以小编项目组为例:开发写的以.h结尾的头文件、单元测试代码、第三方提供的SDK代码,这些代码有些不对功能产生影响,有些不是自己项目组开发写的代码,所以都不进行统计。

3.计算公式

 千行代码Bug率 =Bug数量/ (代码行数/1000)

度量的标准:千行代码Bug率数值越小质量越好。

三、如何使用工具

1.环境搭建

1)机器安装Java的运行环境(Java Runtime Environment),JDK的版本需要到1.6,在1.4的时候会报类似“Repositories:org.xml.sax.SAXParseException: 缺少文件根组件”的错误

2)解压压缩包,到一个目录,如c:\statsvn; StatSVN的主页:http://www.statsvn.org/

2.命令统计代码

1)从SVN服务器中获取统计项目版本的最新所有代码,Windows系统使用SVN客户端可以直接checkout

2)在存放代码目录下生成SVN日志log命令:

svn log -v --xml > 日志名XXX.log

3)统计代码行数

cmd中在statsvn jar包所在目录执行命令:

java -jar ../statsvn.jar ../nova/日志名XXX.log ../nova -charset utf-8 -disable-twitter-button -title Nova -include /*.cpp:/.h -exclude **/sqlite3/.*

Note说明:

java -jar ../statsvn.jar // 执行statsvn.jar,后面是它的参数

参数1:../nova/日志名XXX.log //调用上面生成的SVN日志

参数2:../nova //最新版本所在的目录

参数3:-charset GB2312 //生成的HTML所用的字符集

参数4:-disable-twitter-button //关闭twitter连接,可能statsvn的开发者是一个twitter爱好者,statsvn默认在项目和开发人员的名字后加个twitter连接按钮,方便互动。这在中国行不通,大家都懂的...所以让twitter连接按钮不显示。

参数5:-title标题名 //这个设置在HTML页面中显示的项目标题

参数6:-include**/.cpp:**/.h //表示统计的文件类型,默认情况下statsvn统计指定目录下的所有文件(包括一些开发环境自动生成的文件等,这个参数可以设置指定统计具体文件,例子中的表示只统计项目目录下得CPP与H文件。

参数7:-exclude**/sqlite3/. //表示不统计的内容,例子中的参数表示不统计项目文件夹中sqlite3的内容(因为sqlite3的内容是调用别人写的程序,统计进去没有意义~)

4)查看统计结果:在生成的html结果目录下查找index.html文件。此文件是所有结果的总目录表。点击Developers就可以看到每个开发人员提交的代码数量。

四、StatSVN的优缺点

优点:

StatSVN会把当前SVN库的状态用图片和图表的方式展现出来,可以按不同分类分别展开,功能强大。

缺点:

StatSVN统计的是所有代码行,包括注释和空行,但一般度量要求是有效代码行,在分析时需要注意这一点。

StatSVN不考虑修改的代码行数,只考虑与上一版本相比新增(+)与删除(-)的代码行数。

五、如何更精准评价开发代码质量

通过上面的方法我们已经得到了每个开发人员的千行代码Bug率。但是为了更精准的评估开发质量还需要其他指标进行辅助参考。这些数据包括Bug易发现性、Bug的反复次数、连带Bug数量、负责的功能复杂性等方面综合分析。这样得出的结论才能更符合实际情况。

疑惑: (1)什么是SVN

(2)怎样从SVN服务器中获取统计项目版本的最新所有代码?

(3)什么是twitter?

(4)Bug易发现性、Bug的反复次数、连带Bug数量、负责的功能复杂性 怎么统计?

参考文件:http://blog.csdn.net/honghailiang888/article/details/51451584