Цикломатическая сложность функции больше заданного цикломатического порога сложности функции
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 |