exponenta event banner

Контекст чувствительности (-context-sensitivity)

Сохранение контекстной информации о вызове для определения вызова функции, вызвавшего ошибки

Описание

Этот параметр влияет только на анализ программы проверки кода.

Укажите функции, для которых при проверке должна храниться информация о контексте вызова. Если функция вызывается несколько раз, использование этой опции позволяет различать различные вызовы.

Задать опцию

Пользовательский интерфейс (только для настольных ПК): в конфигурации проекта опция доступна в узле Точность.

файл командной строки и параметров: Использовать параметр -context-sensitivity. См. раздел Сведения о командной строке.

Зачем использовать этот параметр

Предположим, функция вызывается дважды в коде. Цвет проверки для каждой операции в теле функции является совокупным результатом обоих вызовов. Если требуется различать цвета в двух вызовах, используйте эту опцию.

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

Руководство по использованию этой опции см. в разделе Идентификация вызова функции с ошибкой времени выполнения.

Настройки

По умолчанию: none

none

Программное обеспечение не хранит информацию о контексте вызова для функций.

auto

Программное обеспечение хранит информацию о контексте вызова для сдачи на хранение:

  • Функции, формирующие листья дерева вызовов. Эти функции вызываются другими функциями, но сами функции не вызываются.

  • Небольшие функции. Программное обеспечение использует внутренний порог для определения того, является ли функция небольшой.

custom

Программа хранит контекстную информацию вызова для указанных функций. Чтобы ввести имя функции, щелкните значок.

Совет

  • При выборе этой опции всплывающие подсказки не отображаются в теле функций, пользующихся преимуществами этой опции (при этом контексты вызова остаются отдельными).

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

    Например, предположим, что эта функция вызывается с аргументами -1 и 1:

    int isPositive (int num) {
       if(num < 0)
          return 0;
       return 1;
    }
    При использовании опции с этой функцией в качестве аргумента существуют две недостижимые проверки кода:

    • Проверка на if серый, потому что, когда функция вызывается с аргументом -1, if условие всегда соответствует действительности.

    • Проверка кода внутри if ветвь серого цвета, поскольку при вызове функции с аргументом 1 if условие всегда имеет значение false.

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

Информация командной строки

Параметр: -context-sensitivity
Значение: function1[,function2,...]
По умолчанию: none
Пример (проверка кода): polyspace-code-prover -sources file_name -context-sensitivity myFunc1,myFunc2
Пример (сервер проверки кода): polyspace-code-prover-server -sources file_name -context-sensitivity myFunc1,myFunc2

Чтобы программное обеспечение могло определить, какие функции получают контекстное хранилище вызовов, используйте опцию -context-sensitivity-auto.