После проверки вы видите в коде, охватываемом графами проверки, что значительная часть вашего кода не была проверена на наличие ошибок во время выполнения.
Например, на следующем графике панель «Панель мониторинга» показывает, что до 75% функций не были проверены на наличие ошибок во время выполнения. (В проверенных функциях не проверено только 7% операций.)

Не проверенный процент кода в коде, охватываемом графиком проверки, охватывает:
Функции и операции, которые не проверены, поскольку они оказались недостижимыми.
Они отображаются серым цветом на панели «Источник».

Функции и операции, которые не являются недостижимыми, но не проверены по какой-либо другой причине.
На панели «Источник» они отображаются черным цветом.

Щелкните Код, охваченный графиком проверки, чтобы просмотреть список снятых функций.
Если некоторые файлы не удается скомпилировать, анализ Polyspace ® продолжается с оставшимися файлами. Однако анализ не проверяет некомпилированные файлы на наличие ошибок во время выполнения.
Чтобы проверить, не скомпилированы ли некоторые файлы, откройте панель Сводка вывода (Output Summary) или Панель мониторинга (Dashboard). Чтобы убедиться, что все файлы компилируются перед анализом, используйте параметр Stop analysis if a file does not compile (-stop-if-compile-error).
Исправьте ошибки компиляции и повторите анализ.
Для получения дополнительной информации:
Как работает компиляция Polyspace, см. раздел Устранение ошибок компиляции и связывания.
Определенные ошибки компиляции см. в разделе Устранение ошибок компиляции.
Выполняется проверка красного или серого цвета в направлении начала иерархии вызова функции. Проверка красного или серого цвета может привести к последующему снятию флажка с кода.
Красный чек: Проверка не проверяет последующие операции в блоке кода, содержащем красный чек.
Серый чек: серые чеки указывают на недоступный код. Проверка не проверяет операции в недостижимом коде на наличие ошибок времени выполнения.
При вызове функций из не отмеченного блока кода проверка также не проверяет эти функции. Если в начале иерархии вызовов выполняется проверка красного или серого цвета, дальнейшие функции в иерархии могут не проверяться. В итоге получается значительное количество неконтролируемого кода.

Например, в следующем коде проверяется только 1 из 4 функций, и график процедуры показывает 25%. Функции func_called_from_unreachable_1, func_called_from_unreachable_2 и func_called_after_red не проверяются. Только main проверяется.
void func_called_from_unreachable_1(void) {
}
void func_called_from_unreachable_2(void) {
}
void func_called_after_red(void) {
}
int glob_var;
void main(void) {
int loc_var;
double res;
glob_var=0;
glob_var++;
if (glob_var!=1) {
func_called_from_unreachable_1();
func_called_from_unreachable_2();
}
res=0;
/* Division by zero occurs in for loop */
for(loc_var=-10;loc_var<10;loc_var++) {
res += 1/loc_var;
}
func_called_after_red();
}
Посмотрите, если main функция или другая функция Tasks имеет проверки красного или серого цвета. Проверьте, вызываются ли большинство функций из последующего неконтролируемого кода.
Для перехода из main разверните иерархию вызовов функции и определите, где начинается снятый код, с помощью функций навигации на панели «Иерархия вызовов». Если панель по умолчанию не отображается, выберите «Окно» > «Показать/скрыть представление» > «Иерархия вызовов». Дополнительные сведения см. в разделе Иерархия вызовов.
Кроме того, можно рассмотреть произвольную неконтролируемую функцию и выяснить, почему она не проверяется. Посмотрите, применимы ли одни и те же доводы для многих функций. Чтобы определить, не вызвана ли функция вообще из точки входа или вызвана из недостижимого кода, используйте опцию Detect uncalled functions (-uncalled-function-checks).
Просмотрите проверки красного или серого цвета и исправьте их.
Не указаны необходимые параметры анализа. При неправильном указании следующие параметры могут привести к снятию флажка с кода:
Параметры многозадачности: при проверке многозадачного кода с помощью этих параметров задаются функции точки входа.
Возможные ошибки в спецификации:
Вы ожидали, что автоматическое обнаружение параллелизма обнаружит создание потока, но вы используете примитивы создания потока, которые еще не поддерживаются для автоматического обнаружения.
При настройке в многозадачном режиме вручную были указаны не все точки входа.
Основные параметры генерации: с помощью этих параметров создается main если она не существует в коде. Эти параметры используются при проверке модулей или библиотек.
Не указаны все функции, созданные main должен позвонить.
Параметры ввода и упора: с помощью этих параметров вы ограничиваете диапазоны переменных вне кода или принудительно блокируете функции.
Возможные ошибки в спецификации:
Указаны слишком узкие диапазоны переменных, что приводит к недоступности доступного кода.
Некоторые функции были заблокированы непреднамеренно.
Макросы: с помощью этих опций можно определить или отменить определение макросов препроцессора.
Возможно, потребуется явно определить макрос, который компилятор считает неявно определенным.
Проверьте параметры в предыдущем порядке. Если ваши спецификации неверны, исправьте их.
main Функция не завершаетсяЭта причина относится только к многозадачному коду, если не проверены все функции точки входа.
Если параметры многозадачности настраиваются вручную, необходимо соблюдать ограничения многозадачной модели Polyspace. В частности, main функция не должна содержать бесконечный цикл или ошибку времени выполнения. В противном случае функции точки входа не проверяются.
Например, в этом примере task2 не проверяется, даже если он указан в качестве точки входа. Причина - бесконечный цикл в main функция.
void performTask1Cycle(void);
void performTask2Cycle(void);
void main() {
while(1) {
performTask1Cycle();
}
}
void task2() {
while(1) {
performTask2Cycle();
}
}Вы видите while ключевое слово в main функция, подчеркнутая пунктиром. Подсказка указывает, что цикл может не завершиться.
![]()

![]()
Аналогично, если возникает ошибка времени выполнения, вызов функции, приводящий к ошибке времени выполнения, подчеркивается пунктирным красным цветом с сопроводительной подсказкой.
main ФункцияИсправьте причину, по которой main функция не завершается.
Если причиной является определенная ошибка времени выполнения (красная проверка), исправьте ошибку.
Если причиной является бесконечный цикл, посмотрите, почему цикл должен быть бесконечным.
Если бесконечный цикл в main функция представляет циклическую задачу, завершает main и переместите бесконечный цикл в другую функцию точки входа. Это изменение можно внести только для анализа Polyspace без фактического изменения main функция. См. раздел Настройка многозадачного анализа в многозадачном пространстве вручную.