2010-06-21 5 views
5

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

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

Любая идея, как это сделать?

ответ

4

Я только что сделал это сегодня, используя бесплатный инструмент с открытым исходным кодом 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 

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

2

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

Википедия имеет short description of the formats. Значение по умолчанию для svn должно быть унифицированным.

1

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

1

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

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

3

Показатель, который вы ищете (я считаю) code churn.

is a previous SO question на этом!

+0

Действительно, я ищу конкретный вид отторжения кода. Предыдущий вопрос SO ссылается на StatSVN, который ежедневно отчитывается о сбое кода на графике, но, похоже, не отображает сводный откат кода с одного уровня ревизии на другой ... если у него нет API, который я не могу найти. Очень полезный ответ, однако ... и StatSVN выглядит очень круто. – HDave

+0

Dev StatSVN очень полезен. Я несколько раз общался с ним. Кроме того, я уверен, вы можете вывести алгоритм из кода statsvn и написать Perl, чтобы это произошло для вас. –

Смежные вопросы