基于svn diff结果的有效代码量统计

转载 2011年01月16日 15:35:00

转载于:http://bigwhite.blogbus.com/logs/92616077.html

 

 

很多公司的过程中都有阶段性统计新增或修改的有效代码行数这一环节,这里先不论统计出的结果用于做什么,就统计本身而言,常常存在诸多问题,比如统计过程耗时且繁琐、统计结果中估算成分较大,不精确等。这些问题以前也一直困扰着我们,并且长时间没有想出很好的解决办法。

今天脑子里突然冒出一个想法:能否根据
svn diff得到的结果分析出来有效代码量呢? svn diff的结果一般是这样的,分为几类:

纯新增代码,如:
+void foo() {
+    ... ...
+}

纯删除代码,如:
-void foo() {
-    ... ...
-}

修改的代码,如:
-void foo(void);
+void foo(int);

我们所要统计的所谓有效代码更多是指纯新增的代码和修改的代码,纯删除的代码可忽略不计。这样一来实际有效代码行数 = 纯新增代码行数 + 修改代码行数;而修改的代码在svn diff结果中体现为一减一加,实际修改行数是等于其+的行数的。也就是说有效代码行数就是svn diff结果中所有前缀为+的行的行数。svn diff输出格式相对规整,通过解析得到这个行数并非难事。最简单的方法就是使用
Shell脚本 了。

脚本全部内容这里就不列出来了,
这里 可以下载。其核心代码只有以下两行:

svn diff -r$start_revision:$end_revision $target $USERNAME $PASSWD > $TEMPFILE
add_lines_count=`grep "^+" $TEMPFILE|grep -v "^+++"|sed 's/^.//'|sed '/^$/d'|wc -l`

首先我们使用svn diff命令将两个修订号之间的差异重定向到一个临时文件中,然后使用grep、sed和wc的组合完成行数的计算:其中首先过滤出以+开头的行,但去除其中+++开头的行,得到的是所有只以一个+开头的行。再利用set 's/^.//'删除每行行首的那个+,用set '/^$/d'删除所有空行,最后利用wc -l计算总行数。

也就是说通过上面脚本运行后得到的有效代码行数是不包括空行的,但是包含注释代码。

有了这个脚本,以后的版本有效代码量统计就相当精确了,而且也无需每个人都参与统计,大大减少了工作量,甚至可以将这个工作做成自动化完成。

现在的我痛恨一切效率低下的个人行为和过程活动!遇到问题坚决改善,绝不姑息^_^。

基于svn diff结果的有效代码量统计

版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明 http://www.blogbus.com/bigwhite-logs/92616077.html 很多公司的过程中都有阶段性统...
  • yjtgod
  • yjtgod
  • 2013年10月11日 02:58
  • 1826

使用svnkit对svn新增代码统计、代码查询

使用svnkit对svn新增代码统计、代码查询
  • u012621115
  • u012621115
  • 2016年10月26日 17:12
  • 1894

svn代码统计生成详细html报告

公司使用git和svn,都的做统计,总结svn统计代码的方法: 1 下载statsvn   http://www.statsvn.org/downloads.html 2 使用statsvn   下...
  • qq_37023538
  • qq_37023538
  • 2016年12月29日 17:23
  • 2659

svn统计代码行数

用到得工具 svn 客户端
  • zmnqiangwei
  • zmnqiangwei
  • 2014年11月05日 10:53
  • 2936

svn代码量统计工具StatSVN的使用

一、使用前准备 需要安装svn命令行工具Subversion(现在安装包Setup-Subversion-1.8.9-1.msi直接安装即可)和下载StatSVN包,现在地址sourceforge.n...
  • honghailiang888
  • honghailiang888
  • 2016年05月19日 10:27
  • 3983

svn代码量统计工具

StatSVN介绍 StatSVN是一个Java写的开源代码统计程序,从statCVS移植而来,能够从Subversion版本库中取得信息,然后生成描述项目开发的各种表格和图表。比如:代码行数的...
  • dapinxiaohuo
  • dapinxiaohuo
  • 2016年12月13日 10:52
  • 1476

使用svn命令统计两次上线之间的代码行数,以及不同作者的代码行数

//向我们公司伟大的作者致敬 #! /bin/bash # 计算有效变更代码量的脚本 # 包括注释,但不包括新增的空行 version() {     OS=`uname -o`     ...
  • kittyboy0001
  • kittyboy0001
  • 2014年04月23日 14:03
  • 5327

diffcount:统计工程代码变动行数

diffcount 使用beyond compare比较前后两个工程中,修改的代码量,只可以查看两个文件差异的节数。 使用diffcount,可以直接统计前后两个工程中,增加、删除、修改的代码行数。 ...
  • yhtppp
  • yhtppp
  • 2015年03月30日 10:37
  • 2327

基于SVNkit的项目代码贡献量统计

SVNKit (JavaSVN) 是一个纯 Java 的 SVN 客户端库,使用 SVNKit 无需安装任何 SVN 的客户端,支持各种操作系统。通过比对每个文件的修改记录,统计每个成员的代码贡献量。...
  • WuZuoDingFeng
  • WuZuoDingFeng
  • 2017年02月14日 15:11
  • 971

svn对比结果的补丁打包

因为版本的升级通常都是需要进行war包的补丁文件打包,这是需要去文件对比版本,然后找出修改的文件,然后打成补丁包.文件少的时候,还可以忍受,但是当修改文件多的时候,这兼职 关于,如何打包svn项目的...
  • w329636271
  • w329636271
  • 2016年08月01日 11:14
  • 1292
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于svn diff结果的有效代码量统计
举报原因:
原因补充:

(最多只允许输入30个字)