Проверьте и исправьте функцию, не возвращающую проверки значений

Выполните один или несколько из следующих шагов до тех пор, пока вы не определите исправление для проверки Function not returning value. Для получения описания примеров проверки и кода смотрите Function not returning value.

Общий рабочий процесс, который применяется ко всем проверкам, см. в разделе Интерпретация результатов Prover кода в пользовательском интерфейсе рабочего стола Polyspace.

Шаг 1: Интерпретируйте информацию о проверке

Выберите проверку на панели Results List. На панели Result Details отображаются дополнительные сведения о проверке.

Вы можете увидеть:

  • Непосредственная причина проверки.

    В этом примере программное обеспечение определило, что функция с не- void тип возврата может не иметь return оператор.

  • Вероятная первопричина проверки, если она указана.

    В этом примере программное обеспечение определило, что проверка, возможно, связана с путем. Существует более одного вызова функции, и проверка является зеленой по крайней мере при одном вызове.

Шаг 2: Определите первопричину проверки

Определите, почему return оператор не существует в определенных путях выполнения.

  1. Просмотрите тело функции для return операторы.

  2. Если вы находите return оператор:

    1. Посмотрите, return ли оператор возникает в блоке внутри функции.

      Для образца, return оператор происходит в if блок. Путь выполнения, который не входит в if блок обходит return оператор.

    2. Проверьте, можно ли идентифицировать пути выполнения, которые обходят return оператор.

      Для образца, if блок, который содержит return оператор обходится для определенных входных параметров функции.

    3. Если функция вызывается в коде несколько раз, можно определить, какой вызов функции привел к обходу return оператор. Используйте опцию Контекст чувствительности (Sensitivity Context), чтобы определить цвет проверки для каждого вызова функции.

Возможное исправление: Если тип возврата функции неправильен, измените его. В противном случае добавьте return оператор на всех путях выполнения. Например, если только часть ветвей if-else if-else условие иметь return оператор, добавить return оператор в остальных ветвях. Также добавьте return оператор за пределами if-else if-else состояние.