Проверьте приложение C без main Функция

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

  • Обеспечьте main функционируйте в своем коде.

  • Укажите, что Polyspace должен сгенерировать main.

Сгенерируйте main Функция

Перед верификацией задайте одну из следующих опций. В пользовательском интерфейсе десктопных решений Polyspace опции появляются под узлом Code Prover Verification.

ОпцияОписание
Verify whole application

Верификация останавливается, если программное обеспечение не обнаруживает main.

Verify module or library (-main-generator)

Перед верификацией Polyspace проверяет, содержит ли ваш код main функция.

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

Вручную запишите main Функция

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

  • Функции, что вы задаете использование опции Functions to call (-main-generator-calls) может быть назван в произвольном порядке.

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

Чтобы предоставить более точную модель последовательности вызова, можно вручную записать main функция в целях верификации. Можно добавить этот main функция в отдельном файле к вашему проекту. В некоторых случаях обеспечение точной последовательности вызова может сократить количество оранжевых проверок. Например, в следующем коде, Polyspace принимает тот f и g может быть назван в любом порядке. Поэтому это производит оранжевое переполнение для случая когда f называется перед g. Если вы знаете тот f называется после g, можно записать main функционируйте, чтобы смоделировать эту последовательность.

static char x;
static int y;

void f(void)
{
    y = 300;
}

void g(void)
{
    x = y; 
}

 Пример 1: main Вызывает одну функцию перед другим

 Пример 2: main Вызовы одна функция 10 раз перед другим

Похожие темы