Глобальные переменные в Polyspace Bug Finder

Когда вы запускаете анализ Bug Finder™, Polyspace® делает определенные предположения об инициализации глобальных переменных. Эти предположения зависят от того, как вы объявляете и задаете глобальные переменные. Например, в этом коде

int foo(void) {
    return 1/gvar;
}
Bug Finder обнаруживает дефект division by zero с переменной 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, чтобы Найти Дефекты от Определенных Системных Входных значений.

Смотрите также

|