Подсчет измененных строк кода с течением времени - PullRequest
36 голосов
/ 16 июня 2010

Есть ли хороший инструмент, который вычисляет количество измененных строк кода за определенный период времени в ртутном хранилище? Что-то вроде statsvn было бы замечательно, но подойдет все, что посчитает количество измененных строк кода в течение 6 месяцев (включая умную комбинацию аргументов hg log). Спасибо.

PS: Пожалуйста, не обсуждайте цель измерения этого числа;)

Ответы [ 3 ]

25 голосов
/ 17 июня 2010

Расширение hg - это то, что вы хотите.

Вы можете получить визуальные результаты с HG активность или HG диаграммы .

14 голосов
/ 20 апреля 2012

Редактировать : 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 снизу вместо 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 примет параметр --user, а diff - нет, а при пропуске диапазона log покажет изменения, зафиксированные в первой ревизии, заданной в диапазоне, а diff - нет.

Это было проверено только с использованием bash.

9 голосов
/ 11 мая 2011

Мне нужно было это сделать, и я потратил немало времени на расширение hg churn и подобные решения.

В конце концов я обнаружил, что лучше всего мне подходит CLOC (количество строк кода): http://cloc.sourceforge.net/

Вы можете дать ему две папки, содержащие две версии проекта, и он будет считать все одинаковые, измененные, добавленные, удаленные строки. Он распознает несколько языков и кодирует элементы, комментарии и пустые строки.

Чтобы использовать его, я вытащил две версии моего кода из Hg в две параллельные папки, а затем использовал cloc --diff --ignore-whitespace

...