37

Mercurial リポジトリで一定期間に変更されたコードの行数を計算する優れたツールはありますか? statsvnの行に沿ったものは素晴らしいですが、6 か月以内に変更されたコードの行数をカウントするものであれば何でも構いません (hg log への引数の巧妙な組み合わせを含む)。ありがとう。

PS: この数値を測定する目的については議論しないでください ;)

4

3 に答える 3

27

hg churn 拡張機能が必要です。

hg activityまたはhg chartで視覚的な結果を得ることができます。

于 2010-06-16T21:16:51.420 に答える
17

編集:両方とも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; 

次に、最初にリビジョンを渡し、その後にオプションの引数を渡します。

hg lines tipまたhg lines 123:456 -u brian

空白のみの変更を除いて、変更された行数を知りたい場合があります。これには、diff -wの代わりに belowを使用する必要があり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; 

hg linesw tipまたhg lines 123:456

diffと の動作が異なるため、動作がわずかに異なることに注意してくださいlog。たとえば、パラメータを受け取りますlogが、取りません。範囲を渡すと、範囲で指定された最初のリビジョンでコミットされた変更が表示されますが、そうではありません。--userdifflogdiff

これは、bash を使用してのみテストされています。

于 2012-04-20T19:25:19.367 に答える
11

私はこれを行う必要があり、hg churn 拡張機能と同様のソリューションにかなりの時間を費やしました。

最終的に、私にとって最も効果的なのは CLOC (Count Lines of Code) であることがわかりました: http://cloc.sourceforge.net/

プロジェクトの 2 つのバージョンを含む 2 つのフォルダーを指定すると、同じ、変更、追加、削除されたすべての行がカウントされます。複数の言語を認識し、コード、コメント、空白行を箇条書きにします。

これを使用するには、コードの 2 つのバージョンを Hg から 2 つの並列フォルダーに取り出し、 cloc --diff --ignore-whitespace を使用しました。

于 2011-05-11T19:16:05.920 に答える