domingo, mayo 15, 2005

Día 1.1 : Integración permanente --> Estándares permanentes

No he avanzado mucho en términos de líneas de código. Comencé a usar #Develop, lo bueno, es muy cómodo e integra varios temas interesantes que más tarde puedo detallar, lo malo es que la versión que bajé no tiene help.

Crée una clase Variable y luego otra Variables, utilizando un wizard de #Develop. Entonces, cuando iba a comenzar a escribir código me di cuenta que había otra cosa que integrar. Los estándares de desarrollo.

Mal que mal, estoy tratando de hacer integración permanente (ya van 7 exitosas, lo cual no es mucho decir cuando se tienen apenas algunas líneas, la próxima es en 10 minutos), y en esa misma filosofía lo lógico es incorporar 2 herramientas: NUnit y FxCop. El primero lo tenía considerado, pero el segundo se me había olvidado.

Y aunque #Develop tiene su propio analizador de assemblies, bajé FxCop y lo ejecuté. Resultado, no tengo más de 237 líneas aún y de todas formas FxCop me entregó 17 mensajes, los cuales desgloso a continuación, algo así un mensaje por cada 14 líneas ;-) .


  • 1 Warning por no utilizarel sufijo Collection. Es discutible, me gusta más el utilizar plurales, es decir, Variable y Variables que Variable y VariableCollection, pero al usar FxCop implicitamente acepté seguir los lineamientos de Microsoft respecto a como llamar a los diferentes elementos.
  • 4 Warnings por que podría estar usando palabras mal escritas. Eso por que las palabras están en castellano. Ya las incluí en el diccionario de la herramienta.
  • 4 Warnings por declarar campos y no utilizar propiedades. Me parece atendible y ya reemplacé ese código.
  • 3 Errores por no utilizar las variables que están declaradas. Está correcto, aún falta que escriba código que las utilicen.
  • 5 Errores por no marcar adecuadamente el assembly.
Antes de hacer todos los cambios, he comenzado a ver como integrar FxCop con CCNet, y de hecho puede utilizarse (tiene un reporte propio).

Al final es bastante simple, se agrega una tarea más en NAnt y luego se hace un merge de logs en CCNet.

La única duda, que más tarde resolveré es si le asigno la propiedad failonerror en true o en false ;-). Más de una vez he dicho que el mejor estándar es aquel que no requiere cumplirse, en otras palabras, en que no existe forma que el desarrollador pueda hacer las cosas de forma "creativa".

Este otro esquema es algo diferente, lo que dice es que uno va a reconocer de inmediato cuando se salga del estandar. En tal sentido si es válido ponerlo en true, y obligarme a no avanzar hasta que el código siga los estándares.

Comentarios adicionales: La integración de NUnit ha sido algo más compleja. Regeneré el script de NAnt con #Develop, pero creo que el resultado no fue el mejor. Y aunque desde la aplicación puedo usar NUnit (y pasa el primer test de asignación), el script hay que afinarlo. Me queda claro que esto es igual que Make, después de armar el primero "bien hecho", el resto son cut & paste. Pero hay que armar el primero ;-).

No hay comentarios.: