Movimiento Alt.Net Hispano

Como escribió una vez un amigo “Pido disculpas a todos mis fans y seguidores del blog… ¿fans? ¿seguidores? SIII, les hablo a ustedes dos”.

Empecé a participar mas en una comunidad que quiero compartir con ustedes: el movimiento alt.net hispano, para quienes no la conozcan (si es que hay alguien que no la conoce aun) se las recomiendo y mucho. Para quienes quieran una descripción del movimiento: http://groups.google.com/group/altnet-hispano/web/qu-es-alt-net?hl=es

En esta comunidad pueden encontrar varios recursos, a mi entender el mas desarrollado hasta ahora son las VANs. Estas se tratan de reuniones virtuales donde un ponente desarrolla un tema con la participación (aunque en general escasa) de los otros asistentes. También hay otra modalidad de reunión que son los Alt.Net Café donde hay mas interacción (o menos guía por parte del ponente).

Podrán encontrar VANs sobre temas de arquitectura, herramientas, metodologías, etc. En la lista de las VANs y Alt.Net Café que ya se realizaron pueden encontrar los videos de las reuniones pasadas.

También hay muy buenos intercambios de conocimiento en el foro: http://groups.google.com/group/altnet-hispano?hl=es

La verdad que después de navegar por sus recursos, VANs, etc. me he quedado corto de ideas para escribir en el blog, pero ya retomaré la actividad. Además estuve con mucho trabajo.

Coverage con PartCover en un servidor de CI

Objetivo

Como segunda parte del post de Integración Continua (CI) vamos a ver como tener una medición de coverage automatizada en un servidor donde podamos consultar el resultado (y los resultados anteriores).
Por ejemplo:
Coverage
Esto lo logramos combinando MSBuild, PartCover y CruiseControl.NET

Ejecutando PartCover desde una tarea de MSBuild

véase el Target Coverage en: http://code.google.com/p/dmsneluz/source/browse/trunk/src/dms.msbuild
Podemos ver que primero definimos las líneas del archivo de configuración, luego escribimos el archivo de configuración para PartCover utilizando la tarea WriteLinesToFile, determinamos el nombre del archivo de reporte y finalmente ejecutamos PartCover con los parámetros indicados.

Configurar CruiseControl.NET

Aquí tenemos dos partes, ejecutar la tarea y visualizar los resultados.
Ejecutar tarea de msbuild:
véase: http://code.google.com/p/dmsneluz/source/browse/trunk/ccnet/server/config/dms/dms.coverage.xml
las líneas mas relevantes de este archivo donde ejecutamos el msbuild con target Coverage que nos relaciona con el párrafo anterior:
<targets>Coverage</targets>
Y donde incluimos del archivo de resultado del coverage al reporte de cruisecontrol:
<merge><files><file>c:\cruisecontrol\dms\Coverage\Reports\coverage.report.xml</file></files></merge>
Visualizar el resultado en el sitio web de cc.net
véase “Coverage per Assembly” y “Coverage per Type” en: http://code.google.com/p/dmsneluz/source/browse/trunk/ccnet/webdashboard/dashboard.config
ahí estamos incluyendo los reportes a nivel de Build Report.
<xslReportBuildPlugin description="Coverage per Assembly" actionName="PartCoverPerClassReport" xslFileName="xsl\PartCover.assembly.report.xsl" />
<xslReportBuildPlugin description="Coverage per Type" actionName="PartCoverReport" xslFileName="xsl\PartCover.class.report.xsl" />

Aclaraciones

  • Los archivos xsl no vienen incluidos en la instalación default de cc.net, los mismo los podés encontrar en http://code.google.com/p/dmsneluz/source/browse/trunk/ccnet/webdashboard/xls (también hay otras versiones en internet, haz tu evaluación).
  • En la carpeta ccnet intenté respetar la estructura de carpetas de CruiseControl.NET y puse solo los archivos modificados, pueden compararlos con los originales para ver las diferencias.
  • Entre los archivos del repositorio pueden encontrar uno llamado Coverage.bat, este ejecuta la tarea de MSBuild sin necesidad de un servidor de integración continua.