Problèmes avec PC-LINT et gcc 4.8 / STL (sur Ubuntu)

Pour un projet, nous avons basculé un projet de Windows vers Linux et, bien que PC-LINT fonctionne très bien avec le vin, je ne peux pas exécuter PC-LINT avec un programme de test simple. PC-LINT se plaint toujours des en-têtes STL. J’ai parcouru toute la documentation de Gimpel sur gcc et j’utilise co-gcc.h et j’ai généré lint_cppmac.h , size-options.lnt et gcc-include-path.lnt – Nous utilisons la version 9.00k de PC-LINT et j’ai essayé également avec 9.00k4 . gcc est la version 4.8.2 dans Ubuntu 14.04 LTS.

Alors voici ce que je fais:

lint-nt.sh -voip +b std.lnt /home/test/test.cpp 

lint-nt.sh est juste un script d’aide pour exécuter PC-LINT sous Linux avec wine et pour la transformation de sortie (c.-à-d. une barre oblique inverse en barre oblique …) et contient les éléments suivants:

 #!/bin/bash DIR=`dirname $0` # Options that are passed to PC-Lint before any other options. # -fff: Under Linux, filenames are case-sensitive. # +rw(__is_pod): __is_pod is a GCC toolchain-specific keyword. PREOPTS="-fff +rw(__is_pod)" wine ${DIR}/LINT-NT.EXE $PREOPTS "$@" | tr '\\\r' '/ ' 

test.cpp contient les éléments suivants:

 #include  class Base { public: Base(int i) : m_i(i), m_pi(new int[i]) { } ~Base() {} int get() { std::cout << m_i << std::endl; return m_i; } private: int m_i; int *m_pi; }; 

std.lnt contient juste les éléments suivants (les fichiers sont la valeur par défaut de gimpel)

 co-gcc.lnt // gcc comstackr options lib-stl.lnt // STL 

Donc, en cours d’exécution, je reçois cette erreur (extrait)

 /home/test/test.cpp 11 Info 783: Line does not end with new-line _ Base(int i) : m_i(i), m_pi(new int[i]) { } /home/test/test.cpp 5 Info 1732: new in constructor for class 'Base' which has no assignment operator /home/test/test.cpp 5 Info 1733: new in constructor for class 'Base' which has no copy constructor /home/test/test.cpp 5 Info 737: Loss of sign in promotion from int to unsigned int _ ~Base() {} /home/test/test.cpp 6 Warning 1540: Pointer member 'Base::m_pi' (line 10) neither freed nor zeroed by destructor /home/test/test.cpp 10 Info 830: Location cited in prior message _ int get() { std::cout << m_i << std::endl; return m_i; } /home/test/test.cpp 7 Error 40: Undeclared identifier 'cout' /home/test/test.cpp 7 Info 701: Shift left of signed quantity (int) /home/test/test.cpp 7 Error 40: Undeclared identifier 'endl' /home/test/test.cpp 7 Warning 504: Unusual shift operation (left side unparenthesized) /home/test/test.cpp 7 Info 701: Shift left of signed quantity (int) /home/test/test.cpp 7 Warning 522: Highest operation, operator '<<', lacks side-effects /home/test/test.cpp 7 Info 1762: Member function 'Base::get(void)' could be made const _ }; /home/test/test.cpp 11 Info 1712: default constructor not defined for class 'Base' --- Wrap-up for Module: /home/tall/test.cpp Info 753: local class 'Base' (line 3, file /home/tall/test.cpp) not referenced /home/test/test.cpp 3 Info 830: Location cited in prior message Info 766: Header file '/usr/include/c++/4.8/iostream' not used in module '/home/test/test.cpp' 

J’ai essayé avec l’utilisation de l’espace de noms std et sans. J’ai essayé des fichiers de test avec et ça empire encore.

J’apprécie chaque indice pour que cela fonctionne . Merci d’avance