jueves, 1 de octubre de 2009

Herramientas de análisis de calidad del código

Existen muchas herramientas que nos permiten analizar el código desarrollado y parecen ser ampliamente usadas. Me había propuesto escribir un artículo describiendo el uso de algunas de ellas, pero visto que esta información ya existe y es fácilmente localizable en Internet, me voy a limitar a enumerar estas herramientas y hacer una breve descripción de para qué sirve cada una.

Las herramientas sobre las que voy a hablar son:
  • Checkstyle
  • PMD
  • Findbugs
  • JDepend
  • JavaNCSS
  • Cobertura

Checkstyle (http://checkstyle.sourceforge.net/)

Checkstyle ayuda a escribir código que se adhiera a unas convenciones de codificación determinadas. Además, en las últimas versiones se le han añadido nuevas características que permiten también encontrar problemas en el diseño de las clases, encontrar código duplicado o buscar patrones de error conocidos.

Checkstyle tiene plugins que permiten que sea usado desde cualquier IDE, como Eclipse (http://eclipse-cs.sourceforge.net/), resaltando sobre el código los errores encontrados por el analizador. También poseee un plugin para Maven 2 (http://maven.apache.org/plugins/maven-checkstyle-plugin/) que permite generar informe sobre lor errores encontrados.

PMD (http://pmd.sourceforge.net/)

PMD busca en el código fuente ciertos patrones de error, código no usado, código no óptimo, expresiones demasiado complicadas y código duplicado.

Podemos usarlo tanto en Eclipse (http://pmd.sourceforge.net/integrations.html#eclipse) como en Maven (http://maven.apache.org/plugins/maven-pmd-plugin/project-info.html).

Findbugs (http://findbugs.sourceforge.net/)

Se trata de otra herramienta que realiza análisis estático de código en busca de errores.

También puede ser usado en Eclipse (http://findbugs.sourceforge.net/manual/eclipse.html) como en Maven (http://mojo.codehaus.org/findbugs-maven-plugin/2.0.1/).

JDepend (http://clarkware.com/software/JDepend.html)

Jdepend proporciona métricas de cálidad entre los paquetes de un proyecto en términos de su extensibilidad, reusabilidad, y mantenibilidad.

Como las herramientas anteriores, se puede usar en Eclipse (http://andrei.gmxhome.de/jdepend4eclipse/) y en Maven (http://mojo.codehaus.org/jdepend-maven-plugin/).

JavaNCSS (http://www.kclee.de/clemens/java/javancss/)

Esta herramienta permite recoger métricas sobre el código fuente, como el número de líneas, paquetes, clases o métodos.

Al igual que todas las herramientas anteriores, se puede susar en Eclipse (http://freshmeat.net/projects/jncss4eclipse/) y en Maven (http://mojo.codehaus.org/javancss-maven-plugin/dependencies.html).

Cobertura (http://cobertura.sourceforge.net/)

Esta herramienta permite calcular la cantidad de código al que acceden los tests.

En este caso, no se dispone de un plugin para Eclipse, pero si que podemos usar esta herramienta desde Maven (http://mojo.codehaus.org/cobertura-maven-plugin/).


Os animo a que probéis estas herramientas. ¿Conocéis alguna más que pueda resultar útil para el desarrollo de un proyecto Java?

2 comentarios:

  1. Otra de cobertura con muy buena pinta que nunca he utilizado :-)

    http://www.eclemma.org

    ResponderEliminar
  2. Pues esta combina análisis de la cobertura de los tests con análisis ciclomático del código:

    http://www.crap4j.org

    ResponderEliminar