web-dev-qa-db-ja.com

時間の経過とともに変更されたコード行をカウントする

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

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

hg churn extension が必要です。

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

26
Ry4an Brase

編集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 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; 

hg linesw tipまたはhg lines 123:456

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

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

16
undefined

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

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

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

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

10
Irish Buffer