Может ли Subversion сообщать, какой процент кода изменился с течением времени? - PullRequest
5 голосов
/ 21 июня 2010

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

Например. скажем, ревизия 2100 имеет 150 000 строк кода, но ревизия 2600 имеет 165 000 строк кода, где 8 000 строк исходного 150 000 кода были изменены. Я бы сообщил об этом как 142 000/165 000 = 86%, 14% «новые». Я не хочу отделять Javadoc, XML, комментарии или модульные тесты .... просто объединить их все вместе как "источник".

Есть идеи, как это сделать?

Ответы [ 5 ]

4 голосов
/ 29 сентября 2011

Я только что сделал это сегодня, используя бесплатный инструмент с открытым исходным кодом CLOC .Он позволяет рекурсивно сравнивать два каталога, поэтому все, что вам нужно сделать, - это извлечь обе версии и запустить программу на нем.

Он также дает сводки для отдельных языков и итогов, например:

Language                      files          blank        comment           code
--------------------------------------------------------------------------------
SUM:
 same                          1556              0          76662         165546
 modified                       137              0            159            570
 added                            2            241            257           1250
 removed                         30            591            906           2271

Как вы можете видеть из «пустой» статистики, она не идеальна, но она определенно дает вам приблизительную оценку.

3 голосов
/ 23 июня 2010

Метрика, которую вы ищете (я полагаю): отток кода .

Там есть предыдущий вопрос SO по этому вопросу!

2 голосов
/ 21 июня 2010

Я не знаю простого способа сделать это, но вы могли бы проанализировать различия, сгенерированные из исходных файлов.Используя опцию -r для сравнения, вы можете указать желаемый диапазон, то есть 2100: 2600.При использовании унифицированной разницы количество измененных (удаленных или отредактированных) строк, скорее всего, будет количеством строк в вашей разности, начинающихся с '-'.Сравнение их с общим количеством строк должно приблизить вас к вашему ответу.Это, конечно, только приближение.Если вы какое-то время работали с патчами, вы будете знать, что простое переупорядочение некоторых строк приведет к разнице, показывающей больше измененных строк, чем вы могли бы ожидать, поэтому возьмите возвращенное число с частичкой соли.

В Википедии есть краткое описание форматов .По умолчанию для SVN должен быть унифицированный diff.

1 голос
/ 23 июня 2010

SVN не имеет встроенных инструментов для этого.Существуют коммерческие инструменты, такие как Fisheye , которые могут генерировать различные отчеты о работе хранилища, а также предоставляют возможности просмотра / поиска.Вы можете посмотреть на это и посмотреть, соответствует ли оно вашим потребностям.

Другой вариант - использовать «svn log» и «svn diff» в сочетании с некоторыми сценариями, чтобы сказать вам, что вы ищете.1005 *

1 голос
/ 22 июня 2010

Вы можете использовать diff, как говорит wds, и сделать несколько сценариев bash / awk / sed для получения разных отчетов.Я не знаю конкретного инструмента для этого, но его кодирование было бы простой и увлекательной задачей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...