Функция не делает возвращаемого значения, хотя возвращаются, типом не является void
Этот дефект происходит, когда функция не возвращает значение вдоль по крайней мере одного пути к выполнению. Этот дефект не происходит если:
Типом возврата функции является void
.
Путь к выполнению отключен функцией, которая не возвращает поток выполнения, такого как [[noreturn]]
функция.
Если функция имеет non-void
возвращаемое значение в его подписи, это, как ожидают, возвратит значение. Возвращаемое значение этой функции может использоваться в более поздних расчетах. Если выполнение тела функции проходит путь где return
оператор отсутствует, функциональное возвращаемое значение неопределенно. Расчеты с этим возвращаемым значением могут привести к непредсказуемым результатам.
В большинстве случаев можно зафиксировать этот дефект путем размещения return
оператор в конце тела функции. Если ваш код имеет пути к выполнению, которые не возвращают поток выполнения, задают их при помощи атрибута [[noreturn]]
.
В качестве альтернативы можно идентифицировать, какие пути к выполнению через тело функции не имеют return
оператор и добавляет return
оператор на тех путях. Часто детали результата показывают последовательность событий, которые указывают на этот путь к выполнению. Можно добавить return
оператор в соответствующей точке в пути. Если детали результата не показывают историю события, можно проследить использование, щелкните правой кнопкой по опциям по исходному коду и смотрите предыдущие связанные события. См. также Интерпретируют Результаты Polyspace Bug Finder.
Смотрите примеры мер ниже.
Если вы не хотите устранять проблему, добавьте комментарии в свой результат или код, чтобы избежать другого анализа. Смотрите Результаты Polyspace Адреса Через Исправления ошибок или Выравнивания.
Если анализ отмечает недостающий return
оператор на пути, где функция завершения процесса существует, можно сделать анализ, знающий о функции завершения процесса использование опции -termination-functions
.
Группа: Поток данных |
Язык: C | C++ |
Значение по умолчанию: On |
Синтаксис командной строки: MISSING_RETURN |
Удар: низко |