Цикломатическая сложность кода с несколькими точками выхода
-
20-09-2019 - |
Вопрос
Как найти цикломатическую сложность функции с несколькими точками выхода?На вики-странице написано p-s + 2, где p - количество точек принятия решения, а s - количество точек выхода.
Но не должно ли большее количество точек выхода увеличивать цикломатическую сложность, поскольку это может привести к более независимым путям?
Ваше здоровье,
Aman
Решение
Почему бы не попробовать пробный NDepend?Он будет вычислять цикломатическую сложность и многие другие показатели кода.
Другие советы
CC измеряет линейно независимые пути.Точки выхода не ДОБАВЛЯЮТ пути к коду, они ЗАВЕРШАЮТ пути, тем самым уменьшая CC (или, по крайней мере, они, конечно, этого не делают увеличение CC).
Другими словами, единственный способ добавить точки выхода - это ДОБАВИТЬ больше путей (условия типа IF).В противном случае код после "голой" точки выхода недоступен, поэтому сложность добавляют условия, а не точки выхода.
Спасибо, Майкл.Я осознал свою ошибку после того, как опубликовал этот вопрос.Моя ошибка возникла из наблюдения, что JavaNCSS (который использует исходный файл) и Xdepend (который использует файл jar) оба, казалось, переоценили CC для фрагмента кода, который имел несколько точек выхода.Я опубликовал код здесь .Но при использовании формулы p-s + 2 ответ, по-видимому, будет равен 4.Есть ли какое - то простое объяснение , которого мне не хватает ?
@Ричард:Я попробовал Xdepend (не .СЕТЕВАЯ версия Ndepend).Это выглядит хорошим инструментом.Но когда он использует jar-файлы, он переоценивает CC (который они приняли в своей документации).На данном этапе я изучаю различные инструменты.Знаете ли вы что-нибудь получше?
Ваше здоровье.