Цикломатическая Сложность Как Рассчитать Цикломатическую Сложность? Разработка Программного Обеспечения 2025

Мы также рассмотрим, насколько он полезен в качестве метрики для Методология программирования измерения сложности вашего кода. При тестировании белого ящика, когда желательно (или обязательно) проверить каждый оператор в модуле как минимум по одному разу. Количество тест-кейсов прямо коррелирует с цикломатической сложностью в том смысле, что количество тест-кейсов при таком подходе равно цикломатической сложности модуля.

  • Поскольку это совершенно линейный код, количество узлов компенсирует количество ребер, что дает цикломатическую сложность, равную единице.
  • Другое применение цикломатической сложности — определение количества тестов, необходимых для полного покрытия кода.
  • Цикломатическая сложность кода – это количество линейно независимых путей в нем.
  • Visual Studio и другие IDE вычисляют совокупную сложность целых классов и пространств имен, что может быть полезно для отслеживания наиболее сложных классов.
  • Допустим, тест применяется каждый раз для единственного маршрута, тогда необходимое количество раз применений теста определяется числом покрытия, равного числу путей, которые действительно могут быть использованы при работе программы.

Инструменты, Используемые Для Расчета Цикломатической Сложности:

ЦСП равна увеличенному на единицу цикломатическому числу графа программы. Метрика цикломатической сложности является важным инструментом для измерения сложности программного кода. Она помогает разработчикам и командам разработки программного обеспечения понять уровень сложности кода, определить участки требующие оптимизации цикломатическая сложность и улучшения, а также спланировать тестирование. Цикломатическая сложность позволяет принимать обоснованные решения на основе количественных данных, а не субъективных предположений.

Это другой способ сказать «число линейно независимых маршрутов через граф от входа к выходу». На графах демонстрируется в наглядном виде выполнение программы (обычно выполнение ее отдельного модуля, поскольку граф всей программы выглядел бы слишком большим и запутанным). Ниже графы выполнения операторов if-else, while, if-then-else, until.

цикломатическая сложность

Это может рассматриваться как вычисление числа линейно независимых циклов, которые существуют в графе, то есть тех циклов, которые не содержат в себе других циклов. Надо учитывать, что каждая точка выхода из цикла становится точкой входа в него, то есть по крайней мере одна итерация его для каждой точки выхода. Существует множество различных метрик и классов метрик программного кода. Она изначально была предложена Томасом Маккейбом в 1976 году и с тех пор широко применяется в инженерии программного обеспечения. Метрики программного кода широко используются во многих областях разработки программного обеспечения.

Они предоставляют информацию о структуре, сложности, поддерживаемости и других свойствах кода. Разные языки имеют разные инструменты для измерения цикломатической сложности программы. Этот код, содержащий оператор swap , имеет сложность 6, потому что существует много разных путей, по которым может идти код.

Анализаторы кода в IDE-редакторе отправляют разработчику (автоматическое) уведомление, https://deveducation.com/ если ЦС превысила пороговое значение (по дефолту 25, но можно настроить и ниже/выше). Эта мера помогает нам понять, какую работу необходимо выполнить, и насколько сложным будет программное обеспечение. Расчет цикломатической сложности программы очень прост по следующей формуле. Ответ на этот вопрос очень субъективен и зависит от того, какую метрику вы используете для измерения, которая является «лучшей» .

Хотя цикломатическая сложность – очень полезная метрика, есть плюсы и минусы ее применения в качестве метрики. Цикломатическая сложность рассчитывается только в рамках функции. Если функция вызывает другую функцию с высокой цикломатической сложностью, она считается только одним узлом и ничего не добавляет к вызывающей стороне, несмотря на то, что технически усложняет программу в общем смысле. Если смотреть по показателю когнитивной сложности, то у Си-подобных языков получается средняя сложность кода около 25, в то время как все остальные ЯП — в среднем 15. Где E — количество рёбер, N — количество узлов, P — количество предикативных узлов (то есть узлов, содержащих условие). Концепция ЦС впервые описана в 1970х Томасом Маккейбом (поэтому называется еще «сложностью программы по Маккейбу») в книге о структурном тестировании и создании правильных тест-кейсов.

Полезности Показателя Цикломатической Сложности В Разработке И Qa

цикломатическая сложность

Некоторые могут предпочесть, Possibility 1поскольку он имеет наименьшее количество строк кода, однако некоторые могут возразить, что этот вариант жертвует удобочитаемостью за счет краткости. В этом случае исправить было просто — у сопрограммы есть куча задач, поэтому я разбиваю эти задачи на более мелкие сопрограммы и заменяю основной метод вызовами подпрограмм. Общий код не изменился, как и общая сложность самого класса, но теперь основная функция не является чудовищем из 400 строк. Конечно, у вас все еще может быть ужасный код с низкой сложностью или достойный код с высокой сложностью. Но, в целом, это все еще весьма полезно для получения общего представления о том, насколько сложна программа. Например, этот код имеет цикломатическую сложность, равную единице, поскольку в нем нет ветвей, и он просто снова и снова вызывает WriteLine.

А более сложные функции напрямую приводят к более сложным модульным тестам, что может затруднить поддержку кода в долгосрочной перспективе из-за сложности тестирования. Допустим, тест применяется каждый раз для единственного маршрута, тогда необходимое количество раз применений теста определяется числом покрытия, равного числу путей, которые действительно могут быть использованы при работе программы. Другое применение цикломатической сложности — при детерминизме числа проведённых тестов, необходимых для достижения тщательного покрытия тестированием модуля. В итоге, использование метрики цикломатической сложности позволяет разработчикам принимать обоснованные решения на основе количественных данных, а не субъективных предположений. Измерение сложности кода является важным шагом в направлении создания высококачественно ПО. Метрики программного кода – это числовые индикаторы, используемые для измерения различных аспектов качества и характеристик программного кода.

Показатель ЦС имеет большое значение в тестировании, потому что он примерно показывает количество тестов, необходимых для полного покрытия кода. Этот метод в основном используется при базовом тестировании белого ящика. Цикломати́ческая сло́жность програ́ммы (англ. cyclomatic complexity of a program) — структурная (или топологическая) мера сложности компьютерной программы. Хотя высокая цикломатическая сложность любой данной функции не является концом света, она может указывать на более серьезную проблему. Функции высокой сложности сложнее поддерживать, и они подвержены большему количеству ошибок, так как есть больше вещей, которые могут пойти не так.

цикломатическая сложность

Поскольку это совершенно линейный код, количество узлов компенсирует количество ребер, что дает цикломатическую сложность, равную единице. Для примера рассмотрим нижеприведённую программу, состоящую из последовательного применения двух операторов if-then-else. Многие IDE, такие как Visible Studio, будут иметь встроенные инструменты для расчета цикломатической сложности и других показателей кода для всей вашей кодовой базы. Часто проверка кода может учитывать цикломатическую сложность, даже помечая проблемные функции, которые могут потребовать ручной проверки. Это может сделать его очень полезным инструментом для поддержания чистой и упорядоченной кодовой базы.