Многие, из тех кто так или иначе имеет отношение к разработке ПО, слышали про метрики: количество строк кода, цикломатическая сложность, плотность ошибок и т.п. Но очень немногие могут сказать, что пользуются метриками в повседневной работе и извлекают из этого хоть какую-то пользу. Действительно, узнать сколько в твоей программе строк кода или классов может и любопытно, но пользы от этого практически никакой. Так как же и чем этой пользы добиться?
Утилиты предназначенные для подсчёта метрик можно условно поделить на три группы.
К первой относятся те, что выполняют статический анализ исходного кода. При этом не важно синтаксический ли это разбор (CCCC) или использование мета-данных (ndepend). Таким способом можно узнать, сколько строк кода в вашем проекте, классов, методов и т.п. Контроль объектно-ориентированных метрик в умелых руках может принести весьма ощутимую пользу, т.к. позволяет выявить код нуждающийся в рефакторинге.
Ко второй группе можно отнести утилиты выполняющие анализ информации содержащейся в системах контроля версий (SvnStat, GitStats). Такие утилиты анализируют логи систем контроля версий и позволяют получить много любопытной информации, в основном об активности коммитеров. Это тоже может оказаться полезным, если вы хотите следить за тем, кто и когда работает.
И к третьей группе можно отнести всякую экзотику позволяющую, например, оценить такие вещи как «стоимость» и «затраты» внесения изменений или помочь с планированием дальнейшей проектной активности COCOMO. Подобные вещи как правило представляют академический интерес и не находят широкого применения на практике.
Состоялся первый публичный релиз набора утилит MSR Tools, предназначенных для подсчёта различных метрик кода. Это ПО — нечто среднее между представителями второй и третей вышеупомянутых групп. MSR Tools позволяет выполнять расчёт метрик для «довольно произвольных» множеств кода. Метрик как таковых немного: количество строк кода, плотность ошибок и… пока всё! Но как было сказано выше, то самое множество кода, для которого считается метрика может быть задано различными условиями. Ну например, взявшись за отдельного разработчика можно узнать сколько кода он добавил, сколько удалил, сколько его кода осталось на текущий момент, какова плотность ошибок его кода, сколько кода он удалил за прошлый год из того кода что был добавлен за позапрошлый год… и т.д.
Таким образом, хвала комбинаторике, можно получить тысячи метрик. Разумеется не все они одинаковополезны интересны. Но многие действительно представляют интерес и могут дать понимание того, что происходит с проектом. Контроль таких метрик позволит свести к минимуму вероятность ситуации, когда «вдруг» окажется, что «ваш софт — *овно».
MSR Tools включает в себя набор из нескольких утилит. Прежде всего, Mapper — утилита, которая осуществляет импорт информации из системы контроля версий в реляционную базу данных. Как только база сформирована, можно не стесняясь заSQLить её до смерти. И тут Вам пригодится помощь двух других утилит. StatGenerator — генератор статистики в html позволяет в удобном виде посмотреть основные метрики. Visualizator — предназначен для построения графиков. Следует отметить, что генератор и визуализатор расширяемы и можно добавить собственную страницу в отчёт или визуализацию без пересборки основных компонентов. Для этого придётся немного подредактировать файл настроек, который по совместительству является ни чем иным как файлом конфигурации контейнера unity.
Исходники, бинарники и примеры статистики можно найти здесь.
На данный момент имеется:
Немного, но оно бесплатно и под свободной лицензией!
Приглашаю всех заинтересованных к тестированию и контрибьюторству.
Метрики и то чем их можно посчитать
Утилиты предназначенные для подсчёта метрик можно условно поделить на три группы.
К первой относятся те, что выполняют статический анализ исходного кода. При этом не важно синтаксический ли это разбор (CCCC) или использование мета-данных (ndepend). Таким способом можно узнать, сколько строк кода в вашем проекте, классов, методов и т.п. Контроль объектно-ориентированных метрик в умелых руках может принести весьма ощутимую пользу, т.к. позволяет выявить код нуждающийся в рефакторинге.
Ко второй группе можно отнести утилиты выполняющие анализ информации содержащейся в системах контроля версий (SvnStat, GitStats). Такие утилиты анализируют логи систем контроля версий и позволяют получить много любопытной информации, в основном об активности коммитеров. Это тоже может оказаться полезным, если вы хотите следить за тем, кто и когда работает.
И к третьей группе можно отнести всякую экзотику позволяющую, например, оценить такие вещи как «стоимость» и «затраты» внесения изменений или помочь с планированием дальнейшей проектной активности COCOMO. Подобные вещи как правило представляют академический интерес и не находят широкого применения на практике.
MSR Tools
Состоялся первый публичный релиз набора утилит MSR Tools, предназначенных для подсчёта различных метрик кода. Это ПО — нечто среднее между представителями второй и третей вышеупомянутых групп. MSR Tools позволяет выполнять расчёт метрик для «довольно произвольных» множеств кода. Метрик как таковых немного: количество строк кода, плотность ошибок и… пока всё! Но как было сказано выше, то самое множество кода, для которого считается метрика может быть задано различными условиями. Ну например, взявшись за отдельного разработчика можно узнать сколько кода он добавил, сколько удалил, сколько его кода осталось на текущий момент, какова плотность ошибок его кода, сколько кода он удалил за прошлый год из того кода что был добавлен за позапрошлый год… и т.д.
Таким образом, хвала комбинаторике, можно получить тысячи метрик. Разумеется не все они одинаково
Как это работает
MSR Tools включает в себя набор из нескольких утилит. Прежде всего, Mapper — утилита, которая осуществляет импорт информации из системы контроля версий в реляционную базу данных. Как только база сформирована, можно не стесняясь заSQLить её до смерти. И тут Вам пригодится помощь двух других утилит. StatGenerator — генератор статистики в html позволяет в удобном виде посмотреть основные метрики. Visualizator — предназначен для построения графиков. Следует отметить, что генератор и визуализатор расширяемы и можно добавить собственную страницу в отчёт или визуализацию без пересборки основных компонентов. Для этого придётся немного подредактировать файл настроек, который по совместительству является ни чем иным как файлом конфигурации контейнера unity.
Как воспользоваться
Исходники, бинарники и примеры статистики можно найти здесь.
На данный момент имеется:
- мэппинг из SubVersion
- мэппинг из Git (с не-fast-forward слияниями пока не работает)
- расширяемый генератор статистики в html
- расширяемый визуализатор
- уже больше чем альфа
- но ещё меньше чем бета
- ах да, написано на C#
Немного, но оно бесплатно и под свободной лицензией!
Приглашаю всех заинтересованных к тестированию и контрибьюторству.