Подтвердить что ты не робот

Подсчет измененных строк кода с течением времени

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

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

4b9b3361

Ответ 1

hg churn extension - это то, что вы хотите.

Вы можете получить визуальные результаты с помощью hg activity или hg chart.

Ответ 2

Изменить: hg diff и hg log поддерживают опцию --stat, которая может сделать это для вас, только лучше и быстрее.


Я сделал псевдоним lines для подсчета измененных строк (не обязательно строк кода) для меня. Попробуйте поместить этот псевдоним в ваш файл .hgrc:

[alias]
lines = !echo `hg log -pr [email protected] | grep "^+" | wc -l` Additions; echo `hg log -pr [email protected] | 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.

Ответ 3

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

В конце концов, я обнаружил, что лучшим для меня было CLOC (Count Lines of Code): http://cloc.sourceforge.net/

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

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