C++ Jenkins QA Stack / Herramientas


Actualmente estamos en el proceso de construir una pila de control de calidad para su desarrollo de C++ .

Ya tenemos varias instancias Jenkins ejecutándose e hicimos muy buenas experiencias con el servidor CI en combinación con otros lenguajes como java y php.

Lo que estoy pidiendo son punteros a las cadenas de herramientas que se pueden utilizar para el desarrollo de C++ con Jenkins.

Más específico (ejemplos de java / php entre llaves):

  • A pruebas unitarias framework que prueba y produce informes de cobertura (JUnit / PHPUnit)
  • A coding guidelines checker (checkstyle / phpCodeSniffer)
  • Algo PMD que detecta problemas potenciales en una base de código (pmd / phpmd)
  • Más si es aplicable / necesario, pero esos 3 serían los conceptos básicos supongo?

Bounty editar:

Si bien obtuve una respuesta aceptable a mi pregunta, se me pidió que proporcionara más herramientas / opciones / razones para usar Jenkins para este proyecto.

En el pasado he hecho experiencias subóptimas con herramientas comerciales en este sentido. (¿Qué? ¡Quieres AHORRAR! esos informes? Entonces usted necesita comprar el adicional 10k Bucks/Año plugin que puede generar GRÁFICOS de lujo! para ti.) Podría estar equivocado aquí, así que por favor dime si lo estoy.

Pero principalmente estoy buscando una pila completa de herramientas para usar con Jenkins para el desarrollo de C++ y QA

Author: edorian, 2011-09-01

3 answers

Usamos Jenkins con C & C++. Estas son herramientas que hemos utilizado, y creo que pueden ser útiles. Todos ellos son utilizables con Jenkins:

  • Marco de Pruebas Unitarias - cppunit : genera xml que se puede alimentar directamente a Jenkins usando el complemento cppunit
  • Cobertura : gcov + gcovr produce buenos informes de cobertura
  • Coding guidelines checker : puede usar pclinty el complemento warnings para esto.
  • Detector de Mess: No estoy seguro de lo que quiere decir con mess aquí, pero estamos utilizando PMD / CPD para la comprobación de duplicación de código y NSIQ para la complejidad y LOC

También usamos cppcheck para análisis estático.

Espero que eso ayude!

 34
Author: Sagar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-01 14:18:01

Usamos Jenkins con el googletest marco de pruebas unitarias.

  • Las ejecuciones de prueba producen xml compatible con JUnit.
  • Portado a la mayoría de los compiladores con los que es probable que se encuentre.

Siguiendo mi propio enlace, encontré esto:

Cobertura continua de código con gcc, googletest y Hudson

Las tres primeras líneas del comando simplemente ejecutan la compilación. El el comando en la línea 4 ejecuta la prueba binaria aplicación que hemos construido, y muestra el resumen del resultado de la prueba en un archivo XML de formato junit.

Los dos últimos comandos son donde está la magia. Esto ejecuta el gcovr script, un práctico script python que convierte la salida gcov a un Archivo XML de estilo Cobertura.

Entonces tenemos que decirle a Hudson que busque en el espacio de trabajo de compilación archivos xml junit y coverage como una acción post-build. Ahora cuando corremos la construcción que obtenemos gráficos de visión general agradable tendencia a cabo prueba unitaria resultado y cobertura de código.

 11
Author: reechard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-09-03 06:06:16

Actualmente estoy usando el plugin xUnit para proyectos C / C++, y ha estado funcionando muy bien hasta ahora.

De acuerdo con la wikipedia de cppunit, ya no se mantiene, sino que se ha migrado a xUnit (source).

 1
Author: Keplah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-09 15:53:23