Количество линейно независимых контуров в теле функции
Эта метрика вычисляет количество моментов принятия решения в функции и добавляет ту в общее количество. Момент принятия решения является оператором, который заставляет вашу программу переходить в два пути.
Рекомендуемый верхний предел для этой метрики равняется 10. Если цикломатическая сложность высока, код и трудно считать и может вызвать больше оранжевых проверок. Поэтому попытайтесь ограничить значение этой метрики.
Осуществлять пределы на метриках:
В пользовательском интерфейсе Polyspace® смотрите, Вычисляют Метрики сложности кода.
В Метрическом веб-интерфейсе Polyspace смотрите, Сравнивают Метрики С Целями Качества программного обеспечения.
Метрическое вычисление использует следующие правила, чтобы идентифицировать моменты принятия решения:
Оператор if
является одним моментом принятия решения.
Операторы for
и while
рассчитывают как один момент принятия решения, даже когда никакое условие не оценено, например, в бесконечных циклах.
Булевы комбинации (&&, ||)
не рассчитывают как моменты принятия решения.
Операторы case
не рассчитывают как моменты принятия решения, если они не сопровождаются оператором break
. Например, этот код имеет цикломатическую сложность два:
switch(num) { case 0: case 1: case 2: break; case 3: case 4: }
Вычисление сделано после предварительной обработки:
Макросы расширены.
Условная компиляция применяется. Блоки, скрытые путем предварительной обработки директив, проигнорированы.
Группа: Функция |
Акроним: VG |
Метрика HIS: да |