Цикломатическая сложность программного кода

9 августа 2016

Цикломатическая сложность кода определяется числом линейно независимых маршрутов через этот программный код. Для математического определения цикломатической сложности необходимо ввести ориентированный граф, узлами которого являются блоки программы, которые не содержат операторов ветвления, соединенные рёбрами. Соответственно, поток управления переходит от одного блока к другому. Цикломатическая сложность программного кода M определяется следующим образом:

M = E - N + 2P,

где: E - число рёбер в графе потока управления,
N - число узлов в графе потока управления,
P - число компонент связности.

Цикломатическая сложность кода с одной точкой входа и одной точкой выхода равна количеству точек ветвления (if, for, and, or, case, ...), содержащихся в этом коде, плюс один

Измерение цикломатической сложности позволяет определить слишком сложные и трудные в поддержке процедуры. В оригинальной публикации Томаса Маккейба рекомендуется не допускать методов с цикломатической сложностью больше 10, в следующих работах рекомендуется не допускать методы со сложностью больше 15. Для повышения поддерживаемости программного кода слишком сложные процедуры рекомендуется разбивать на несколько менее сложных.

С помощью Qualiter можно смотреть динамику изменения следующих характеристик проекта:

  1. Цикломатическая сложность всего проекта
  2. Средняя цикломатическая сложность для файлов
  3. Средняя цикломатическая сложность для классов
  4. Средняя цикломатическая сложность для методов
  5. Средняя цикломатическая сложность для методов со сложность больше 1
  6. Число методов с цикломатической сложностью больше 10
  7. Число методов с цикломатической сложностью больше 15

Литература

  1. McCabe (December 1976). «A Complexity Measure». IEEE Transactions on Software Engineering: 308–320.
  2. Википедия. Цикломатическая сложность
  3. Википедия. Компонента связности графа

Новости

  • Релиз Qualiter 4.5.0. Произведена интеграция с платформой SonarQube
    30 января 2019
  • Релиз Qualiter 3.1.0. Добавили Rest API.
    04 сентября 2018
  • Релиз Qualiter 3.0.3. Утилита для оценки необходимости рефакторинга компиляционной единицы Java кода. Доступно онлайн Demo.
    16 июля 2018
Все новости