exponenta event banner

Типы уважения в полях (-respect-types-in-fields)

Не приводить к указателям не указательные поля структуры

Описание

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

Укажите, что поля структуры, изначально не объявленные как указатели, не будут преобразованы в указатели позже.

Задать опцию

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

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

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

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

Настройки

На

Проверка предполагает, что поля структуры, изначально не объявленные как указатели, не будут преобразованы в указатели позже.

Код с выключенной опциейКод с опцией on
struct {
    unsigned int x1;
    unsigned int x2;
} S;

void funct(void) {
    int var, *tmp;
    S.x1 = &var;     
    tmp = (int*)S.x1;
    *tmp = 1;                     
    assert(var==1);
}

В этом примере поля S объявлены как целые числа, но S.x1 приводится к указателю. Если опция выключена, Polyspace ® разрешает отливку.

struct {
    unsigned int x1;
    unsigned int x2;
} S;

void funct(void) {
    int var, *tmp;
    S.x1 = &var;     
    tmp = (int*)S.x1;
    *tmp = 1;                     
    assert(var==1);
}

В этом примере поля S объявлены как целые числа, но S.x1 приводится к указателю. При включенной опции Полиспейс игнорирует отливку. Поэтому он игнорирует инициализацию var через указатель (int*)S.x1 и создает красную неинициализированную ошибку локальной переменной, когда var считывается.

Выкл. (по умолчанию)

Проверка предполагает, что поля структуры могут быть преобразованы в указатели, даже если они не объявлены как указатели.

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

Параметр: -respect-types-in-fields
По умолчанию: Откл.
Пример (проверка кода): polyspace-code-prover -sources file_name -respect-types-in-fields
Пример (сервер проверки кода): polyspace-code-prover-server -sources file_name -respect-types-in-fields