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