exponenta event banner

Просмотр и исправление проверок недоступных функций

Выполните один или несколько из этих шагов, пока не определите исправление для проверки недоступности функции. Существует несколько способов исправления этой проверки. Описание проверки и примеры кода см. в разделе Function not reachable.

Если установлено, что проверка представляет собой защитный код, добавьте в результат или код комментарий и обоснование, объясняющие, почему вы не изменили код. См. раздел Результаты анализа пространства адресов с помощью исправлений ошибок или обоснований.

Примечание

По умолчанию эта проверка не включена. Чтобы включить эту проверку, необходимо указать соответствующую опцию анализа. Дополнительные сведения см. в разделе Detect uncalled functions (-uncalled-function-checks).

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

Выберите флажок на панели Список результатов (Results List). На панели Источник (Source) можно увидеть определение функции серым цветом.

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

Определите место вызова функции и проверьте, почему все узлы вызова функции недоступны. В интерфейсе пользователя Polyspace ® можно выполнить только следующие действия.

  1. Выберите флажок на панели Список результатов (Results List).

  2. На панели Сведения о результате (Result Details) нажмите кнопку.

    На панели «Иерархия вызовов» отображаются вызывающие абоненты функции, обозначаемой.

  3. На панели «Иерархия вызовов» выберите каждого вызывающего абонента.

    Это действие приводит к вызову функции на панели Источник.

  4. Проверьте, вызывается ли сам вызывающий абонент из недоступного кода. Если определение вызывающей стороны полностью серым цветом на панели «Источник», оно вызывается из недоступного кода. Выполните тот же самый процесс исследования, начиная с шага 1, для вызывающего абонента.

  5. В противном случае выясните, почему раздел кода, из которого вызывается функция, недоступен.

    Код может быть недоступен, поскольку он следует за красной проверкой или содержит серую проверку недостижимого кода.

Примечание

Если имя вызывающего абонента не отображается на панели «Иерархия вызовов», определите, выполняется ли вызов функции косвенно, например, с помощью указателя функции. Определите, возникает ли несоответствие между объявлением указателя функции и вызовом функции через указатель.

Polyspace помещает красную или оранжевую проверку состояния корректности для непрямого вызова, если происходит несоответствие. Чтобы обнаружить несоответствие в непрямых вызовах функций, найдите проверку условия Корректность на панели Список результатов (Results List). Дополнительные сведения см. в разделе Correctness condition.