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