Цикломатическая сложность в Visual Studio - PullRequest
0 голосов
/ 03 октября 2018

Я делаю некоторые тесты с метриками кода Visual Studio.Поскольку я могу вычислить цикломатическую сложность, каждый if, while, for - операторы увеличивают сложность на 1. У меня есть следующий простой метод:

static bool ContainsNegative(int a, int b, int c, int d)
    {
        if (a < 0 || b < 0 || c < 0 || d < 0) return false;
        return true;
    }

Но для этого, CyclomaticСложность равна 5 вместо 2 (1 для метода + 1 для if).Мой вопрос - это потому, что метрики кода вычисляют каждое условие в операторе if как отдельный if?Т.е. мой метод эквивалентен:

static bool ContainsNegative(int a, int b, int c, int d)
    {
        if (a < 0) return false;
        if (b < 0) return false;
        if (c < 0) return false;
        if (d < 0) return false;
        return true;
    }

Вот экран с результатами: Cyclomatic Complexity in Visual Studio

Также есть список со всеми правилами, подробно описанными?

Спасибо!

1 Ответ

0 голосов
/ 03 октября 2018

Cyclomatic Complexity измеряет количество путей через функцию.Поскольку вы предлагаете, это означает, что 1 добавляется для каждого оператора потока управления, плюс 1 для каждого логического НЕ, И и ИЛИ в каждом условии.

Что говорит вам значение 5, так это то, что вам потребуется 5 едиництесты, чтобы получить 100% код покрытия вашей функции.

...