Чтобы избежать бездоказательных результатов (оранжевые проверки) от причин вне вашего кода, Программа автоматического доказательства Кода принимает, что определенные виды входных параметров безопасны определенными способами. Например, указатели из внешних источников приняты непустой указатель по умолчанию. Чтобы видеть список предположений, что можно вернуться с помощью аналитических опций на панели Dashboard в пользовательском интерфейсе Программы автоматического доказательства Кода, выбирают View analysis assumptions for results. Чтобы перейти к опции, которая изменяет предположение, щелкните правой кнопкой по предположению.
Для более всестороннего списка предположений смотрите здесь. Этот список показывает и разрешающие и консервативные предположения, сделанные в анализе Программы автоматического доказательства Кода по умолчанию.
Почему верификация Polyspace использует приближения
Узнать, как статическая верификация использует приближения, чтобы выполнить превосходящую проверку ошибки времени выполнения по сравнению с динамическими подходами.
Верификация использует тип данных внешней переменной, чтобы извлечь ее возможную область значений значений.
Неопределенные функции тупиков верификации или функции, которые вы хотите заблокированный и делаете определенные предположения об их аргументах и возвращаемых значениях.
Инициализация глобальных переменных
Верификация принимает инициализацию глобальных переменных по стандартам ANSI® C, например, 0 для int
.
Верификация принимает, что энергозависимая переменная может принять любое возможное значение в любой точке в вашем коде.
Верификация предоставляет различные поведения для необъявленных и неопределенных переменных или функций.
Стандартные плавающие стандартные программы библиотеки
Для некоторых плавающих стандартных программ библиотеки стандарта 2D аргумента верификация может проигнорировать аргументы функции и принять, что функция возвращает все возможные значения в своей области значений.
Верификация принимает все возможные значения, если вы пишете в члена профсоюза, но читаете назад различный член того же объединения.
Переменный бросок как пустой указатель
Верификация теряет точность, если вы бросаете переменную к void*
указатель.
Неявные преобразования типа данных
Верификация может принять неявное преобразование типов для бинарных операций в зависимости от типов данных операнда.
Верификация проверяет только на определенные вопросы, когда вы используете memcpy
и memset
, и делает некоторые предположения после его использования.
Верификация учитывает только определенный #pragma
директивы, потому что большинство таких директив не относится к верификации.
Верификация распознает встроенные ассемблеры вводящий ассемблерный код и игнорирует операции в ассемблерном коде.
Определение использования стека программы
Верификация оценивает использование стека от иерархии вызова функции и размеров локальной переменной.
Ограничения верификации Polyspace
Ищите список подтвержденных ограничений верификации Polyspace® относительно определенных построений кода.