Глобальные переменные в 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 Checkers для поиска дефектов из значений Входа конкретной системы».

См. также

|