.net - Как проанализировать, сколько путей кода в методе - PullRequest
6 голосов
/ 01 марта 2011

Существует ли (предпочтительный бесплатный) инструмент, который может анализировать, сколько различных комбинаций возможно в методе?В настоящее время я занимаюсь рефакторингом метода, который имеет много много операторов if / switch, и мне любопытно, как много возможных способов выполнения этого метода было.

Допустим, у меня есть простой метод:

public void DoSomething(bool flag1, int value)
{

    if (flag1)
    {
        if (value > 0)
        {
            Console.WriteLine("Flag1 & value > 0");
            return;
        }
        else
        {
            Console.WriteLine("Flag1 & value <= 0");
            return;
        }
    }
    elseif (value > 0 and value < 10)
    {
        Console.WriteLine("Flag1 is false and value between 0 & 10");
        return;
    }

    if (value < 0)
    {
        Console.WriteLine("Flag1 = false & value <= 0");
        return;
    }
    elseif(value = 0)
    {
        Console.WriteLine("Flag1 = false & value >= 10");
        return;
    }

    Console.WriteLine("nothing else matched");

}

должно быть 6 возможных способов выполнения этого метода.Я знаю, что есть инструменты, которые могут рассчитать это число для меня (я думаю, Visual Studio Ultimate может сделать это, но, к сожалению, у меня есть только Профессиональная версия).

Может быть, кто-то знает хороший инструмент, который может это сделать.

Ответы [ 6 ]

3 голосов
/ 01 марта 2011

Вы имеете в виду Cyclomatic Complexity , и этот расчет уже включен в VS 2010, отметьте здесь в MSDN.

2 голосов
/ 01 марта 2011

Я использую инструмент, который можно интегрировать в VS2008 и VS2010.Его можно найти по http://www.blunck.info/ccm.html.

1 голос
/ 01 марта 2011

Вы также можете использовать инструмент NDepend (интегрированный в Visual Studio 2010, 2008, 2005), который может вычислять цикломатическую сложность в коде .NET:

Cyclomatic Complexity on IL-код полезен, если вы декомпилируете сборку без соответствующего исходного кода.

1 голос
/ 01 марта 2011

Метрики кода для Visual Studio

Вам нужна цикломатическая сложность.

1 голос
/ 01 марта 2011

Метрика, которую вы ищете - «цикломатическая сложность». Есть несколько бесплатных инструментов, но я использовал только встроенные метрики VS 2008 pro, поэтому я не могу судить о них, но это должно облегчить их поиск.

например. http://www.codeproject.com/KB/architecture/Cyclomatic_Complexity.aspx

0 голосов
/ 01 марта 2011

CodeMetrics - это бесплатное дополнение для скоро уже не бесплатного рефлектора. Понятия не имею, насколько это хорошо, я получил правильную версию VS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...