SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Administración de la calidad del
software a través del análisis
estático de código
GuateJUG - OTN Tour Guatemala 2013
César Hernández
CesarHernandezGt
@CesarHgt
CesarHernandezGt/OTN2013
Agenda
● Análisis estático de código
● Beneficios
● Herramientas
● Retos
● Sonarqube
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
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
Herramientas individuales
"Porque hasta las personas más inteligentes
pueden cometer los errores más estúpidos"
-William Pugh-
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.
DEMO 1
findBugs
● 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
Categorías
"En un proyecto de software con diez personas,
probablemente tres de ellas introducen tantos
errores que podríamos considerar su productividad
como negativa."
- Gordon Schulmeyer-
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
DEMO 2
Pmd
● Android
● Basic JSP
● Basic JSF
● Java Beans
● Optimization
● Naming
Descripción de las más de 450 reglas:
http://pmd.sourceforge.net/pmd-5.0.0/rules/index.html
Categorías de reglas
"Si el código y los comentarios no coinciden,
posiblemente ambos sean erróneos"
-Norm Schryer-
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
DEMO 3
Checkstyle
Ejemplo de detecciones
Convenciones de nombrado
Anotaciones
Diseño de clases
Imports
Comentarios Javado
Modificadores de acceso
Naming Conventions
Expresiones regulares
Descripción de las más de 120 reglas:
http://checkstyle.sourceforge.net/availablechecks.html
Retos
● Diversas herramientas
● Diversos lenguajes de programación
● Necesidad de personalización
● Distribución y estandarización
● Ecosistemas de diversas tecnologías y versiones
● Constante cambio de....
● Plataforma para la administración de la calidad del
código fuente.
● Gran parte de su funcionamiento se base en el
Análisis Estático de Código.
ABAP
C/C++ C-Sharp (C#)
COBOL
Flex
GroovyJavaScript
Natural
Pacbase
PHP
PL/I
PL/SQL
Python
VB.NET
Visual Basic 6
Web (HTML, JSP)
XML
Java
Sonar a 1000 pies de altura
DEMO
Un poco de orden en la casa
GuateJUG - OTN Tour Guatemala 2013
César Hernández
PREGUNTAS?
CesarHernandezGt
@CesarHgt
CesarHernandezGt/OTN2013

Weitere ähnliche Inhalte

Was ist angesagt?

Servicios en Zend Framework 2
Servicios en  Zend Framework 2Servicios en  Zend Framework 2
Servicios en Zend Framework 2
El Taller Web
 
Introducción a GXtest
Introducción a GXtest Introducción a GXtest
Introducción a GXtest
GeneXus
 
Presentacion de integracion continua (lima agile)
Presentacion de integracion continua (lima agile)Presentacion de integracion continua (lima agile)
Presentacion de integracion continua (lima agile)
Gustavo Veliz
 

Was ist angesagt? (20)

Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJS
 
Jenkins ci + selenium
Jenkins ci + seleniumJenkins ci + selenium
Jenkins ci + selenium
 
Java swing
Java swingJava swing
Java swing
 
Integración contínua con Jenkins
Integración contínua con JenkinsIntegración contínua con Jenkins
Integración contínua con Jenkins
 
java
javajava
java
 
Una gota de elixir 2017
Una gota de elixir   2017Una gota de elixir   2017
Una gota de elixir 2017
 
Tech Meetup: How to solve 2 common problems in Android & iOS
Tech Meetup: How to solve 2 common problems in Android & iOSTech Meetup: How to solve 2 common problems in Android & iOS
Tech Meetup: How to solve 2 common problems in Android & iOS
 
Jugando con javascript
Jugando con javascriptJugando con javascript
Jugando con javascript
 
Taller de Simpletest - Drupal Day Valencia 2012
Taller de Simpletest - Drupal Day Valencia 2012Taller de Simpletest - Drupal Day Valencia 2012
Taller de Simpletest - Drupal Day Valencia 2012
 
Servicios en Zend Framework 2
Servicios en  Zend Framework 2Servicios en  Zend Framework 2
Servicios en Zend Framework 2
 
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriverPrueba De Aplicaciones Web con Selenium 2 y WebDriver
Prueba De Aplicaciones Web con Selenium 2 y WebDriver
 
Pruebas Unitarias
Pruebas Unitarias Pruebas Unitarias
Pruebas Unitarias
 
Argentesting 2017 - Anatomia Framework Automatización
Argentesting 2017 - Anatomia Framework AutomatizaciónArgentesting 2017 - Anatomia Framework Automatización
Argentesting 2017 - Anatomia Framework Automatización
 
Integracion Continua
Integracion ContinuaIntegracion Continua
Integracion Continua
 
Seguridad en Tryton
Seguridad en TrytonSeguridad en Tryton
Seguridad en Tryton
 
practica 1 jsp
practica 1 jsppractica 1 jsp
practica 1 jsp
 
Introducción a GXtest
Introducción a GXtest Introducción a GXtest
Introducción a GXtest
 
Presentacion de integracion continua (lima agile)
Presentacion de integracion continua (lima agile)Presentacion de integracion continua (lima agile)
Presentacion de integracion continua (lima agile)
 
Lombok Project presentation
Lombok Project presentationLombok Project presentation
Lombok Project presentation
 
Clase ii
Clase iiClase ii
Clase ii
 

Andere mochten auch

Fundamentos de Pruebas de Software - Capítulo 3
Fundamentos de Pruebas de Software - Capítulo 3Fundamentos de Pruebas de Software - Capítulo 3
Fundamentos de Pruebas de Software - Capítulo 3
Professional Testing
 
¿Cómo medir la calidad del software de una manera formal pero práctica?
¿Cómo medir la calidad del software de una manera formal pero práctica?¿Cómo medir la calidad del software de una manera formal pero práctica?
¿Cómo medir la calidad del software de una manera formal pero práctica?
Software Guru
 
2 software de sistema
2 software de sistema2 software de sistema
2 software de sistema
Vifredo Gomez
 
05 diagramas de flujo y estandarización
05 diagramas de flujo y estandarización05 diagramas de flujo y estandarización
05 diagramas de flujo y estandarización
cesar hernandez
 

Andere mochten auch (11)

Análisis estáticos y dinámicos en la aplicación de pruebas de intrusión (Pene...
Análisis estáticos y dinámicos en la aplicación de pruebas de intrusión (Pene...Análisis estáticos y dinámicos en la aplicación de pruebas de intrusión (Pene...
Análisis estáticos y dinámicos en la aplicación de pruebas de intrusión (Pene...
 
Fundamentos de Pruebas de Software - Capítulo 3
Fundamentos de Pruebas de Software - Capítulo 3Fundamentos de Pruebas de Software - Capítulo 3
Fundamentos de Pruebas de Software - Capítulo 3
 
Gestión de infraestructura tomcat tom ee con tfactory
Gestión de infraestructura tomcat tom ee con tfactoryGestión de infraestructura tomcat tom ee con tfactory
Gestión de infraestructura tomcat tom ee con tfactory
 
Introducción MongoDB con Java
Introducción MongoDB con JavaIntroducción MongoDB con Java
Introducción MongoDB con Java
 
Ecuador jug 2017 -incrementando la productividad de proyectos java ee con c...
Ecuador jug   2017 -incrementando la productividad de proyectos java ee con c...Ecuador jug   2017 -incrementando la productividad de proyectos java ee con c...
Ecuador jug 2017 -incrementando la productividad de proyectos java ee con c...
 
Resolución de conflictos en git
Resolución de conflictos en gitResolución de conflictos en git
Resolución de conflictos en git
 
¿Cómo medir la calidad del software de una manera formal pero práctica?
¿Cómo medir la calidad del software de una manera formal pero práctica?¿Cómo medir la calidad del software de una manera formal pero práctica?
¿Cómo medir la calidad del software de una manera formal pero práctica?
 
Introducción a Java
Introducción a JavaIntroducción a Java
Introducción a Java
 
2 software de sistema
2 software de sistema2 software de sistema
2 software de sistema
 
El git nuestro de cada dia
El git nuestro de cada diaEl git nuestro de cada dia
El git nuestro de cada dia
 
05 diagramas de flujo y estandarización
05 diagramas de flujo y estandarización05 diagramas de flujo y estandarización
05 diagramas de flujo y estandarización
 

Ähnlich wie Administración de la calidad del software a través del análisis estático de código en java version otn 2013

Herramientas Ágiles para Desarrollo
Herramientas Ágiles para DesarrolloHerramientas Ágiles para Desarrollo
Herramientas Ágiles para Desarrollo
Gastón Guillerón
 

Ähnlich wie Administración de la calidad del software a través del análisis estático de código en java version otn 2013 (20)

Desarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por PruebasDesarrollo de Software Guiado por Pruebas
Desarrollo de Software Guiado por Pruebas
 
Herramientas Ágiles para Desarrollo
Herramientas Ágiles para DesarrolloHerramientas Ágiles para Desarrollo
Herramientas Ágiles para Desarrollo
 
Herramientas agilesdesarrollo
Herramientas agilesdesarrolloHerramientas agilesdesarrollo
Herramientas agilesdesarrollo
 
Calidad de código en Chamilo: Behat, Travis-CI y Scrutinizer-CI
Calidad de código en Chamilo: Behat, Travis-CI y Scrutinizer-CICalidad de código en Chamilo: Behat, Travis-CI y Scrutinizer-CI
Calidad de código en Chamilo: Behat, Travis-CI y Scrutinizer-CI
 
Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agiles
 
Practicas tecnicas
Practicas tecnicasPracticas tecnicas
Practicas tecnicas
 
Grails barcamp 2013
Grails barcamp 2013Grails barcamp 2013
Grails barcamp 2013
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?
 
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
 Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe... Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
 
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
 
Automatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & CucumberAutomatización de pruebas con Selenium, Typescript, Protractor & Cucumber
Automatización de pruebas con Selenium, Typescript, Protractor & Cucumber
 
Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - Sistemas
 
Modelo de cascada, analisis de sistemas.pptx
Modelo de cascada, analisis de sistemas.pptxModelo de cascada, analisis de sistemas.pptx
Modelo de cascada, analisis de sistemas.pptx
 
Java 8, tópicos de estudio para el examen upgrade
Java 8, tópicos de estudio para el examen upgradeJava 8, tópicos de estudio para el examen upgrade
Java 8, tópicos de estudio para el examen upgrade
 
INDUCCION A QA TESTER.pptx
INDUCCION A QA TESTER.pptxINDUCCION A QA TESTER.pptx
INDUCCION A QA TESTER.pptx
 
Extreme Programing y Devops - Código de Calidad
Extreme Programing y Devops - Código de CalidadExtreme Programing y Devops - Código de Calidad
Extreme Programing y Devops - Código de Calidad
 
Cobertura de pruebas unitarias - NetBaires
Cobertura de pruebas unitarias - NetBairesCobertura de pruebas unitarias - NetBaires
Cobertura de pruebas unitarias - NetBaires
 
Cobertura de pruebas unitarias en C#
Cobertura de pruebas unitarias en C#Cobertura de pruebas unitarias en C#
Cobertura de pruebas unitarias en C#
 
Practicas técnicas
Practicas técnicasPracticas técnicas
Practicas técnicas
 
Pucela testingdays testing_en_php
Pucela testingdays testing_en_phpPucela testingdays testing_en_php
Pucela testingdays testing_en_php
 

Mehr von César Hernández

Mehr von César Hernández (20)

7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
 
Paving the road with Jakarta EE and Apache TomEE - JCON 2021
Paving the road with Jakarta EE  and Apache TomEE - JCON 2021Paving the road with Jakarta EE  and Apache TomEE - JCON 2021
Paving the road with Jakarta EE and Apache TomEE - JCON 2021
 
7 recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
7 recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...7 recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
7 recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
 
Keeping brazil's medical industry safe with Micro Profile [TDC 2021]
Keeping brazil's medical industry safe with Micro Profile [TDC 2021]Keeping brazil's medical industry safe with Micro Profile [TDC 2021]
Keeping brazil's medical industry safe with Micro Profile [TDC 2021]
 
Aprende, contribuye, y surfea Cloud Native Java - GuateJUG 2021
Aprende, contribuye, y surfea Cloud Native Java - GuateJUG 2021Aprende, contribuye, y surfea Cloud Native Java - GuateJUG 2021
Aprende, contribuye, y surfea Cloud Native Java - GuateJUG 2021
 
Paving the way with Jakarta EE and Apache TomEE - JCConf
Paving the way with Jakarta EE  and Apache TomEE - JCConfPaving the way with Jakarta EE  and Apache TomEE - JCConf
Paving the way with Jakarta EE and Apache TomEE - JCConf
 
Keeping brazil's medical industry safe with Micro Profile and JakartaEE - Jak...
Keeping brazil's medical industry safe with Micro Profile and JakartaEE - Jak...Keeping brazil's medical industry safe with Micro Profile and JakartaEE - Jak...
Keeping brazil's medical industry safe with Micro Profile and JakartaEE - Jak...
 
Pavimentando el camino con Jakarta EE 9 y Apache TomEE
Pavimentando el camino con Jakarta EE 9 y Apache TomEE Pavimentando el camino con Jakarta EE 9 y Apache TomEE
Pavimentando el camino con Jakarta EE 9 y Apache TomEE
 
It is easy contributing to open source - JCON 2020
It is easy contributing to open source - JCON 2020It is easy contributing to open source - JCON 2020
It is easy contributing to open source - JCON 2020
 
It is easy contributing to Open Source - ECLIPSE CON 2020
It is easy contributing to Open Source - ECLIPSE CON 2020It is easy contributing to Open Source - ECLIPSE CON 2020
It is easy contributing to Open Source - ECLIPSE CON 2020
 
Paving the way with Jakarta EE and apache TomEE at cloudconferenceday
Paving the way with Jakarta EE and apache TomEE at cloudconferencedayPaving the way with Jakarta EE and apache TomEE at cloudconferenceday
Paving the way with Jakarta EE and apache TomEE at cloudconferenceday
 
Pavimentando el Camino con Jakarta EE 9 y Apache TomEE 9.0.0
Pavimentando el Camino con Jakarta EE 9 y Apache TomEE 9.0.0Pavimentando el Camino con Jakarta EE 9 y Apache TomEE 9.0.0
Pavimentando el Camino con Jakarta EE 9 y Apache TomEE 9.0.0
 
Creando microservicios con java micro profile y tomee - CUNORI 2020
Creando microservicios con java micro profile y tomee - CUNORI 2020Creando microservicios con java micro profile y tomee - CUNORI 2020
Creando microservicios con java micro profile y tomee - CUNORI 2020
 
Paving the way with Jakarta EE and Apache TomEE - itkonekt 2020
Paving the way with Jakarta EE and Apache TomEE - itkonekt 2020Paving the way with Jakarta EE and Apache TomEE - itkonekt 2020
Paving the way with Jakarta EE and Apache TomEE - itkonekt 2020
 
Creando microservicios con Java MicroProfile y TomEE - OGBT
Creando microservicios con Java MicroProfile y TomEE  - OGBTCreando microservicios con Java MicroProfile y TomEE  - OGBT
Creando microservicios con Java MicroProfile y TomEE - OGBT
 
Creando microservicios con Java, Microprofile y TomEE - Baranquilla JUG
Creando microservicios con Java, Microprofile y TomEE - Baranquilla JUGCreando microservicios con Java, Microprofile y TomEE - Baranquilla JUG
Creando microservicios con Java, Microprofile y TomEE - Baranquilla JUG
 
Creando microservicios con Java y Microprofile - Nicaragua JUG
Creando microservicios con Java y Microprofile - Nicaragua JUGCreando microservicios con Java y Microprofile - Nicaragua JUG
Creando microservicios con Java y Microprofile - Nicaragua JUG
 
Keeping brazil's medical industry safe with Micro Profile and JakartaEE - Jak...
Keeping brazil's medical industry safe with Micro Profile and JakartaEE - Jak...Keeping brazil's medical industry safe with Micro Profile and JakartaEE - Jak...
Keeping brazil's medical industry safe with Micro Profile and JakartaEE - Jak...
 
Es fácil contribuir al open source - Bolivia JUG 2020
Es fácil contribuir al open source - Bolivia JUG 2020Es fácil contribuir al open source - Bolivia JUG 2020
Es fácil contribuir al open source - Bolivia JUG 2020
 
Its easy! contributing to open source - Devnexus 2020
Its easy! contributing to open source - Devnexus 2020Its easy! contributing to open source - Devnexus 2020
Its easy! contributing to open source - Devnexus 2020
 

Kürzlich hochgeladen

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Kürzlich hochgeladen (15)

Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 

Administración de la calidad del software a través del análisis estático de código en java version otn 2013

  • 1. Administración de la calidad del software a través del análisis estático de código GuateJUG - OTN Tour Guatemala 2013 César Hernández CesarHernandezGt @CesarHgt CesarHernandezGt/OTN2013
  • 2. Agenda ● Análisis estático de código ● Beneficios ● Herramientas ● Retos ● Sonarqube
  • 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. 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
  • 6. "Porque hasta las personas más inteligentes pueden cometer los errores más estúpidos" -William Pugh-
  • 7. 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.
  • 9. ● 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 Categorías
  • 10. "En un proyecto de software con diez personas, probablemente tres de ellas introducen tantos errores que podríamos considerar su productividad como negativa." - Gordon Schulmeyer-
  • 11. 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
  • 13. ● Android ● Basic JSP ● Basic JSF ● Java Beans ● Optimization ● Naming Descripción de las más de 450 reglas: http://pmd.sourceforge.net/pmd-5.0.0/rules/index.html Categorías de reglas
  • 14. "Si el código y los comentarios no coinciden, posiblemente ambos sean erróneos" -Norm Schryer-
  • 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
  • 17. Ejemplo de detecciones Convenciones de nombrado Anotaciones Diseño de clases Imports Comentarios Javado Modificadores de acceso Naming Conventions Expresiones regulares Descripción de las más de 120 reglas: http://checkstyle.sourceforge.net/availablechecks.html
  • 18.
  • 19. Retos ● Diversas herramientas ● Diversos lenguajes de programación ● Necesidad de personalización ● Distribución y estandarización ● Ecosistemas de diversas tecnologías y versiones ● Constante cambio de....
  • 20. ● Plataforma para la administración de la calidad del código fuente. ● Gran parte de su funcionamiento se base en el Análisis Estático de Código. ABAP C/C++ C-Sharp (C#) COBOL Flex GroovyJavaScript Natural Pacbase PHP PL/I PL/SQL Python VB.NET Visual Basic 6 Web (HTML, JSP) XML Java
  • 21. Sonar a 1000 pies de altura
  • 22.
  • 23. DEMO Un poco de orden en la casa
  • 24. GuateJUG - OTN Tour Guatemala 2013 César Hernández PREGUNTAS? CesarHernandezGt @CesarHgt CesarHernandezGt/OTN2013