¿El servidor de integración continua debe hacer cumplir los estándares de codificación?

13

¿Los estándares / estilo de codificación deben ser aplicados por el servidor de integración continua que ejecuta herramientas de análisis estático (por ejemplo, PMD, StyleCop / FxCop) y falla la compilación si no se siguen los estándares? ¿Qué tipos de reglas no deben usarse para fallar la compilación?

    
pregunta Leif Carlsen 22.09.2012 - 06:43

5 respuestas

11

Los estándares de codificación deben estar allí por una razón ... y se debe verificar el incumplimiento.

Sin embargo, no todas las violaciones deben considerarse errores, al igual que no todas las violaciones de compilación. Donde dibuje la línea tiene que ser una empresa y una decisión de la herramienta.

Por ejemplo, MISRA define sus reglas como Requerido y Asesoramiento ... Sugeriría que los Avisos permitirían que la compilación continúe.

    
respondido por el Andrew 22.09.2012 - 07:16
5

No es del todo desconocido y sabrás si funcionará solo probándolo. Hay algunos pasos que podrías tomar antes de eso.

Primero, el equipo debe decidir los estándares juntos. Luego, herramientas como ReSharper deben usarse para informar a los desarrolladores si no cumplen con los estándares. Hacer revisiones por pares en cada tarea podría ayudar aún más.

Después de que se hayan tomado esas medidas, se podría considerar la posibilidad de establecer verificaciones estándar de codificación en el servidor CI. Sin embargo, aún se debe considerar si es prudente tener un break de construcción para no cumplir con los estándares de codificación. El riesgo es que tendrá muchas compilaciones rotas que podrían alterar el significado de una compilación rota.

En lugar de hacer el corte de construcción, puede ejecutar las herramientas y hacer que creen informes. Si las violaciones de codificación estándar parecen estar aumentando, puede reunir al equipo y averiguar por qué está sucediendo.

    
respondido por el simoraman 22.09.2012 - 08:24
2
  

¿El servidor de integración continua debe aplicar los estándares / estilo de codificación que ejecutan herramientas de análisis estático (por ejemplo, PMD, StyleCop / FxCop) y fallar la compilación si no se siguen los estándares?

Esas comprobaciones de integración continuas deben ser muy, muy rápidas. Cualquier retraso significativo significará que sus programadores se comprometerán y perderán la pista de su proceso de pensamiento mientras esperan los resultados. Hágalo más largo y se comprometerán y tomarán una taza de café o charlarán con sus compañeros de oficina sobre el último y confuso desempeño de algún equipo deportivo. Esos retrasos son altamente contraproducentes. Es mejor dejar algunas cosas para la compilación nocturna o la revisión del código.

  

¿Qué tipos de reglas no deben usarse para fallar la compilación?

Los subjetivos, para empezar. ¿Cómo hace cumplir la regla "El código debe ser auto documentado o bien comentado"? ¿La regla de "no hay números mágicos"? Esas cosas son las mejores para la revisión del código.

Otra categoría son las violaciones a las reglas a las que ya se les ha otorgado una exención. Teniendo en cuenta cualquier base de código considerable, inevitablemente habrá una parte del código donde violar la norma es exactamente lo que hay que hacer.

    
respondido por el David Hammen 22.09.2012 - 13:58
2

Como parte de un Plan de mejora de la calidad del software, recientemente codificamos una serie de códigos para integrarlos en nuestro proceso de compilación.

Construimos mucho, al ser una aplicación PHP, no hay una compilación real, por lo que la compilación es realmente una prueba unitaria / análisis estático / corredor, y podemos permitirnos gastar algunos ciclos en esto.

Tuvimos algunos problemas de calidad de código y algunos códigos heredados con muchos problemas.

Comenzando sobre la base de que si no falla la confirmación se ignorará, comenzamos a confirmar confirmaciones contra nuestro estándar de codificación 'deseado', y confirma fallas con errores que no cumplen con la norma.

El mantenimiento se detuvo por completo, incluso la solución más simple para un componente heredado requirió que el desarrollador reformateara enormes cantidades de origen, y la compilación se rompió la mayoría de las veces. No hace falta decir que cambiamos los errores a advertencias, y ahora son ignorados y "en su mayoría" sin sentido.

Así que diría esto (aprendido de la experiencia difícil).

Asegúrese de que el estándar de su base de código sea lo suficientemente cercano al estándar que usted impone que no requiere que los desarrolladores realicen cambios de formato en volúmenes de código al instante. O ... estás preparado y esperando el aumento de esfuerzo.

Al ser un equipo pequeño con un gran requisito de entrega, no podíamos permitirnos cambiar al equipo a una gran operación de re-factor. Nuestros estándares de codificación ahora se manejan principalmente mediante revisión manual, y el legado se está reescribiendo como parte de un plan de mejora continua.

Cuando dije que las advertencias son 'en su mayoría' inútiles, ahora las usamos para registrar estadísticas que nos permiten medir los kpi que deberían seguir mostrando mejoras.

Cuando volvamos a imponer el código sniffs, comenzaremos light e introduciremos algunos sniffs a la vez hasta que tengamos el estándar aplicado.

    
respondido por el Gavin Howden 15.10.2012 - 19:04
1

Dependerá de su objetivo final y estrategia .

Forzar todos los estándares mencionados en el servidor de CI puede parecer muy lucrativo. Sin embargo, puede que no sea práctico para el gran equipo de desarrollo (más de 6 desarrolladores), si se realiza en cada compromiso con el servidor. Esperar a que su servidor responda después de confirmar NO debería demorarse mucho. Puede potencialmente causar algún tiempo de inactividad.

Sin embargo, es totalmente legítimo bloquear una confirmación si el código (el conjunto de cambios en realidad) tiene problemas de dependencia o no se compila. Sin embargo, el código que falla debido al diseño del código y alguna convención de nomenclatura puede ser una restricción demasiado severa y no vital para las reglas de confirmación del servidor de CI.

Pero es muy probable que sea una regla útil si se aplica durante la compilación nocturna.

Además, las herramientas de factorización pueden ayudar a implementar y aprender estándares, como el uso por parte de los desarrolladores de Resharper o JustCode .

    
respondido por el EL Yusubov 22.09.2012 - 06:55

Lea otras preguntas en las etiquetas