Comment obtenir Coverity analyse statique compatible avec le C++0x standard?

Je suis à l'aide d'un Fleuve de Vent Compilateur 4 (gcc (C) et g++ (C++)) et il compile tous mes projets sans aucun problème. Maintenant, je dois utiliser Coverity Analyse Statique pour vérifier mon code. J'ai configuré le spécifique compilateurs. Pour le Code C (gcc) il n'y a pas de problèmes et je peux lancer l'analyse, mais pour le C++-Code (g++), j'ai fait beaucoup d'erreurs:

.../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)
                     ^

Il semble être en C++11 caractéristiques spécifiques comme la ligne de l'espace de noms mais le code n'utilisez pas ces fonctions. Les erreurs ci-dessus sont produites avec un 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;
}

J'ai essayé de définir le standard c++ avec la g++ option

-std=c++98

mais le résultat n'a pas changé.

Le Test-Code est dans une grande construire la hiérarchie, mais les étapes de Coverity sont comme ceci:

  1. cible et env set (Wind River 4 Linux)
  2. faire propre
  3. cov-configuration avec le compilateur dir et le type
  4. cov-construire avec l'correcte "faire ensemble" de commande qui travaille seul
  5. cov-analyser
  6. si (no_error) cov-commit-défauts

J'ai également configuré Coverity à remplacer tous les "inline espace de noms" avec "espace de noms" pendant le cov-construire (--ppp-translator replace/inline namespace/namespace). Le inline erreurs disparu, mais il produit plus de cette surcharge erreurs et pas de succecfully construire. Aussi essayé de supprimer le "C++" de la même façon mais qui n'ont pas de travail il y a toujours plus d'erreurs.

Quelqu'un a une idée de quel est le problème ici? Et comment puis-je obtenir le Coverity compiler sans erreurs? Peut-être que je peux configurer Coverity ignorer c++ standard en-têtes, mais je ne sais pas maintenant comment?

Quelle version de gcc utilisez-vous? 4 n'est pas assez précis. De toute façon, vous devez ouvrir un dossier avec [email protected] - envoyer votre journal de génération et prétraitées source et ils seront en mesure de vous dire ce que vous devez ajouter à votre configuration pour permettre cov-émettre à traiter avec succès.
Le WindRiver Env. est WR-Linux-4.0/Toolchain-4.4-291 et de la gcc qui est utilisé semble être la version 4.4.1. C'est la version de l'inclure dir de la gcc au cours du script de construction. Je suis également en contact avec le support: Le problème est que, en particulier WindRiver Compilateur ne sont pas pris en charge sous Linux, mais presque aucun compilateur gcc. Ils ont maintenant la séquence de la source et de l'examiner. Aussi la WindRiver prise en charge est désormais impliqués.
Obtenu de réponse à partir de Coverity Soutien et nous essayons maintenant de faire une solution de contournement.
Coverity fournit maintenant un préconfiguré bundle surtout pour WindRiver Environnements. Voir: windriver.com/announces/coverity-static-analysis

OriginalL'auteur Indimental | 2012-01-19