goto
statements exceeds thresholdКоличество goto
операторы в функции больше заданного порога
Этот дефект возникает на функции, когда количество goto
операторы в функции больше, чем заданный порог. Для получения дополнительной информации о том, как Polyspace вычисляет количество goto
операторы, см. Number of Goto Statements
Polyspace® использует пороговый нуль по умолчанию, если вы не задаете пороговое значение. Чтобы задать файл выбора, в котором можно задать порог, используйте Set checkers by file (-checkers-selection-file)
. Также см. «Уменьшение сложности программного обеспечения при помощи Polyspace Checkers».
Когда вы импортируете комментарии из предыдущих анализов при помощи polyspace-comments-import
Polyspace копирует любую рецензирующую информацию о метрике кода Number of Goto Statements
в предыдущем результате этой проверки в текущем результате. Если текущий результат содержит ту же метрику кода, информация проверки также копируется в метрику кода.
Нарушение этой проверки может указать, что:
Модуль имеет слишком сложный поток выполнения.
Модуль может содержать неожиданную или незапланированную разработку.
С несколькими goto
операторы, трудно определить точный порядок выполнения кода, который может привести к ошибке или правильному результату. Эти факторы затрудняют обслуживание и отладку модуля.
Чтобы исправить эту проверку, измените порог проверки или измените код. Можно заменить большинство применений goto
оператор более простыми структурами управления. В образцах, когда a goto
оператор необходим, документируйте его и обосновывайте средство проверки с помощью аннотации в коде. Можно хотеть изменить порог, чтобы избежать запуска этой проверки при проверке устаревших баз кодов.
Лучшая практика состоит в том, чтобы проверить сложность модуля на ранних стадиях разработки, чтобы избежать дорогостоящего рефакторинга после разработки.
Группа: Комплексность программного обеспечения |
Язык: C | C++ |
Акроним:
SC13
|
Порог по умолчанию: 0 |