Subversion可以报告随时间变化的代码百分比吗?

时间:2010-06-21 15:40:34

标签: svn scripting

我想逐行了解,在两次提交之间修改了subversion存储库中源代码的百分比。

例如。说2100版有150,000行代码 - 但修订版2600有165,000行代码,其中原始150,000代码的8,000行经过修改。我会将此报告为142,000 / 165,000 = 86%相同,14%为“新”。我不在乎分离Javadoc,XML,注释或单元测试......只是将它们作为“源”集中在一起。

知道怎么做吗?

5 个答案:

答案 0 :(得分:4)

我今天刚刚使用免费的开源工具CLOC做了这个。它允许您以递归方式比较两个目录,因此您需要做的就是检出两个版本并在其上运行程序。

它还提供了不同语言和总数的摘要,例如:

Language                      files          blank        comment           code
--------------------------------------------------------------------------------
SUM:
 same                          1556              0          76662         165546
 modified                       137              0            159            570
 added                            2            241            257           1250
 removed                         30            591            906           2271

从那里的'空白'统计数据可以看出,它并不完美,但绝对可以为您提供一个球场。

答案 1 :(得分:3)

您正在寻找的指标(我相信)是code churn

那里有is a previous SO question

答案 2 :(得分:2)

我不知道一种简单的方法,但您可以解析源文件生成的差异。通过使用-r选项进行差异,您可以指定所需的范围,即2100:2600。 使用统一差异,更改(删除或编辑)行的数量可能是diff中以' - '开头的行数。将它们与总线进行比较可以让您接近答案。这当然只是近似值。如果你已经使用了一段时间的补丁,你就会知道简单地重新排序某些行会产生一个差异,显示出比你预期的更多的行变化,所以拿回一些盐的数字。

维基百科有一个short description of the formats。 svn的默认值应该是统一的差异。

答案 3 :(得分:1)

你可以使用diff作为wds说,并做一些bash / awk / sed脚本来获取不同的报告。我不知道一个特定的工具,但编码它将是一个简单而有趣的任务。

答案 4 :(得分:1)

SVN没有内置工具来执行此操作。有一些商业工具,如Fisheye,可以生成各种存储库活动报告,并提供浏览/搜索功能。你可以看看它,看看它是否符合你的需求。

另一种选择是使用“svn log”和“svn diff”,结合一些脚本来告诉你你在寻找什么。