Estoy usando Wind River Compiler 4 (gcc (C) yg ++ (C++)) y compila todos mis proyectos sin ningún problema. Ahora tengo que usar Coverity Static Analysis para verificar mi código. He configurado los compiladores específicos. Para el código C (gcc) no hay problemas y puedo ejecutar el análisis, pero para el C++ - Código (g ++) Tengo un montón de errores:¿Cómo obtener el análisis estático de Coverity compatible con el estándar C++ 0x?
.../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)
^
Se parece haber cierta C++ 11 características específicas como el espacio de nombres en línea, pero el código no utiliza estas características. Los errores anteriores se producen con una 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;
}
me han tratado de establecer el estándar de C++ con la opción g ++
-std=c++98
pero el resultado no cambió.
La prueba de código se encuentra en una jerarquía grande de construcción, pero los pasos para Coverity son así:
- objetivo y env conjunto (Wind River 4 Linux)
- que la limpieza sea
- cov-configure dir con el compilador y el tipo
- COV-construir con el correcto "hacer toda" comando que trabaja solo
- COV-analizar
- si (NO_ERROR) COV-comm it-defectos
También he configurado Coverity para reemplazar todo "espacio de nombres en línea" con "espacio de nombres" durante el COV-build (--ppp-translator replace/inline namespace/namespace
). Los errores en línea desaparecieron pero produce más de estos errores de sobrecarga y no se genera con éxito. También traté de eliminar el "C++" de la misma manera, pero no funcionó, siempre hay más errores.
¿Alguien tiene una idea de cuál es el problema aquí? ¿Y cómo puedo obtener la compilación de Coverity sin errores? Tal vez puedo configurar Coverity para ignorar los encabezados estándar de C++, pero ahora no sé cómo hacerlo.
¿Qué versión de gcc estás usando? 4 no es lo suficientemente específico. De todos modos, debe abrir un caso con [email protected]; envíeles su registro de compilación y su fuente preprocesada, y ellos podrán decirle lo que necesita agregar a su configuración para permitir que cov-emye procese satisfactoriamente. –
The WindRiver Env. es WR-Linux-4.0/Toolchain-4.4-291 y el gcc que se utiliza parece ser la versión 4.4.1. Esa es la versión del directorio de inclusión de gcc durante el script de compilación. Ahora también estoy en contacto con el soporte: el problema es que especialmente WindRiver Compiler no es compatible con Linux, pero casi * cualquier * compilador gcc. Ahora tienen la fuente preprocesada y la examinan. También el soporte WindRiver ahora está involucrado. – Indimental
Recibimos respuesta del servicio de asistencia de Coverity y ahora estamos tratando de hacer una solución. – Indimental