Что это?
Суть в том, чтобы из хранилища кода SVN собрать историю работы над проектом. В эту историю могут входить количество строк кода, время комитов, активность авторов комитов и т.д.
Зачем?
Вообще я не любитель собирать такие метрики, но меня заинтересовало наблюдение Сергея Архипенкова. Я говорю о принципе цикличности при становлении команды.

Сергей заметил, что графики количества строк кода и фаз становления команды выглядят очень похоже. Дело в том, что сначала команда собирается и происходит разработка основных компонентов (формирование команды). В этот период пишется «скелет» системы, кода мало. Потом команду «штормит» и все приходит в норму. Здесь пишется основной код. И, наконец, команда выходит на максимальный уровень производительности. А вот тут уже все написано, остается только рефакторить и исправлять ошибки. Это то самое место, когда количество строчек кода уменьшается.
Для меня это пока только теория. Отсюда и появился мой практический интерес поэксперементировать на нашем проекте. Также я хотел проверить есть ли зависимость количества строк кода или других метрик от графиков, которые представлены в статье про технические долги.
Сразу надо сказать, что сбор метрик я точно не буду применять для:
- вычисления производительности отдельных программистов
- привязки премий, зарплат и т.п. к этим метрикам
Какие решения нашел?
StatSVN
Сайт – http://www.statsvn.org
Работает в два этапа:
- нужно самим выгрузить лог SVN за интересующий период времени
- запустить формирование отчета с помощью этой утилиты
Отчеты формирует довольно симпатичные, но работает очень долго. Отчет для 6000 ревизий занял где-то 1,5 часа и напрочь повесил компьютер.
SVNPlot
Сайт – http://code.google.com/p/svnplot
Работает тоже в два этапа, но по другому принципу:
- создает базу данных sqlite из хранилища SVN
- формирует отчет с помощью запросов к базе данных
Работает на порядок быстрее, чем StatSVN.
Из недостатков можно отметить, что для ее работы надо установить много разных программ: python 2.6, sqlite3, pysvn, NumPy, Matplotlib
Сразу заметил
1. Зависимость возрастания строчек кода от времени в нашем проекте оказалась линейной (интересно, где предел?).

Т.е. цикличности никакой не наблюдается. Возможно пока не наблюдается, а может этот принцип просто не для нашего проекта. Еще один вариант – потому что мы занимается рефакторингом постоянно. В любом случае простого ответа на этот вопрос не нашел.
Дополнение
Если увеличить масштаб графика, то получим довольно занятную картинку:

Зеленые стрелочки отмечают вершины графика или то место, где график практически ровный. Оказалось, что эти стрелочки отмечены на расстоянии одной итерации (одна неделя). Это и логично, потому что после каждой итерации разработчики некоторое время тратят на рефакторинг и исправление ошибок. Отсюда вывод, что цикличность все-таки есть.
2. Саня комитит по ночам!

А как же 40-часовая рабочая неделя? ;)
В остальных метриках пока никакого толку не увидел. Например, есть довольно забавные графики активности:

Он что-то значит? Может быть первый программист больше рефакторит, чем последний? Нет, конечно. Все работают в парах и комиты могут делать с разных компьютеров. Можно только примерно сказать, что код в основном изменяется, а не добавляется новый. Опять же, это что-то значит?
Буду смотреть дальше, может какие закономерности под руку попадутся :)
Ссылки