Asegurar el coding style durante un commit de git

Soy de mi empresa, configuro una testing de continuous integration y ejecuto las testings cuando alguien inserta el código en el server.

Ahora quiero verificar que el código coincida con nuestras reglas básicas de encoding, la primera regla es "ejecutar mogrify en tu código".

Hay algo que hacer este control "fuera de la plataforma"? el resultado de este análisis se puede almacenar en un file u otra cosa.

Gracias

Yo sugeriría usar una herramienta similar a la pelusa, por ejemplo, para ObjectC podría usar oclint , pero básicamente cualquier herramienta de verificación estándar de encoding que pueda dar salida a files de text oa stdout – entonces puede usar un script de python, (ya que python es uno de los idiomas pnetworkingeterminados para ganchos), o casi cualquier cosa que pueda analizar ese resultado, y compararlo con un punto de reference dado, luego devuelve 0 si el código no es peor que antes y 1 si lo es.

Esto se puede usar como un enlace, preconfigurar localmente o recibir previamente en el server (o incluso ambos).

Alternativamente, si le preocupa que el desarrollador haya ejecutado realmente una herramienta determinada, siempre puede colocar un envoltorio alnetworkingedor de la herramienta que guarda, como parte del código comprometido, algo así como un MD5 del código en el punto en que la herramienta se ejecutó por última vez. y puede escribir un enlace de precomisión / recepción que verifique que el MD5 / lo que sea de ese file coincida con el del código comprometido.

Durante un commit de git, puede pedirles a sus usuarios que configuren un gancho de pre-commit que podría ejecutar la testing, y bloquear la confirmación.

Pero no tiene garantía de que sus usuarios realmente sigan esa política (o la omita con un git commit --no-verify ).

Por lo tanto, debería colocar un gancho de pre-receive en su repository central (el que empujan a todos los desarrolladores), para rechazar el empuje si detecta que su herramienta no se ha ejecutado correctamente.

Ver Git Hooks .

En cuanto a las herramientas, uncrustify se puede establecer como un enlace precompromiso, pero puede ser un poco lento . Pero ha sido usado de esa manera antes .
Las alternativas se enumeran en este hilo, pero parecen bastante obsoletas.

Su idea de aplicar en el lado del server podría funcionar, como un gancho de pre-recepción (lo que significa que rechazaría el empuje si detecta diferencias entre el código enviado y el mismo código recibido y "no está criptoificado").

Recomendaría configurar un server jenkins con los complementos adecuados. Este server de CI luego ejecutará lo que sea que pruebe en todos los commits del git; testings de modules, ejecutores de coding style, testings de sistema, etc.

Para el verificador de estilo de código puede usar: para C # – http://joel.fjorder.se/static.php?page=CodeStyleEnforcer