随着时间的推移计算更改的代码行

Ger*_*ncy 36 mercurial lines-of-code

是否有任何好的工具可以在mercurial存储库中计算特定时间段内更改的代码行数?像statsvn这样的东西会很棒,但是任何计算6个月内更改的代码行数的东西都可以(包括hg log的参数的巧妙组合).谢谢.

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

Ry4*_*ase 26

汞流失扩展是你想要的.

您可以使用hg活动hg图表获得可视结果.


und*_*ned 16

编辑:hg diff并且hg log都支持--stat可以为您执行此操作的选项,只有更好,更快.


我创建了一个别名lines来为我计算更改的行(不一定是代码行).尝试将此别名放在.hgrc文件中:

[alias]
lines = !echo `hg log -pr $@ | grep "^+" | wc -l` Additions; echo `hg log -pr $@ | grep "^-" | wc -l` Deletions; 
Run Code Online (Sandbox Code Playgroud)

然后首先传递修订版,然后是任何可选参数:

hg lines tip 要么 hg lines 123:456 -u brian

有时您想知道更改的行数,不包括仅限空格的更改.这需要使用diff -w下面而不是log -p.我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; 
Run Code Online (Sandbox Code Playgroud)

hg linesw tip 要么 hg lines 123:456

注意他们的行为略有不同,因为difflog不同的表现-例如,log将一个--user参数,而diff不会和传递范围时,log会显示出在给定范围内第一次修订COMMITED变化,而diff不会.

这只是使用bash测试过的.


Iri*_*fer 10

我需要这样做,并花了相当多的时间来进行hg churn扩展和类似的解决方案.

最后,我发现对我来说最有效的是CLOC(Count Code of Code):http://cloc.sourceforge.net/

您可以为它提供两个包含两个版本项目的文件夹,它将统计所有相同,修改,添加,删除的行.它识别多种语言并逐项列出代码,注释和空白行.

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

  • 当你下载一个Perl文件时,这是一个很好的解决"问题"的方法.注意语法是:`./cloc.pl --ignore空白--ignore情况--diff <DIR一> <目录B>` (4认同)