Análisis estático de código en Java

2,049 views

Published on

Introducción al análisis estático de código en java para mejorar la calidad del software tomando como referencia mejores prácticas, estándares y optimización de código.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,049
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
2
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Análisis estático de código en Java

  1. 1. Análisis estático de código César Hernández CesarHernandezGt Java Day Guatemala 2012 @CesarHgt
  2. 2. Agenda•  Análisis estático de código•  Beneficios•  FindBugs•  PMD•  Checkstyle
  3. 3. Análisis estático de código•  Es la detección sistemática y proactiva de bugs, fugas de memória y código muerto e ineficiente entre otros•  No necesita que el programa sea ejecutado para detectar problemas
  4. 4. "Porque hasta las personas más inteligentespueden cometer los errores más estúpidos" -William Pugh-
  5. 5. FindBugs•  Identifica bugs bajo la especificación del lenguaje Java operando a nivel de Bytecodes (.class files)•  No contempla análisis de formato del código fuente.•  Utilizado por empresas como Google, Oracle, Eclipse, IBM.
  6. 6. Beneficios•  Reducción del costo en proceso de QA•  Mejor productividad de desarrollo y calidad del código fuente•  El análisis del código es automático y no requiere ejecución del código•  Sencillez de uso por la integración con IDE´S como Eclipse y Netbeans
  7. 7. DEMO 1findBugs
  8. 8. Categorías•  Bad practice•  Correctness•  Malicious code vulnerability•  Multithreaded correctness•  Performance•  Security•  Dodgy code (dudoso)Descripción de los más de 300 patrones:http://findbugs.sourceforge.net/bugDescriptions.html
  9. 9. "En un proyecto de software con diez personas, probablemente tres de ellas introducen tantoserrores que podríamos considerar su productividad como negativa." - Gordon Schulmeyer-
  10. 10. PMD•  Permite optimizar nuestro código con la detección de objetos innecesarios, variables sub utilizadas, duplicación explícita entre otros.•  Se centra en código que puede ser Optimizado•  Personalización por reglas
  11. 11. Malas prácticas•  Capturar una excepción dejando sin acción el bloque catch•  Inicialización redundantes en atributos de instancia•  Tener código muerto•  Directo uso de implementaciones en lugar de interface
  12. 12. DEMO 2 Pmd
  13. 13. Categorías de reglas•  Android•  Basic JSP•  Basic JSF•  Java Beans•  Optimization•  NamingDescripción de las más de 450 reglas:http://pmd.sourceforge.net/pmd-5.0.0/rules/index.html
  14. 14. "Si el código y los comentarios no coinciden, posiblemente ambos sean erróneos" -Norm Schryer-
  15. 15. Checkstyle•  Verificador sintáctico de estándares de codificación•  Para el caso de Java, CheckStyle toma como base: Code Conventions for the Java Programming Language http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html•  Provee flexibilidad en el grado de revisión del código
  16. 16. Ejemplo de deteccionesConvenciones de nombradoAnotacionesDiseño de clasesImportsComentarios JavadoModificadores de accesoNaming ConventionsExpresiones regularesDescripción de las más de 120 reglas:http://checkstyle.sourceforge.net/availablechecks.html
  17. 17. DEMO 3Checkstyle
  18. 18. PREGUNTAS? César Hernández CesarHernandezGt Java Day Guatemala 2012 @CesarHgt

×