File does not compile

Файл имеет ошибку компиляции

Описание

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

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

Используйте это средство проверки, чтобы узнать сразу, есть ли у вас файлы с проблемами компиляции в анализе интегрирования (Polyspace Bug Finder или Polyspace Bug Finder Server) или не компилирует ли текущий анализируемый файл еще (Polyspace, когда Вы Кодируете). Используя это средство проверки сохраняет, вы от открытия анализа регистрируете каждый раз, чтобы узнать, существуют ли проблемы компиляции. Можно определить из результатов анализа, если файл не скомпилировал.

Риск

Как правило, ваш компилятор может также найти проблемы, которые находит это дефектное средство проверки.

Если ваши компиляции файла с вашим компилятором, но фазой компиляции анализа Polyspace перестали работать, это означает, что ваша аналитическая настройка не эмулирует ваш компилятор точно. Например, если анализ перестал работать, потому что стандартная библиотечная функция, кажется, не определена, вам придется явным образом задать папки, содержащие ваши заголовки компилятора, использовать polyspace-configure команда, чтобы извлечь пути, или в противном случае улучшить вашу настройку.

Фиксация

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

Примеры

развернуть все

int nthFib (int n) {
    int i=0, sum=1;
    for (int iter = 0; iter < n; iter++) {
      int t = i;
      i = sum;
      sum += t;
    }
    return iter;
}

В этом примере, переменной iter задан только в for цикл. Но return оператор вне цикла относится к переменной, вызывая неопределенную ошибку идентификатора. (Ошибка компиляции здесь также указывает на логическую ошибку, поскольку намерение состояло в том, чтобы возвратить переменную sum.)

#include <cstdio>
#include <cstdlib>

void func() {
   char* message = malloc (strlen ("Hello, World\n"));
   strcpy (message, "Hello, World\n");
   printf ("%s", message);
   free (message);
}

В этом примере, строковые функции strlen и strcpy используются, но заголовочный файл cstring не включен. Это приводит к функциям, появляющимся как неопределенное.

Информация о результате

Группа: хорошая практика
Язык: C | C++
Значение по умолчанию: Off
Синтаксис командной строки: file_does_not_compile
Удар: низко
Введенный в R2021a