Бесплатная библиотека расчета метрик C# (DLL)

Я хотел спросить, знаете ли вы о некоторых бесплатных библиотеках C# (dlls), которые вычисляют метрики CK (главным образом Cyclomatic Complexity).

Мне нужно это для проекта, который я планирую сделать. Я знаю, что уже есть некоторые законченные решения, которые рассчитывают метрики CK и отображают их вам в различных формах, но мне нужно то, что я мог бы использовать из своего приложения. Поэтому, прежде чем начать и написать самому, я сначала хотел спросить вас.

Спасибо

5 ответов

Решение

DrivenMetrics - это инструмент командной строки C# с открытым исходным кодом. Основные функции изолированы от консольного клиента командной строки в виде библиотеки (основной проект доступен здесь).

Даже если он достаточно прост, он может соответствовать вашим потребностям: он бесплатный, подсчитывает количество строк и вычисляет цикломатическую сложность (число потенциальных путей кода) методов.

Это выполняется посредством прямого анализа IL благодаря Mono.Cecil (та же библиотека, на которую опирается NDepend). Это позволяет выполнять анализ сборок, созданных из кода, написанного на C#, VB.Net,...

  • Проект был объявлен здесь.
  • Исходный код доступен на github.
  • Пакетная версия также доступна.
  • Работает как на Windows, так и на Mono.

ОБНОВИТЬ:

Другим вариантом будет удивительный Жандарм, инструмент статического анализа из проекта Mono.

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

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

Я использую SourceMonitor- хорошее бесплатное приложение, которое измеряет сложность кода и другие показатели для различных языков, включая C#. Мы извлекаем его из командной строки для вывода XML, а затем используем LINQ to XML для извлечения и сортировки данных, которые нас интересуют. Затем мы используем NVelocity для создания отчетов HTML.

Я знаю, что это не управляемая библиотека, но вы можете обнаружить, что она может делать то, что вам нужно.

Существует инструмент от Microsoft, который я использую для вычисления метрик кода для сборок C#.

Включает цикло комплекс, индекс ремонтопригодности и многое другое.

Подробности здесь:

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

Это не бесплатно, но у меня был хороший опыт работы с NCover для такого рода вещей. Они также довольно хорошо интегрируются со многими инструментами CI.

При поддержке 82 метрик кода NDepend является метрикой кода Rolls-Royce для разработчиков.NET (однако это коммерческий инструмент).

Другие вопросы по тегам