c++ multithreading templates code-coverage gcov

¿Cuál es la mejor herramienta de cobertura de código C++ que funciona con plantillas?



multithreading templates (5)

Nuestra herramienta de cobertura de prueba de C ++ proporciona cobertura de prueba en los cuerpos de las plantillas, o al menos las plantillas que están definidas en los archivos que especifique para que cubra.

No distingue las instancias de las plantillas.

Si tiene una aplicación de subprocesos múltiples, la herramienta registrará las ramas ejecutadas por todos los subprocesos, si configura la herramienta para usar indicadores que se puedan escribir de forma atómica (normalmente el tamaño de palabra natural de la CPU [32 o 64 bits]. (Si no hace esto, puede terminar con una carrera de subprocesos al actualizar los indicadores de cobertura y puede perder un poco de cobertura. Esto no es un defecto de la herramienta, es una consecuencia del acceso no sincronizado a la sonda de almacenamiento. datos.)

Para la detección de carreras, OP necesita encontrar una herramienta de detección de carreras; herramientas de cobertura de prueba no harán esto.

He utilizado gcov para probar la cobertura de código, pero cuando se trata de código c ++ con plantilla no funciona tan bien. Uso boost :: spirit extensivamente y parece que gcov simplemente ignora el código de espíritu de plantilla.

También me pregunto si hay una herramienta de cobertura para mostrar cómo los hilos interactúan entre sí, identificando las posibles ramas / condiciones de carrera / flujos de ejecución realmente ejecutados.



Trabajo en un producto grande y usamos una aplicación de terceros llamada BullsEye para las pruebas de cobertura. Funcionó de maravillas.



TestCocoon es una gran herramienta para probar, mejor que gcov con buenas herramientas e instalaciones de informes. Como las plantillas son bestias en tiempo de compilación, no estoy seguro de qué información de cobertura desea obtener.

Mis dos centavos