statCVS是一个很好的OPENSOURCE的项目,可以用来生成CVS中代码修改提交情况的报表。不过我在使用过程中,发现它只能用于主分支(即清除所有粘附位的版本)产生提交历史和数据统计,如果有基于分支的提交,将被statCVS忽略,并且基于这个原因,也无法对一个分支进行修改统计和代码分析了。如果对一个分支进行修改分析,因为log都是基于该分支的修改版本,所以基于主分支的修改将为空集合,所以statcvs.jar的执行结果将会出现NULLPointer异常而终止生成报表。
经过主分支和副分支的log文件对比,发现是statCVS的一个bug,因为修改已被统计成非零,而修改细节因为主分支要求零匹配,所以出现计数和元素不相符的情况而导致异常终止。
经过一个不太规范的规避,我们可以绕过这个陷阱,方法如下:
用如下方法取出某个分支(branch_name)的所有提交历史(工作目录通常应在本志的项目CVS根目录下)。
F:\module-path>cvs log -rbranch_name >f:\project.log
用如下方法取出某个时间段的所有提交历史(工作目录通常应在本志的项目CVS根目录下)
2009/5/1
在文本编辑器中,修改文件内容,以规避陷阱:
UltraEdit:
正则表达式替换:
%revision 1.[0-9.]+$ revision 1.2
意思就是将所以分支提交log换成主分支提交log格式,如
revision 1.2.2.12 --->revision 1.2
这样就骗过statCVS了,不过也就丢失了提交版本信息了。
接下来可以生成代码统计报表了(除了提交版本信息全变成1.2):
statcvs.jar的两个参数是log文件,项目cvs本地路径。output-dir选项为重定向报表HTML文件路径。
0.5.0
本文转自 dannyy1026 51CTO博客,原文链接:
http://blog.51cto.com/dannyyuan/317177