jueves, 28 de agosto de 2008

Análizador Estático de Código para Java.

Le estoy echando un vistazo a los Analizadores estáticos de código que existen para java, La definición de un AEC podría ser la siguiente: Es una herramienta software que realiza Análisis estático de Código, es decir examina el código fuente de una aplicación, en contraposición al análisis dinámico que lo que hace es examinar el resultado de este código en ejecución, la intención de este tipo de herramientas es encontrar posibles errores o incorrecciones, antipatrones o malas practicas de programación de una forma automática, suelen ofrecer informes con métricas del tipo complejidad ciclomática, longitud de línea, el número de líneas sin comentarios, el tamaño de métodos, clases, etc.

Para tener una idea del estado de madurez y del empleo de estas herramientas en el mundo real y antes de decidirme a probar una en profundidad he decidido realizar el típico estudio utilizando las herramientas de google para comparar el impacto que tiene cada una de las distintas alternativas en la red, en este caso he usado la nueva herramienta de google, google insights compañera de google trends, utilizando la lista de que propone la wikipedia para java y oponsource:

  1. Bandera
  2. Checkstyle
  3. Classycle
  4. FindBugs
  5. Jlint
  6. PMD
  7. SCL
  8. Soot
  9. Hammurapi
  10. UCDetector

Y añadiendo a cada término de búsqueda “java” para delimitar el contexto he realizado las siguientes comparaciones:

1 - cinco primeros

Es necesario dividir las búsquedas en grupos de cinco ya que google insights no permite introducir más términos de una sola vez.

2 - cinco siguientes


Si nos quedamos con los que más movimiento tienen ( menos en el caso de jlint y bandera que he decidido quedarme con jlint ya que bandera es un término muy común y seguro que se cuelan más resultados indeseados):


3 - cinco más exitosos

Como podéis ver históricamente Checkstyle se sitúa en cabeza pero a día de hoy está por delante PMD (aunque es un poco sospechoso ya que si buscamos en google sólo por PMD obtenemos casi 6 millones de ocurrencias, eso si el proyecto en sourceforge es la primera) y seguido muy de cerca por
FindBugs.

También se puede apreciar que estas herramientas están tenido mucho más éxito en países como la India o Japón que en los países hispanohablantes de los cuales no aparece ninguno en las 10 primeras posiciones, aunque me imagino que esto será debido al volumen de software desarrollado en cada zona.

Cuando saque un rato me gustaría echarle un vistazo a estas tres, ver si se pueden integrar en alguna de las IDEs más populares, evaluar usabilidad, rapidez, calidad de los informes, etc.

¿Tenéis experiencia en el uso de alguna de estas herramientas?, ¿Cuál de ellas o que combinación de ellas usáis?

Otros artículos relacionados:

javaHispano Persiguiendo la calidad del código
javaHispano PMD v4 publicado
javaHispano Checkstyle 4.2 publicado

También existen voces críticas en lo que a este tipo de herramientas se refiere.

delicious | digg | technorati | yahoo | meneame

No hay comentarios: