Когда вы запускаете анализ Bug Finder™, Polyspace® делает определенные предположения об инициализации глобальных переменных. Эти предположения зависят от того, как вы объявляете и задаете глобальные переменные. Например, в этом коде
int foo(void) {
return 1/gvar;
}
gvar
в этих случаях:
Вы задаете int gvar;
в исходном коде и обеспечивают main
функция, которая вызывает foo
. Bug Finder следует стандартам ANSI, которые утверждают, что переменная инициализируется, чтобы обнулить.
Вы задаете int gvar;
или объявите extern int gvar;
в исходном коде. Другой вызовы функции foo
и наборы gvar=0
. В противном случае, когда ваши исходные файлы являются неполными и не содержат main
функция, Bug Finder не делает предположения об инициализации gvar
.
Вы объявляете const int gvar;
. Bug Finder принимает gvar
инициализируется, чтобы обнулить из-за const
ключевое слово.
За счет возможно более длинного времени выполнения можно выполнить более исчерпывающий анализ, где все значения рассматриваются для каждого чтения глобальной переменной foo
или его вызываемых при показе дефектов. Смотрите Расширяют Средства проверки Bug Finder, чтобы Найти Дефекты от Определенных Системных Входных значений.
Аналитические предположения Bug Finder | Входные параметры в Polyspace Bug Finder