SlideShare una empresa de Scribd logo
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

Más contenido relacionado

La actualidad más candente

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
 

La actualidad más candente (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
 

Destacado

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
 

Destacado (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
 

Similar a 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
 

Similar a 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
 

Más de César Hernández

Más de 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
 

Último

proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
raquelariza02
 
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxPRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
encinasm992
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 

Último (20)

leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
3°ð_¦_â_¾ï¸_S34 PLAN DARUKEL DIDÃ_CTICA 23-24.docx
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 
Gestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerGestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL Server
 
manual-de-oleohidraulica-industrial-vickers.pdf
manual-de-oleohidraulica-industrial-vickers.pdfmanual-de-oleohidraulica-industrial-vickers.pdf
manual-de-oleohidraulica-industrial-vickers.pdf
 
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdfHIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
 
Licencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareLicencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de Software
 
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docxPRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
PRÁCTICAS DEL MÓDULO I Y II DE EDUCACIÓN Y SOCIEDAD.docx
 
lenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometrialenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometria
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptx
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
 

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