Pregunta

Tengo una gran base de código que contiene una amplia unidad de pruebas (utilizando CppUnit). Necesito trabajar de lo que el porcentaje de que el código es ejercido por estas pruebas, y (idealmente) generar algún tipo de informe que me dice por la biblioteca o por archivo, ¿qué parte del código se ejerció.

Aquí viene lo bueno:esto tiene que ejecutar completamente unnatended (eventualmente dentro de una compilación de integración continua), y tiene que ser multiplataforma (bueno, WIN32 y *nix, al menos).

Puede alguien sugerir una herramienta o conjunto de herramientas que me puede ayudar a hacer esto?Yo no puedo cambiar, lejos de CppUnit (ni quiero - se inicia el culo), pero por lo demás estoy dispuesto a escuchar cualquier recomendación que pueda tener.

Saludos,

¿Fue útil?

Solución

La herramienta que se debe utilizar?

Este el artículo describe otro de los desarrolladores de frustraciones en la búsqueda de cobertura de código C++ herramientas.El autor de la solución final fue Diana Cobertura.

Diana Cobertura características:

Como para enganchar a su integración continua, depende de que CI solución que usted use, pero es probable que pueda gancho de la instrumentación de la cobertura de la medición de los pasos en el archivo que uso para las pruebas automatizadas.


Pruebas de Linux vs Windows?

Mientras todas las pruebas se ejecutan correctamente en ambos entornos, que debe estar bien la medición de la cobertura en el uno o el otro.(Aunque Diana aparece para apoyar ambas plataformas).Pero, ¿por qué no hacer de la integración continua se basa en ambos entornos??Si usted entrega a los clientes en ambos entornos, a continuación, usted necesidad se prueba en ambos.

Por esa razón, suena como usted puede ser que necesite para tener dos acumulación continua de los servidores de configurar, uno para linux y otra para windows construir.Tal vez esto se puede lograr fácilmente con algún software de virtualización como vmware o virtualbox.Puede que no necesite para ejecutar el código de la cobertura de las métricas en ambos sistemas operativos, pero que sin duda debe ser el funcionamiento de su unidad de pruebas en ambos.

Otros consejos

Si usted puede utilizar GNU GCC como su compilador, entonces el gcov la herramienta funciona bien.Es muy fácil de automatizar completamente el proceso entero.

Si usted está utilizando el GCC toolchain, gcov se va a obtener de la fuente, funcional, y la rama de la cobertura de las estadísticas.gcov funciona bien para MinGW y Cygwin.Esto le permitirá obtener estadísticas de cobertura, así como una emisión de instrumentados de código fuente que permite visualizar unexecuted código.

Sin embargo, si usted realmente quiere llegar fuera del parque con bastante informes, utilizando gcov en conjunción con lcov es el camino a seguir.lcov le dará la barra de informes en el ámbito de los archivos y directorios, funcional estadísticas de cobertura, y con colores archivo de origen de navegación para mostrar la cobertura (verde significa ejecutado, el rojo significa que no...).

lcov es fácil en Linux, pero puede requerir algunos perl de hacking en Cygwin.Yo personalmente he tenido algunos problemas en la ejecución de los scripts (lcov está implementado en perl) en Windows.Me he metido un cortado versión para el trabajo, pero estar prevenido.

Otro enfoque es hacer el gcov emiten en windows, y haciendo el lcov posterior procesamiento en Linux, donde seguramente va a trabajar fuera de la caja.

Echa un vistazo a nuestra SD C++ la Cobertura de las Pruebas de la herramienta.Puede ser obtenida de GCC, y para MSVC6.

Se ha de carga baja de la sonda de recogida de datos, una buena visualización de los datos de cobertura superpuesta en su código, y el informe completo de la generación de los paquetes acumulativos de actualizaciones en la cobertura a través del método/clase/archivo/directorio niveles.

EDITAR:De agosto de 2015:Ahora es compatible GCC5 y varios MS dialectos a través de Visual Studio 2015.El uso de estas herramientas en Linux, usted necesita el Vino, pero las herramientas que proporcionan Linux-peces nativos y de secuencias de comandos de Linux/Java basado en la interfaz de usuario, por lo que la herramienta se siente como un nativo de Linux herramienta de allí.

Supongo que debería haber especificado el compilador - estamos usando gcc de Linux, y MSVC 6 (sí, lo sé, es viejo, pero funciona (en su mayoría) para nosotros) para WIn32.

Por que razones, gcov no funciona para nuestro Win32 construye, y Diana no funciona para nuestro versiones de Linux.

A continuación, de nuevo, tal vez sólo tengo cobertura en un SO...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top