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