Если вы выбираете diab
для опции Compiler (-compiler)
, можно столкнуться с этой проблемой.
Во время анализа Polyspace® вы видите ошибку, связанную с ключевым словом, характерным для компилятора Diab. Например, вы видите ошибку, связанную с restrict
ключевое слово.
Вы обычно используете флаг компилятора, чтобы включить ключевое слово. Анализ Polyspace не включает эти ключевые слова по умолчанию. Необходимо сделать Polyspace, знающий флагах компилятора.
Анализ Polyspace не позволяет этим ключевым словам по умолчанию предотвратить ошибки компиляции. Другой пользователь не может включить ключевое слово и вместо этого использовать имя ключевого слова в качестве регулярного идентификатора. Если Polyspace обработает идентификатор как ключевое слово, ошибка компиляции произойдет.
Используйте параметр командной строки -compiler-parameter
в вашем анализе Polyspace можно следующим образом. Вы используете этот параметр командной строки, чтобы сделать Polyspace, знающий о ваших флагах компилятора. В пользовательском интерфейсе десктопных решений Polyspace можно ввести параметр командной строки в поле Other
(Polyspace Bug Finder). Можно ввести опцию многократно.
Аргумент -compiler-parameter
зависит от ключевого слова, которое вызывает ошибку. Если вы включаете ключевое слово, не используйте имя ключевого слова в качестве регулярного идентификатора. Например, если вы включаете ключевому слову pixel
, не используйте pixel
как имя переменной. Оператор int pixel = 1
вызывает ошибку компиляции.
restrict
ключевое слово:
Вы обычно используете флаг -Xlibc-new
компилятора или
-Xc-new
. Для вашего анализа Polyspace использовать
-compiler-parameter -Xc-new
Следующий код не скомпилирует с Polyspace, если вы не зададите флаг компилятора.
int sscanf(const char *restrict, const char *restrict, ...);
Расширения вектора PowerPC AltiVec, такие как vector
спецификатор типа:
Вы обычно используете флаг -tPPCALLAV:
компилятора. Для вашего анализа Polyspace использовать
-compiler-parameter -tPPCALLAV:
Следующий код не скомпилирует с Polyspace, если вы не зададите флаг компилятора.
vector unsigned char vbyte; vector bool vbool; vector pixel vpx; int main(int argc, char** argv) { return 0; }
Расширенные ключевые слова, такие как pascal
встроенный
, packed
, interrupt
, extended
X
Y
, vector
, pixel
bool
и другие:
Вы обычно используете флаг -Xkeywords=
компилятора. Для вашего анализа Polyspace использовать
-compiler-parameter -Xkeywords=0xFFFFFFFF
Следующий код не скомпилирует с Polyspace, если вы не зададите флаг компилятора.
packed(4) struct s2_t { char b; int i; } s2; packed(4,2) struct s3_t { char b; } s3; int pascal foo = 4; int main(int argc, char** argv) { foo++; return 0; }