不想写一些和网上现有文献雷同的,想到哪就写到哪吧~
一.StatSVN利用的是SVN自带的diff插件,所以简单说,它只能识别出相邻版本之间在行数上的变化。至于行内的代码内容变化,欠奉~
所以搜集了一下目前网上大家公认的几个注意事项:
1.在编码阶段中前期使用,提交测试后就不宜再用了;
2.尽量减少“删除”、“重命名”、“移动”的操作;
3.在编码阶段要及时宣贯编码规范,并实施代码走查,以减少空行和注释行的误差;
4.使用JAVA开发的,建议提交代码前使用IDE对文件格式化操作,减小格式对统计结果的影响;
5.注意识别“源文件排版格式的变动”、“工具类的引用”(非JAR包形式的)、“配置文件的引入”等情况对统计结果的影响;
6.加强对分支的管理。StatSVN对“主干-分支”的计算就是简单的1+1。所以开发人员拉出一个工作分支,没写一行新代码,统计结果就变成了2。所以这里可以“统计指定路径”,或者“持续记录计算差值”,来实现对主干、分支代码的统计~
其实很多度量工作都是这样,我们没必要去纠结这个尺子准不准,只要尺子上有刻度,能把所有度量目标都能放在尺子上比比,就可以了。StatSVN是静态统计工具,很多网友都说它不准、不智能,其实多想想“差值”、“趋势”这个思路,也许就能解决很多误差的问题。以前网上有个故事,一个老头去买柿子,他知道商家的秤不准,所以先要了10个,商家说15元的,然后老头说“太多了,给我拿掉2个”,商家说13元。结果老头扔下2元钱,说“我就要那2个吧”……
二.关于StatSVN的操作,我就说说网上不太好搜的一些我个人总结出的经验:
1.现在的TSVN已经集成了命令行操作功能,在安装时钩选一下即可。同时check out可以通过TSVN来操作,也不会再有什么版本不一致的问题了。
2.生成log的环节,可以在命令行时,深入到任意一级目录下去操作,生成的log就是该目录下的。另外,在生成log时可以指定时间范围、版本范围:
svn log -v --xml -r r130-r159 > logfile.log
svn log -v --xml -r {2013-01-01}:{2013-06-01}> logfile.log
3.生成统计的环节,需要注意的就是那些参数了, 当中已经有一些说明,常用的也差不多就是这些~
-threads <int>,这个是指定svndiff的线程,默认值25,不知道有人改成50会有什么奇效。。
-tags-dir <路径>,说明说“识别tag的管理”?不知道对统计结果有何影响。。
其它还有几个参数,可以实现结果向ViewVC、Trac、Bugzilla的导出,就不多说了。
三.生成统计的过程,会很漫长,耐心是关键,另外好像挺耗内存的。。我运行了几次,都占用内存100MB上下,不知道再大些的库会是什么样~