Цикломатическая сложность кода с несколькими точками выхода - PullRequest
2 голосов
/ 15 января 2010

Как найти цикломатическую сложность функции с несколькими точками выхода? На вики-странице написано p-s + 2, где p - количество точек принятия решения, а s - количество точек выхода.

Но не должно ли больше точек выхода увеличивать цикломатическую сложность, поскольку это может привести к более независимым путям?

Приветствия

Аман

Ответы [ 3 ]

5 голосов
/ 15 января 2010

CC измеряет линейно независимые пути. Точки выхода не ДОБАВЛЯЮТ пути к коду, они ПРЕКРАЩАЮТ пути, тем самым уменьшая CC (или, по крайней мере, они, конечно, не увеличивают CC).

Другими словами, ЕДИНСТВЕННЫЙ способ добавить точки выхода - ДОБАВИТЬ больше путей (таких как IF). В противном случае код после «голой» точки выхода недоступен, поэтому сложность добавляют условные выражения, а не точки выхода.

1 голос
/ 15 января 2010

Почему бы не попробовать пробную версию NDepend ? Он будет рассчитывать цикломатическую сложность и многие другие показатели кода.

0 голосов
/ 16 января 2010

Спасибо, Майкл.Я понял свою ошибку после того, как отправил вопрос.Моя ошибка произошла из-за наблюдения, что JavaNcss (который использует исходный файл) и Xdepend (который использует файл jar), казалось, переоценили CC для фрагмента кода, который имел несколько точек выхода.Я разместил код здесь .Но используя формулу p-s + 2, ответ кажется 4. Есть ли какое-то простое объяснение, которое я пропускаю?

@ Richard: Я пробовал Xdepend (версия Ndepend, отличная от .NET).Это выглядит хорошим инструментом.Но когда он использует файлы JAR, он переоценивает CC (что они приняли в своей документации).На этом этапе я изучаю различные инструменты.Вы знаете о лучшем?

Ура.

...