Non-initialized variable

Переменная, отличная от локальной, не инициализируется перед чтением

Описание

Эта проверка происходит, когда вы читаете переменные, которые не являются локальными (глобальные или статические переменные). Это определяет, инициализирована ли считываемая переменная.

По умолчанию Polyspace® считает, что глобальные переменные инициализированы. Глобальные переменные проверяются верификацией только в том случае, если вы препятствуете этой инициализации по умолчанию. См. также Допущения об инициализации глобальной переменной.

Для получения дополнительных примеров инициализации типов комплексных данных смотрите эквивалентную проверку для локальных переменных, Non-initialized local variable.

Примеры

расширить все

int globVar;
int getVal();

void main() {
 int val = getVal();
 if(val>=0 && val<= 100)
   globVar += val;
}

В этом примере globVar не имеет начального значения при увеличении. Поэтому проверка Non-initialized variable приводит к красной ошибке.

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

Коррекция - Инициализируйте глобальную переменную перед использованием

Одной из возможных коррекций является инициализация глобальной переменной globVar перед использованием.

int globVar;
int getVal();

void main() {
 int val = getVal();
 globVar = 0;
 if(val>=0 && val<= 100)
   globVar += val;
}

Проверяйте информацию

Группа: Поток данных
Язык: C | C++
Акроним: NIV