Blog de Antonio Manuel Muñiz

Sonar PDF Plugin 1.0 released

30 Noviembre 2009 · 4 comentarios

Hace unos días se ha publicado Sonar PDF Plugin 1.0, con una mejora fundamental: el documento PDF se almacena en la base de datos tras cada análisis y puede descargarse desde la GUI de Sonar.

PDF Download from Sonar GUI

También es posible configurar el tipo de reporte desde la interfaz de administración de Sonar:

PDF report type configuration

Se  puede encontrar información más detallada (instalación y uso) en la documentación del proyecto.

→ 4 comentariosCategorías: Maven Plugins · Open Source · Software Quality
Etiquetado: , ,

La calidad del código fuente como punto de partida

18 Noviembre 2009 · Dejar un comentario

Cuando hablamos de calidad del software podemos hacerlo a muchos niveles: rendimiento, mantenibilidad, cumplimiento de requisitos funcionales, estabilidad, proceso de construcción,… y el que en mi opinión constituye la base, el código fuente.

Desde mi punto de vista la calidad del código fuente se extiende hasta otros niveles, por ejemplo, el rendimiento. De hecho, cuando nos disponemos a realizar una auditoría de rendimiento el punto de partida siempre debería ser el código fuente, éste nos puede dar pistas sobre los puntos débiles de la aplicación, los cuales orientarán las pruebas de rendimiento.

Supongamos un caso de uso simple (y muy común): una aplicación web escrita en Java que permite la subida de un fichero a través de un formulario, cuando este stream de datos llega al servidor se carga en memoria y posteriormente se almacena en base de datos. Si tenemos la mala suerte de que al programador se le “olvide” cerrar el stream después de usarlo y por algún motivo esta memoria no sea liberada por el recolector de basura de la JVM, entonces tenemos un problema: ese espacio de memoria no se liberará NUNCA.

La herramienta PMD detecta, entre otras muchas, una mala práctica de programación consistente en no cerrar correctamente los recursos (streams de ficheros, conexiones a bases de datos, etc) después de usarlos. Si la utilizásemos para analizar el código fuente de la aplicación descrita anteriormente nos indicaría que no se está cerrando un recurso. Si lo que buscamos son causas de un problema de memoria en tiempo de ejecución, vamos en el camino correcto. Definiremos una prueba que ejecute el caso de uso en cuestión y la ejecutaremos simulando N usuarios, al mismo tiempo podemos monitorizar el servidor de aplicaciones y verificar que realmente estamos ante un memory leak.

→ Deja un ComentarioCategorías: Software Quality
Etiquetado: ,

Sonar PDF Report 0.3 released

22 Septiembre 2009 · 5 comentarios

Desde ayer está disponible en el repositorio central de Maven Sonar PDF Plugin 0.3.

Como comentaba hace unos días, esta versión ofrece (además de un nuevo tipo de reporte) la posibilidad de usar Sonar PDF como un plugin propio de Sonar (hasta ahora sólo era posible usarlo como un plugin de Maven), configurable desde la propia GUI. La configuración se limita actualmente a la activación o desactivación del reporte.

Este plugin es el primero (en la forja de Sonar Plugins) que hace uso del concepto de “Sonar post-job”: acciones que se ejecutan como parte del ciclo definido por sonar:sonar una vez finalizado el análisis. Es decir, una vez instalado el plugin en Sonar, al ejecutar mvn sonar:sonar sobre uno de nuestros proyectos estaremos generando un reporte PDF al final del análisis (el reporte se almacena en el target de la copia de trabajo).

En la página del plugin hay disponible información más detallada en relación a la instalación, un enlace para la descarga directa de los binarios y características generales.

¿Qué hay previsto para la versión 0.4?

  • Revisión del diseño de los reportes
  • Inclusión de más opciones de configuración desde Sonar (por ejemplo, selección del tipo de reporte)
  • Disponibilidad de descarga del reporte desde la interfaz gráfica de Sonar

Pero por ahora, disfrutemos de la versión 0.3 :)

→ 5 comentariosCategorías: Maven Plugins · Open Source
Etiquetado: ,

Sonar PDF Report 0.3 en la GUI de Sonar

8 Septiembre 2009 · 4 comentarios

A partir de la versión 0.3 de Sonar PDF Report (su publicación se realizará en los próximos días) se podrá configurar su uso desde la interfaz gráfica de Sonar.

Por ahora sólo podemos indicarle a Sonar que genere el reporte en PDF como parte del análisis, haciendo uso del concepto de “post-jobs” (a partir de la versión 1.10).

 

PDF Report en la GUI de Sonar

PDF Report en la GUI de Sonar

 

 

El siguiente paso será dotar a la interfaz de más posibilidades de configuración, como la selección del tipo de reporte, y por último la inserción del reporte en la base de datos para poder descargarlo desde el navegador, pero esto es el futuro… no muy lejano.

El proceso para instalar el plugin en Sonar es el estándar para todos los plugins, copiar el jar en el directorio de extensiones y reiniciar Sonar.

Me gustaría agradecer a Simon Brandhof la ayuda en la integración del plugin como “post-job”.

→ 4 comentariosCategorías: Herramientas · Open Source
Etiquetado: , ,

Migración desde Apache Archiva a Nexus

31 Agosto 2009 · Dejar un comentario

En estos días estamos renovando nuestro ecosistema, el primer habitante nuevo ha sido Nexus, posiblemente le sigan Hudson, nuevas versiones de Subversion, Trac y Sonar.

La migración de Archiva a Nexus ha sido realmente suave, del lado del “cliente” (Maven) el impacto ha sido simplemente el cambio de una URL en settings.xml, donde digo Archiva digo Nexus y listo.

Del lado del servidor la cosa no ha sido mucho más compleja. Nexus viene configurado perfectamente:

  • Un repositorio interno de releases
  • Un repositorio interno de snapshots
  • Un grupo de repositorios de releases (incluye el interno, en central y el de codehaus)
  • Un grupo de repositorios de snapshots (incluyendo el interno y el de codehaus)

Sólo había un pega, ¿qué pasa con los artefactos internos que tenemos desplegados en nuestro Archiva (lo que viene a ser nuestro proyecto Commons)? ¿y que pasa con los artefactos que hemos desplegado porque no se encuentran en ningún repositorio público (p.e. driver de Oracle)?

La solución ha sido mantener los dos repositorios (Archiva y Nexus) durante un tiempo y decirle a Nexus que haga mirror de Archiva.

Para ello hemos creado dos nuevos repositorios (releases y snapshots) de tipo “Proxy” en Nexus que apuntan a las URLs de nuestro Archiva.

New proxy repository

New proxy repository

Hecho esto tenemos un proxy de Archiva en Nexus, pero la idea es poder eliminar (apagar) Archiva en unos días/semanas y deshabilitar los proxies que hemos creado en Nexus. Para poder borrar los proxies sin perder la “importación” de los artefactos debemos mapear el “local storage” de los proxies en los correspondientes repositorios internos (Archiva releases con Nexus Releases e idem para snapshots), en lugar de usar el valor por defecto.

Override local storage

Override local storage

→ Deja un ComentarioCategorías: Herramientas
Etiquetado: , ,