Respect types in global variables (-respect-types-in-globals)

Не бросайте неуказательные глобальные переменные к указателям

Описание

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

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

Установите опцию

Пользовательский интерфейс (только десктопные решения): В вашей настройке проекта опция доступна на узле Verification Assumptions.

Командная строка: Используйте опцию -respect-types-in-globals. Смотрите информацию о командной строке.

Почему использование эта опция

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

Настройки

On

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

От (значения по умолчанию)

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

Советы

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

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

Код с опцией прочьКод с опцией на
int global;
void main(void) {
    int local;
    global = (int)&local;
    *(int*)global = 5;
    assert(local==5);
}

В этом примере, global объявляется как int переменная, но бросок к указателю. С выключенной опцией Polyspace® разрешает бросок.

int global;
void main(void) {
    int local;
    global = (int)&local;
    *(int*)global = 5;
    assert(local==5);
}

В этом примере, global объявляется как int переменная, но бросок к указателю. С включенной опцией Polyspace игнорирует бросок. Поэтому это игнорирует инициализацию local через указатель (int*)global и производит красную ошибку Non-initialized local variable когда local читается.

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

Параметр: -respect-types-in-globals
Значение по умолчанию: Off
Пример (Программа автоматического доказательства Кода): Polyspace Code Prover - источники file_name - уважайте типы в глобальных переменных
Пример (Сервер Программы автоматического доказательства Кода): сервер программы автоматического доказательства полипробела кода - источники file_name - уважайте типы в глобальных переменных