Как получить статический анализ Coverity, совместимый со стандартом C ++ 0x?

Я использую компилятор Wind River Compiler 4 (gcc (C) и g ++ (C ++)), и он без проблем компилирует все мои проекты. Теперь мне нужно использовать Статический анализ Coverity, чтобы проверить свой код. Я настроил определенные компиляторы. Для C-кода (gcc) проблем нет, и я могу запустить анализ, но для C ++-кода (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-Code:

#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

, но результат не изменился.

Test-Code находится в большой иерархии сборки, но шаги для Coverity выглядят следующим образом:

  1. target и env set (Wind River 4 Linux)
  2. make clean
  3. cov-configure с компилятором dir и введите
  4. cov-build с правильной командой "make all", которая работает сама по себе
  5. cov-analysis
  6. if (no_error) cov-commit-defact

Я также настроил Coverity для замены всего "встроенного пространства имен" "with" namespace "во время cov-build ( - ppp-translator replace / inline namespace / namespace ). Встроенные ошибки исчезли, но они вызывают больше ошибок перегрузки и не создают успешной сборки. Также пытался удалить "C ++" таким же способом, но не сработало, всегда больше ошибок.

Кто-нибудь знает, в чем проблема? А как получить билд Coverity без ошибок? Может быть, я могу настроить Coverity так, чтобы он игнорировал стандартные заголовки C ++, но теперь я не могу этого сделать?

7
задан Marc Mutz - mmutz 14 June 2012 в 21:29
поделиться