Я использую Wind River Compiler 4 (gcc (C) и g ++ (C ++)), и он без проблем компилирует все мои проекты.Теперь я должен использовать статический анализ Coverity для проверки моего кода.Я настроил конкретные компиляторы.Для C-кода (gcc) проблем нет, и я могу запустить анализ, но для C ++ - Code (g ++) я получил много ошибок:
.../c++config.h", line 214: error #40:
expected an identifier
inline namespace __gnu_cxx_ldbl128 { }
^
.../c++config.h", line 214: error #326:
inline specifier allowed on function declarations only
inline namespace __gnu_cxx_ldbl128 { }
^
.../c++config.h", line 214: error #65:
expected a ";"
inline namespace __gnu_cxx_ldbl128 { }
^
.../include/string.h", line 76: error #312:
cannot overload functions distinguished by return type alone
extern __const void *memchr (__const void *__s, int __c, size_t __n)
^
.../include/string.h", line 116: error #312:
cannot overload functions distinguished by return type alone
extern "C++" __const void *memchr (__const void *__s, int __c, size_t __n)
^
Кажется, что это какой-то C++ 11 специфических функций, таких как встроенное пространство имен, но код не использует эти функции.Вышеуказанные ошибки создаются с помощью HelloWorld-кода:
#include "stdio.h"
#include "util.h"
#include <string>
#include "string.h"
using namespace std;
int main()
{
printf("Hello World, C++ version: %d.%d.%d\r\n",__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__);
return 0;
}
Я попытался установить стандарт c ++ с опцией g ++
-std=c++98
, но результат не изменился.
Тест-код находится в большой иерархии сборки, но шаги для Coverity такие:
- target и env set (Wind River 4 Linux)
- makeclean
- cov-configure с dir компилятора и введите
- cov-build с правильной командой "make all", которая работает в одиночку
- cov-analysis
- if (no_error) cov-commit-дефектов
Я также настроил Coverity для замены всего "встроенного пространства имен" на "пространство имен" во время сборки cov (--ppp-translator replace/inline namespace/namespace
).Встроенные ошибки исчезли, но это приводит к большему количеству этих ошибок перегрузки и не приводит к успешной сборке.Также пытался удалить "C ++" таким же образом, но не работал, всегда есть больше ошибок.
У кого-нибудь есть идеи, в чем здесь проблема?И как можно получить сборку Coverity без ошибок?Может быть, я могу настроить Coverity таким образом, чтобы он игнорировал стандартные заголовки c ++, но теперь не знаю как?