¿Cómo suelen integrar los equipos de software las métricas de análisis de código en su proceso de integración continua?

Usamos Jenkins para administrar nuestro canal de información y pruebas. Tenemos un paso de compilación de análisis de código estático que recopila varias métricas de analizadores de complejidad ciclomática, cobertura de prueba, advertencias de compilador, herramientas de linting, etc.

Solo comenzamos a recopilar métricas durante varios meses en nuestro proyecto y para ese momento hubo muchas violaciones. En lugar de fallar la compilación hasta que se solucionen todos los problemas, utilizamos un proceso de trinquete: la compilación falla si aumenta el número de violaciones desde el último registro. [1]

Si desea forzar una mejora continua, puede insistir en que las violaciones deben disminuir en 1 en cada registro.

Su IDE puede tener complementos para estas herramientas (o escribir scripts personalizados para ejecutarlos por usted) para que los desarrolladores puedan analizar el código antes de registrarse.

Como comentario aparte, es probable que no necesite comentarios diarios sobre ‘olores de código’ porque cambia bastante lentamente. Utilice estas métricas como puntos de discusión en las reuniones semanales del equipo, y luego asegúrese de que los desarrolladores tengan el tiempo que necesitan para mejorar piezas de código arriesgadas. En mi opinión, los equipos multifuncionales, la programación de pares (o las revisiones de código) y las pruebas automatizadas con una cobertura de prueba decente son mejores procesos para lograr un código de alta calidad.

[1] Idea del libro Farley and Humble’s Continuous Delivery.

Eche un vistazo a Sonar ( http://www.sonarsource.org/ .) Es una herramienta ordenada con soporte incorporado para Java. Usamos esto en mi proyecto anterior y es fácil de configurar. Se puede configurar tanto en el entorno de desarrollo como en el de prueba para que los Desarrolladores puedan ver las métricas incluso antes de realizar un check-in. Utilizamos maven para integrar esto con nuestra integración continua de Bamboo. Encontrará muchos tutoriales útiles en su sitio web y en Internet. Escribí un pequeño artículo sobre la colección Project Management and Metrics en mi blog que también tiene algunas referencias: http://paudelp.wordpress.com/201

En una organización, utilizamos Sonar a nivel de equipo y teníamos sesiones regulares de ‘fijación de código’ donde todo el equipo revisaba los problemas ‘rojos’ uno por uno y los solucionaba. Esto se hizo manualmente y solo a nivel de equipo, nunca pudimos integrarnos en el proceso de construcción.

En otra organización, integramos Sonar en la compilación definiendo umbrales de cuándo fallar una compilación en función de un conjunto de factores. También revisamos los informes del sonar para observar las tendencias de forma semi frecuente centrándose en la duplicación y la complejidad ciclomática porque esos eran los dos problemas más importantes en los que acordamos centrarnos.

More Interesting

¿Cuáles son las formas de permitir que los miembros del equipo UX produzcan entradas para los desarrolladores 1-2 sprints adelante en un equipo de desarrollo ágil multifuncional?

¿Importa mi CGPA general después de graduarme si tengo muy buenas habilidades de programación y computación (piratería ética, Linux y desarrollo de software)?

¿Cómo funcionan las computadoras como lo hacen? ¿Cuándo se convierte la electricidad en lógica ejecutable y cómo?

¿Por qué algunas empresas patrocinan visas h1b para ingenieros de software pero no para gerentes de producto?

¿Cuáles son las causas más comunes de falla del proyecto de software?

¿Qué tan bueno es SGD4500 / mes para software eng con 3+ experiencia para trabajar y vivir en Singapur?

¿Qué puedo usar para almacenar información del producto?

¿Aprendes a codificar cuando tomas ingeniería de software?

Cómo administrar mi mantenimiento después de los 'sprints', en un método de desarrollo ágil

¿Cómo utiliza DevOps los bucles de retroalimentación?

¿Las universidades quedarán impresionadas si hago un software?

¿Alguien puede probar la afirmación de la Asamblea General de que '90% de los estudiantes han seleccionado un puesto dentro de los 90 días de la graduación'?

Me ofrecen dos trabajos, uno con compañeros de trabajo de mi edad y el otro es un área en la que estoy realmente interesado, ¿qué oferta debo aceptar?

¿Cuáles son algunas de las cosas excepcionales que debería hacer que impresionarían a las escuelas de posgrado de CS y a las compañías que ofrecen pasantías tecnológicas?

¿Qué es mejor: M.Tech en electrónica o trabajo de software?