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

Polyspace® Code Prover™ проверяет каждую операцию в ваш код для определенных ошибок времени выполнения и отображает результат как красную, зеленую или оранжевую проверку. Для получения дополнительной информации смотрите Цвета Результата и Исходного кода Программы автоматического доказательства Кода.

Необходимо рассмотреть красную или оранжевую проверку и определить, зафиксировать ли код. Таблицы ниже приводят проверки, которые выполняет Polyspace Code Prover и как можно рассмотреть их.

Проверки потока данных

ПроверятьКак рассмотретьДетали
Function not called

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

Рассмотрите и зафиксируйте функцию, не вызванную проверки
Function not reachable

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

Рассмотрите и зафиксируйте функцию не достижимые проверки
Non-initialized local variable

Найдите предшествующие переменные инициализации, если кто-либо и видит, может ли ваша программа обойти их.

Рассмотрите и зафиксируйте неинициализированные проверки локальной переменной
Non-initialized pointer

Найдите инициализации обратного указателя, если кто-либо и видит, может ли ваша программа обойти их.

Рассмотрите и зафиксируйте неинициализированные проверки указателя
Non-initialized variable

Найдите предшествующие инициализации глобальной переменной, если кто-либо и видит, может ли ваша программа обойти их.

Рассмотрите и зафиксируйте неинициализированные переменные проверки
Return value not initialized

Идентифицируйте пути через свое тело функции, которые не заканчиваются в return оператор.

Рассмотрите и зафиксируйте возвращаемое значение не инициализированные проверки
Unreachable code

Займитесь расследованиями, почему условный оператор в вашем коде избыточен, например, всегда верный или всегда ложный.

Рассмотрите и зафиксируйте недостижимые проверки кода

Числовые проверки

ПроверятьКак рассмотретьДетали
Division by zero

Рассмотрите предшествующие операции в своем коде, которые приводят к нулевому значению знаменателя.

Рассмотрите и зафиксируйте проверки деления на нуль
Invalid shift operations

Рассмотрите предшествующие операции в своем коде, которые приводят к сумме сдвига вне границ или лево-переключаемой отрицательной величины.

Рассмотрите и зафиксируйте недопустимые проверки операций сдвига
Overflow

Рассмотрите предшествующие операции в своем коде, которые приводят к переполнению операции.

Рассмотрите и зафиксируйте проверки переполнения

Проверки статического ЗУ

ПроверятьКак рассмотретьДетали
Absolute address usage

Рассмотрите использование абсолютного адреса в вашем коде и убедитесь, что адреса допустимы.

Рассмотрите и зафиксируйте абсолютные проверки использования адреса
Illegally dereferenced pointer

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

Рассмотрите и зафиксируйте незаконно разыменованные проверки указателя
Out of bounds array index

Рассмотрите предшествующие операции в своем коде, которые приводят к индексу массива, бывшему больше или бывшему равный размеру массивов.

Рассмотрите и зафиксируйте за пределы проверки индекса массива

Проверки потока управления

ПроверятьКак рассмотретьДетали
Non-terminating call

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

Рассмотрите и зафиксируйте незавершающие работу проверки вызова
Non-terminating loop

Рассмотрите операции в цикле и определите, почему цикл не завершает работу или почему определенная ошибка времени выполнения происходит в одном из запусков цикла.

Рассмотрите и зафиксируйте незавершающие работу проверки цикла

Проверки C++

ПроверятьКак рассмотретьДетали
Invalid C++ specific operations

Определите первопричину неположительного размера массивов или неправильное использование typeid или dynamic_cast оператор.

Рассмотрите и зафиксируйте недопустимый C++ определенные проверки операций
Function not returning value

Идентифицируйте пути через свое тело функции, которые не заканчиваются в return оператор.

Рассмотрите и зафиксируйте функцию не возвращение чеков значения
Incorrect object oriented programming

Займитесь расследованиями почему определенный virtual вызов члена или this использование указателя представляет неправильный шаблон объектно-ориентированного программирования.

Рассмотрите и зафиксируйте неправильные проверки объектно-ориентированного программирования
Null this-pointer calling method

Займитесь расследованиями, почему указателем на текущий объект может быть NULL- ценный.

Рассмотрите и зафиксируйте пустые проверки вызывающего метода этого-указателя
Uncaught exception

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

Рассмотрите и зафиксируйте проверки неперехваченного исключения

Другие проверки

ПроверятьКак рассмотретьДетали
Correctness condition

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

Рассмотрите и зафиксируйте проверки условия правильности
Invalid use of standard library routine

Займитесь расследованиями, почему аргументы в текущем вызове стандартной библиотечной подпрограммы недопустимы.

Рассмотрите и зафиксируйте недопустимое использование стандартных проверок библиотечной подпрограммы
User assertion

Займитесь расследованиями почему условие в assert сбои оператора.

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