Получение цикломатической сложности в .NET - PullRequest
5 голосов
/ 08 апреля 2009

Я знаю, что я могу получить доступ к цикломатической сложности моего кода в Visual Studio 2008 Team Explorer, щелкнув правой кнопкой мыши и выбрав «Рассчитать метрики кода». Я хотел бы предоставить эти данные для веб-приложения, чтобы отобразить его. Кто-нибудь знает какой-либо способ доступа к этим данным через API?

Спасибо за вашу помощь!

Ответы [ 4 ]

2 голосов
/ 27 июня 2011

Как описано в этом ответе , можно использовать API инструмента Gendarme с открытым исходным кодом для расчета цикломатической сложности метода

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);
    }
}
2 голосов
/ 08 апреля 2009

Я использую NDepend для подобных вещей. Вы можете создавать CQL-запросы в NDepend и выполнять их.
Пример:

SELECT METHODS  WHERE CC > 8

возвращает методы с цикломатической сложностью больше 8.

1 голос
/ 20 мая 2011

Нет API. Но вы можете прочитать файл XML, сгенерированный Code Metrics Power Tool . Таким образом, вы должны сгенерировать XML-файл метрик кода с помощью командной строки, например:

metrics /f:MyAssembly.dll /o:MetricsResults.xml

Затем извлеките нужные данные из MetricsResults.xml.

Подробнее об электроинструменте здесь .

Если вы хотите запустить метрики кода в вашей сборке TFS, см. здесь и здесь , чтобы узнать варианты.

0 голосов
/ 08 апреля 2009

Не знаю - есть ли в Visual Studio какие-либо API-интерфейсы такого рода? - но вычисление цикломатической сложности достаточно просто. Жандарм может быть вашим ответом.

...