Цикломатическая сложность функции больше заданного цикломатического порога сложности функции
Polyspace® вычисляет цикломатическую сложность функции путем добавления одной в количество моментов принятия решения. Момент принятия решения является оператором, который заставляет вашу программу переходить в два пути. Этот дефект повышен, когда цикломатическая сложность функции больше заданного цикломатического порога сложности. Для получения дополнительной информации о том, как Polyspace вычисляет цикломатическую сложность, смотрите Cyclomatic Complexity
.
Polyspace использует порог по умолчанию 10, если вы не задаете порог. Чтобы задать файл выбора, где можно установить порог, используйте Set checkers by file (-checkers-selection-file)
. Также смотрите Сложность Reduce Software при помощи Средств проверки Polyspace.
Когда вы импортируете комментарии из предыдущих исследований при помощи polyspace-comments-import
, Polyspace копирует любую информацию об анализе о метрике кода Cyclomatic Complexity
в предыдущем результате к этому средству проверки в текущем результате. Если текущий результат содержит ту же метрику кода, информация об анализе копируется в метрику кода также.
Нарушение этого средства проверки может указать, что функция содержит слишком много ветвей. Такие функции затрудняют тест и могут содержать неизвестные дефекты или ошибки, которые затрудняют отладку.
Зафиксировать эту проверку:
Осуществите рефакторинг свой код, чтобы избежать вложенных структур управления.
Осуществите рефакторинг свой код, чтобы разделить комплексную функцию в несколько функций, которые более просты и легки, чтобы протестировать.
Измените XML-файл выбора средства проверки, чтобы повысить цикломатический порог сложности.
Лучшая практика состоит в том, чтобы проверять сложность модуля рано в разработке, чтобы избежать дорогостоящего рефакторинга постразработки.
Группа: сложность программного обеспечения |
Язык: C | C++ |
Акроним:
SC17
|
Порог по умолчанию: 10 |