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