Métricas en Java: Sonar

Esta mañana he pasado casi toda la mañana en una reunión de esas de llorar. Se pretendía establecer un plan de acción para solucionar un problema y al final se ha quedado en un "pobrecitos de nosotros…", "cuántos problemas tenemos…", "qué malo es el cliente…", "qué pocos somos para hacer el trabajo…", "qué poco tiempo tenemos …",….

Así que al terminar la reunión, me fuí a comer y me pasé la tarde totalmente desmotivado para el trabajo. Me puse a "internetear" en busca de cosas interesantes y encontré Sonar.

Sonar es una herramienta para la medición de métricas del código java (pmd, javancss, findbugs, … todo junto), pero aporta un par de cosas que me han parecido interesantes.

En primer lugar, al arrancar Sonar, se arranca un servidor web. Las métricas de nuestros proyectos estarán accesibles en el navegador vía web. Bien, de momento nada del otro mundo.

La parte interesante es que las métricas se generan con un plugin de maven y ese plugin busca al servidor web para añadirle el proyecto (si es la primera vez que lo compilamos con el plugin) o para actualizarle las métricas. Esto no deja de ser una pequeña maravilla, puesto que se puede ejecutar el plugin en nuestros compilados nocturnos, de forma que siempre tendremos en el servidor web de Sonar las métricas actualizadas al día. Es más, Sonar guarda las estadísticas de cómo evolucionan las métricas, así que con el tiempo tendremos un gráfico que indica si cada vez hay más o menos violaciones de métricas en el proyecto.

La segunda cosa que me ha resultado interesante es la forma de presentar los resultados. Aparte de las obligadas tablas con valores, se presentan con bloques de colores por proyectos, paquetes y clases. Me explico, hay una vista en la que salen los proyectos como bloques de colores, cada bloque del tamaño proporcional al tamaño del proyecto. El color es rojo si el proyecto tiene muchas violaciones de métricas y va tirando a verde según esté mejor. Pinchando el cuadro de un proyecto, se cambia la vista a los paquetes en ese proyecto, nuevamente con rectángulos de distintos tamaños y colores. Pinchando en uno de esos paquetes, aparecen las clases con el mismo tipo de presentación visual.

Esta forma de presentación es realmente interesante si se pretenden arreglar las métricas de un proyecto que esté mal. Con ella se puede navegar rápidamente e identificar los proyectos, paquetes y clases más conflictivos, centrándose primero en ellos.

Y ya puestos, también tiene una nube de tags en el que cada tag es una de las clases del proyecto. Los tags más gordos son las clases más horribles "métricamente" hablando. Así que incluso es mucho más sencillo identificar de un sólo vistazo cual es la primera clase que deberíamos arreglar de todos los proyectos que tenemos. Por supuesto, te presenta el código fuente de la clase indicando en qué puntos hay violaciones de métricas y cuales.

En este enlace tienes explicadas las distintas pantallas de Sonar y puedes ver los cuadraditos y nubes de tags que menciono.

Actualmente metemos el plugin pmd en maven de forma que si fallan las métricas, falla el compilado. Es la forma de garantizar que la gente codifica siguiendo las métricas desde el principio. Sin embargo, tenemos mucho código con métricas horribles, ya que nunca nos habíamos preocupado en serio de ello. Sonar me va a permitir identificar los peores trozos de código e ir arreglándolos poco a poco.

En fin, Sonar es una herramienta que intentaré ver cómo integro en los proyectos con Hudson (creo que hay plugin de Sonar para Hudson), que me dará entreteniento unos días y si quieren que trabaje en algo serio, que no me metan en reuniones desmoralizantes.

Esta entrada ha sido publicada en Herramientas y etiquetada como , , , . Guarda el enlace permanente.

5 respuestas a Métricas en Java: Sonar

  1. Pingback: Diario de Programación » Blog Archive » Más de Sonar

  2. Pingback: Diario de Programación » Blog Archive » Acciones adicionales al salvar un fichero con Eclipse

  3. Pingback: Diario de Programación » Blog Archive » Pegas con sonar

  4. david dijo:

    que metricas utiliza la herramienta, se que utiliza LCOM4, pero que otras metricas Orientadas a objetos utiliza??? gracias

  5. Abel dijo:

    Estimados,

    Una consulta, yo estoy realizando el manteniemiento de un sistema de casi 12 capas que involucra tres proyectos, el cual he midificados componentes en los 3 proyectos, y he colocado un codigo de identifcacion en los cambios que he realizado ( inicio;fin), mi consulta es si yo puedo realizar el analisis de codigo con el SonarQube solo de mis modificaciones y no de todos los componentes modificados. agradecere tu apoyo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.