Сколько строк кода было изменено в течение периода времени?
Мне поручено выяснить, сколько строк кода я написал в этом году. Не очень интересно по ряду причин, но похоже, что это может сделать хороший вопрос.
Итак, в вашем любимом инструменте управления версиями, как вы определяете, сколько строк кода было изменено? В моем конкретном ответе пустые строки и комментарии используются для упрощения времени, отведенного для определения ответа, но не стесняйтесь уточнять.
В моем конкретном случае я использую svn, поэтому я собираюсь избавиться от всех --- и других misc-выходных данных svn log и svn diff.
Ответы
Ответ 1
Используйте StatSVN. Я использую его на работе, и это здорово, он сломает LOC разработчиком по месяцам. Это будет рисовать красивые графики, рассказать вам, какой день недели и во сколько вы проверите в большинстве кодов. Он точно скажет вам, что вам нужно знать.
Ответ 2
Простейшее решение:
svn diff -x --ignore-eol-style -x -w http://svn/tags/releases/1.0 http://svn/tags/releases/2.0/ |diffstat
это очень рудиментарно и не исключает вставки пустых строк и т.д., но, возможно, это достаточно хорошо?
Ответ 3
Попробуйте использовать метку Хит-кода (что делает именно то, что вы ищете). Вы можете собирать данные, используя этот hoc
, поясненный в этом сообщении в блоге: Hits-of-Code вместо SLoC
Ответ 4
Fisheye может рассказать вам, сколько строк кода было зафиксировано для каждого разработчика. Есть хорошая функция построения диаграмм, которая может дать вам красивые графики для этого.
Ответ 5
Я также пытался решить задачу, такую как "сколько строк было удалено, добавлено или просто изменено за выбранный период времени". Поэтому я написал простую оболочку script (только для Linux). Он собирает статистику sipmle о модификациях кода. Более подробную информацию и общий script вы можете найти здесь:
http://cyber-fall.blogspot.com/2011/10/tools-linux-svn-generate-statistic.html
Надеюсь, это поможет вам и другим!
Ответ 6
Если вы застряли на cvs:
cvs annotate > annotate.txt
rem remove the portion before the name
sed "s/^[0-9. (]*//" annotate.txt > annotate2.txt
rem remove the portion after the name
sed "s/[ ].*$//" annotate2.txt > annotate3.txt
sort annotate3.txt > annotate4.txt
uniq -c annotate4.txt > annotate5.txt
http://jamesjava.blogspot.com/2007/01/who-has-changed-most-lines-in-cvs.html
Ответ 7
В Clearcase возьмите спецификацию конфигурации и добавьте:
time <date-time>
<rules for choosing branches or labels>
end time
Сделайте второй снимок и сравните два. Если несколько разработчиков работают над одними и теми же файлами, я понятия не имею. Я не могу сказать, что я в восторге от использования Clearcase, когда-либо.
Ответ 8
Если вы используете subversion, вы можете использовать команду svn log с ключом -xml, и вы можете вытащить строки кода оттуда. Вы можете просмотреть параметры журнала svn, используя svn help log. Поскольку ваш результат - xml, вы можете запустить этот xml и агрегировать количество строк в коде и перейти оттуда.