Аналитические предположения программы автоматического доказательства кода

Предположения используются во время верификации кода

Иногда, оранжевые регистрации ваших результатов верификации следуют из предположения. Если вы не можете проследить оранжевую проверку до ошибки кодирования, проверяйте список предположений Polyspace®.

  1. Определите, можно ли идентифицировать предположение, которое вызывает проверку.

  2. Если можно ослабить предположение с помощью опции верификации, повторно выполнить верификацию с помощью той опции. В противном случае добавьте комментарий в своем результате или код, объясняющий, почему вы сохраняете код.

Чтобы видеть предположения, что можно измениться в инструментальной панели результата, выбирают View analysis assumptions for results. Для более широкого списка предположений смотрите здесь.

Темы

Почему верификация Polyspace использует приближения

Узнать, как статическая верификация использует приближения, чтобы выполнить превосходящую проверку ошибки времени выполнения по сравнению с динамическими подходами.

Переменные диапазоны

Верификация использует тип данных внешней переменной, чтобы извлечь ее возможную область значений значений.

Заблокированные функции

Неопределенные функции тупиков верификации или функции, которые вы хотите заблокированный и делаете определенные предположения об их аргументах и возвращаемых значениях.

Инициализация глобальных переменных

Верификация принимает инициализацию глобальных переменных по стандартам ANSI® C, например, 0 для int.

Энергозависимые переменные

Верификация принимает, что энергозависимая переменная может принять любое возможное значение в любой точке в вашем коде.

Определения и объявления

Верификация предоставляет различные поведения для необъявленных и неопределенных переменных или функций.

Стандартные плавающие стандартные программы библиотеки

Для некоторых плавающих стандартных программ библиотеки стандарта 2D аргумента верификация может проигнорировать аргументы функции и принять, что функция возвращает все возможные значения в своей области значений.

Объединения

Верификация принимает все возможные значения, если вы пишете в члена профсоюза, но читаете назад различный член того же объединения.

Переменный бросок как пустой указатель

Верификация теряет точность, если вы бросаете переменную к void* указатель.

Неявные преобразования типа данных

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

Используя memset и memcpy

Верификация проверяет только на определенные вопросы, когда вы используете memcpy и memset, и делает некоторые предположения после его использования.

Директивы #pragma

Верификация учитывает только определенный #pragma директивы, потому что большинство таких директив не относится к верификации.

Ассемблерный код

Верификация распознает встроенные ассемблеры вводящий ассемблерный код и игнорирует операции в ассемблерном коде.

Определение использования стека программы

Верификация оценивает использование стека от иерархии вызова функции и размеров локальной переменной.

Ограничения верификации Polyspace

Ищите список подтвержденных ограничений верификации Polyspace относительно определенных построений кода.