-stubbed-pointers-are-unsafe)Укажите, что указатели среды могут быть небезопасными для отмены привязки, если не установлено иное
Этот параметр влияет только на анализ программы проверки кода.
Эта опция недоступна для кода, сгенерированного в моделях MATLAB ® или Simulink ®.
Укажите, что при проверке указатели среды должны рассматриваться как небезопасные, если иное не ограничено. Указатели среды - это указатели, которым могут присваиваться значения вне кода.
Указатели среды включают в себя:
Глобальные или extern указатели.
Указатели возвращены из упорных функций.
Функция блокируется, если код не содержит определения функции или вы переопределяете определение функции с помощью опции Functions to stub (-functions-to-stub).
Параметры указателей функций, вызовы которых формируются программным обеспечением.
Вызов функции генерируется, если проверяется модуль или библиотека и модуль или библиотека не имеют явного вызова функции. Можно также принудительно создать вызов функции с помощью опции Functions to call (-main-generator-calls).
Пользовательский интерфейс (только для настольных ПК): в конфигурации проекта эта опция доступна в узле Проверочные допущения.
файл командной строки и параметров: Использовать параметр -stubbed-pointers-are-unsafe. См. раздел Сведения о командной строке.
Используйте эту опцию для того, чтобы проверка делала более консервативные предположения о указателях из внешних источников.
Если этот параметр задан, проверка считает, что указатели среды могут иметь NULL значение. При чтении указателя среды без проверки NULL, проверка Незаконно дереферентированного указателя показывает потенциальную ошибку оранжевым цветом. Сообщение, связанное с оранжевой галочкой, показывает, что указатель может быть NULL.
Проверка считает, что указатели среды могут иметь NULL значение.
Проверка считает, что указатели среды:
Не может иметь NULL значение.
Точки в пределах допустимых границ.
Включите эту опцию на этапе интеграции. На этой фазе предоставляется полный код для проверки. Даже если оранжевая проверка происходит из внешних источников, вы, вероятно, разместите защиту от небезопасных указателей из таких источников. Например, при получении указателя из неизвестного источника выполняется проверка указателя для NULL значение.
Отключите эту опцию на этапе тестирования установки. На этой фазе основное внимание уделяется ошибкам, возникающим в установке.
При проверке реализации кода runnables AUTOSAR средство проверки кода предполагает, что аргументы указателя на runnables и указатели возвращены из Rte_ функции не являются NULL. Этот параметр нельзя использовать для изменения предположения. См. раздел Запуск Polyspace по коду AUTOSAR с консервативными допущениями.
Если этот параметр включен, количество оранжевых чеков в коде может увеличиться.
| Безопасность указателей среды | Небезопасные указатели среды |
|---|---|
Флажок «Незаконно» имеет зеленый цвет. Проверка предполагает, что int func (int *env_ptr) {
return *env_ptr;
} | Проверка указателя «Незаконно» имеет оранжевый цвет. Проверка предполагает, что int func (int *env_ptr) {
return *env_ptr;
} |
Если этот параметр включен, количество серых проверок может уменьшиться.
| Безопасность указателей среды | Небезопасные указатели среды |
|---|---|
Проверка предполагает, что #include <stdlib.h>
int func (int *env_ptr) {
if(env_ptr!=NULL)
return *env_ptr;
else
return 0;
} | Проверка предполагает, что #include <stdlib.h>
int func (int *env_ptr) {
if(env_ptr!=NULL)
return *env_ptr;
else
return 0;
} |
Вместо того чтобы считать все указатели среды безопасными или небезопасными, можно по отдельности ограничить некоторые указатели среды. См. описание параметра «Инициализация указателя» в разделе «Внешние ограничения для анализа в пространстве».
При индивидуальном ограничении указателя сначала задается режим инициализации, а затем с помощью параметра «Инициализация указателя» указывается, является ли указатель Null, Not Null, или Maybe Null. В зависимости от режима инициализации можно переопределить глобальную спецификацию для всех указателей среды или нет.
Если для параметра Init Mode указателя установлено значение INIT или PERMANENT, выбор параметра «Инициализация указателя» переопределяет спецификацию для этой опции. Например, если указать Not NULL для указателя среды ptr, проверка предполагает, что ptr не имеет значение NULL, даже если указать, что указатели среды должны считаться небезопасными.
Если для параметра «Режим инициализации» задано значение MAIN GENERATOR, проверка использует вашу спецификацию для этой опции.
Для указателей, возвращенных из упорных функций, опция MAIN GENERATOR недоступен. Если переопределить глобальную спецификацию для такого указателя с помощью опции Initialize Pointer в ограничениях, то нельзя будет переключиться обратно в глобальную спецификацию без изменения опции Initialize Pointer.
Если этот параметр отключен, проверка считает, что отступления на всех глубинах указателей допустимы.
Например, все отклонения считаются допустимыми в этом коде:
int*** stub(void);
void func2() {
int ***ptr = stub();
int **ptr2 = *ptr;
int *ptr3 = *ptr2;
}Параметр: -stubbed-pointers-are-unsafe |
| По умолчанию: Откл. |
Пример (проверка кода): polyspace-code-prover -sources |
Пример (сервер проверки кода): polyspace-code-prover-server -sources |