exponenta event banner

Проверка и исправление пустых проверок метода вызова этого указателя

Выполните один или несколько из этих шагов, пока не определите исправление для проверки метода вызова Null this-pointer. Описание проверки и примеры кода см. в разделе Null this-pointer calling method.

Иногда, особенно для оранжевой проверки, можно определить, что проверка представляет собой не реальную ошибку, а предположение Polyspace ®, которое не соответствует вашему коду. Если для смягчения предположения можно использовать опцию анализа, повторно запустите проверку с помощью этой опции. В противном случае в результат или код можно добавить комментарий и обоснование.

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

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

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

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

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

    В этом примере указатель, используемый для вызова метода addNewClient может быть NULL.

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

    В этом примере проверка может быть связана с упорной функцией. returnPointer.

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

Найти путь выполнения, по которому указателю присваивается значение NULL или присвоенные значения из неопределенной функции или неизвестных входов функции. В последнем случае программное обеспечение предполагает, что указатель может быть NULL.

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

  • Если на панели Сведения о результате (Result Details) отображается последовательность инструкций, которые приводят к проверке, выберите каждую инструкцию и выполните трассировку до основной причины.

  • Если на панели Сведения о результате (Result Details) отображается номер строки вероятной причины проверки, в интерфейсе пользователя Polyspace щелкните правой кнопкой мыши панель Источник (Source). Выберите «Перейти к строке».

  • Если панель Сведения о результате (Result Details) не приводит к первопричине, с помощью панели Источник (Source) в интерфейсе пользователя Polyspace найдите, каким образом может быть указатель, используемый для вызова метода NULL.

    1. Щелкните указатель правой кнопкой мыши и выберите Поиск всех привязок (Search For All References).

    2. Найдите каждый предыдущий экземпляр, где указателю назначен адрес.

    3. Для каждого экземпляра на панели «Источник» установите курсор на указатель. Подсказка указывает, может ли указатель быть NULL.

      Возможное исправление: Если указатель может быть NULL, разместите чек для NULL сразу после назначения.

      if(ptr==NULL)
        /* Error handling*/
      else {
        .
        .
      	}
    4. Если указатель отсутствует NULL, проверьте, происходит ли назначение только в ветви условного оператора. Исследовать, когда эта ветвь не выполняется.

      Возможное исправление: назначьте допустимый адрес указателю во всех ветвях условного оператора.