计数随时间变化的代码行

有没有什么好的工具可以计算在一个特定时间段内在mercurial repository中更改的代码行数? 一些沿着statsvn的行将是伟大的,但任何计数在6个月内更改的代码行数将做(包括一个聪明的参数组合hg日志)。 谢谢。

PS:请不要讨论测量这个数字的目的;)

hgstream失扩展是你想要的。

您可以通过hg活动或hg图表获得视觉效果。

编辑hg diffhg log都支持--stat选项,可以为你做到这一点,只有更好,更快。


我做了一个叫做lines的别名来为我计算改变的行(不一定是代码行)。 尝试把这个别名放在你的.hgrc文件中:

 [alias] lines = !echo `hg log -pr $@ | grep "^+" | wc -l` Additions; echo `hg log -pr $@ | grep "^-" | wc -l` Deletions; 

然后将其传递给修订版本,然后传递任何可选参数:

hg lines tiphg lines 123:456 -u brian

有时你想知道改变的行数,不包括只有空白的变化。 这需要在下面使用diff -w而不是log -p 。 我linesw设置了一个linesw别名:

 #ignore whitespace linesw = ![[ $1 =~ : ]] && r=$1 || r="$1~1:$1"; echo `hg diff -wr $r | grep "^+\([^+]\|$\)" | wc -l` Additions; echo `hg diff -wr $r | grep "^-\([^-]\|$\)" | wc -l` Deletions; 

hg linesw tiphg lines 123:456

请注意,它们的行为稍有不同,因为difflog行为有所不同 – 例如, log将采用--user参数,而diff不会,并且在传递范围时, log将显示在该范围内提供的第一个修订中提交的更改diff不会。

这只是使用bash进行testing。

我需要这样做,并花了相当多的时间与hg churn扩展和类似的解决scheme。

最后,我发现最适合我的是CLOC(Count Code of Code): http ://cloc.sourceforge.net/

您可以给它两个文件夹,其中包含两个版本的项目,它将统计所有相同的行,修改,添加,删除。 它承认多种语言和项目的代码,评论和空白行。

为了使用它,我从Hg中将两个版本的代码抽出到两个并行的文件夹中,然后使用cloc –diff –ignore-whitespace