2010-07-02 20 views
8

Tengo los mismos archivos fuente (C y Obj-C) que se compilan en dos objetivos: el ejecutable de la prueba unitaria y el producto real (que luego se prueba la integración). Los dos objetivos se crean en diferentes lugares, por lo que los archivos de objeto, .gcno y .gcda están separados. No todos los archivos fuente se compilan en la prueba unitaria, por lo que no todos los objetos existirán allí. Todos los archivos fuente se compilan en la compilación del producto.Con gcov, ¿es posible fusionarse a archivos .gcda?

¿Existe alguna manera de combinar los dos conjuntos de archivos .gcda para obtener la cobertura total de las pruebas unitarias y las pruebas de integración (ya que se ejecutan en la compilación del producto)?

Estoy usando lcov.

Mac OS X 10.6, GCC 4.0

Gracias!

Respuesta

4

Dado que está utilizando lcov, debería poder convertir los archivos gcov .gcda en archivos lcov y combinarlos con lcov --add-tracefile.

De la página del manual: Agregar contenido de tracefile. Especifique varios archivos de seguimiento usando el interruptor -a para combinar los datos de cobertura contenidos en estos archivos sumando los recuentos de ejecución para combinaciones de prueba y nombre de archivo coincidentes.

5

Finalmente logré resolver mi problema mediante lcov.

Básicamente lo que hice es la siguiente:

  • compilar la aplicación con las banderas -fprofile-arcs -ftest-coverage --coverage
  • Distribuir la copia de la solicitud a cada nodo.
  • Ejecute la aplicación en cada nodo en paralelo. (Este paso genera en el directorio de la aplicación en el huésped acceder a la información de cobertura)
  • Let lcov hacer su trabajo:
    • lcov --directory src/ --capture --output-file coverage_reports/app.info
  • generar la salida html:
    • genhtml -o coverage_reports/ coverage_reports/app.info

Espero que esto pueda ayudar a alguien.

+0

Wow, gracias por responder. He tenido 2 trabajos muy diferentes entre hacer esa pregunta y ahora. Espero que esto ayude a alguien. – Joe

0

Lo fusiono por los parámetros de lcov multi-d como a continuación. Funciona.

lcov -c -d ./tmp/ -d ./tmp1/ -o ./tmp/coverage.info 
Cuestiones relacionadas