Бесплатная библиотека вычислений метрик С# (DLL)
Я хотел спросить, знаете ли вы о некоторых бесплатных библиотеках С# (dll), которые вычисляют метрики CK (в основном Cyclomatic Complexity).
Мне понадобится это для проекта, который я планирую сделать. Я знаю, что уже есть готовые решения, которые вычисляют метрики CK и отображают их вам в разных формах, но то, что мне нужно, - это тот, который я мог бы использовать из своего приложения. Поэтому, прежде чем начинать и писать, я сначала хотел спросить вас.
Спасибо
Ответы
Ответ 1
DrivenMetrics - это инструмент командной строки с открытым исходным кодом С#. Основные функциональные возможности изолированы от клиента консоли командной строки как библиотеки (основной проект доступен здесь).
Даже если он достаточно прост, он может соответствовать вашим потребностям: он свободен, подсчитывает количество строк и вычисляет циклическую сложность (количество возможных кодовых путей) методов.
Это выполняется путем прямого анализа IL благодаря Mono.Cecil (на ту же библиотеку NDepend полагается). Это позволяет проводить анализ на сборках, построенных на основе кода, написанного на С#, VB.Net,...
- Проект объявлен
здесь.
- Источник кода
доступно на github.
- Пакетная версия также доступна.
- Он работает как на Windows, так и на Mono.
UPDATE:
Другим вариантом будет удивительный жандарм, инструмент статического анализа в проекте Моно.
В качестве примера использования приведенный ниже код отображает циклическую сложность каждого метода в сборке.
ModuleDefinition module = ModuleDefinition.ReadModule(fullPathToTheAssembly);
foreach (var type in module.Types)
{
foreach (var me in type.Methods)
{
if (!me.HasBody || me.IsGeneratedCode() || me.IsCompilerControlled)
continue;
var r = AvoidComplexMethodsRule.GetCyclomaticComplexity(me);
Console.WriteLine("{0}: {1}", me.ToString(), r);
}
}
- Проект описан здесь
- Источник кода доступен на github
- Упакованные релизы также доступны
- Он работает как на Windows, так и на Mono
Ответ 2
Я использую SourceMonitor, что является хорошим бесплатным приложением, которое измеряет сложность кода и другие показатели для различных языков, включая С#, Мы выводим его из командной строки для вывода XML-данных, затем мы используем LINQ to XML для извлечения и сортировки интересующих нас данных. Затем мы используем NVelocity для создания отчетов HTML.
Я знаю, что это не управляемая библиотека, но вы можете обнаружить, что она может делать то, что вам нужно.
Ответ 3
Существует инструмент от Microsoft, который я использую для вычисления метрик кода для сборки С#.
Он включает в себя циклический комплекс, индекс ремонтопригодности и многое другое.
Подробности здесь:
http://blogs.msdn.com/b/camerons/archive/2011/01/28/code-metrics-from-the-command-line.aspx
Загрузить здесь:
http://www.microsoft.com/en-us/download/details.aspx?id=9422
Ответ 4
Это не бесплатно, но у меня были хорошие впечатления от NCover для такого рода вещей. Они также хорошо интегрируются с множеством инструментов CI.
Ответ 5
С 82 метрики кода поддерживается NDepend - это метрика кода. Инструмент Roll Royce для разработчиков .NET(однако это коммерческий инструмент).