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