33
Rubén Soleto Buenvarón, Enrique Benito Domínguez, David Miranda Barrera y Julián Pérez Sampedro.

Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Rubén Soleto Buenvarón, Enrique Benito Domínguez, David Miranda Barrera y Julián Pérez Sampedro.

Page 2: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Índice

• - ¿Qué es Sonar?

• - Características

• - Funcionalidades

• - Utilidades

• - Caso práctico

• - Limitaciones y/o problemas encontrados

Page 3: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

¿Qué es Sonar? y… ¿Para qué sirve?

• Plataforma de código abierto. (licencia

GNU) (It’s free!!!)

• Herramienta de auditoría y evaluación de proyectos software.

• Gestión de la calidad del código fuente de un proyecto.

• Depuración de código.

• Facilitar dichas tareas.

Page 4: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Características principales

• Multilenguaje (Java, C++, C#, COBOL, .NET, …)

• Interfaz personalizable

• Aporta test de prueba unitarios (cobertura)

• Provee seguridad: – Mecanismo de autenticación – Mecanismo de autorización – Ej: restringir acceso a recursos, permisos por grupos, login

al entrar a un proyecto.

Page 5: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Características principales II

• Maven y Ant -> generan un XML con la estructura y las depencencias de un proyecto para agilizar la compilación.

• Metodología SQALE -> evaluación y monitorización del código fuente de la forma más objetiva y precisa posible para gestionar la ‘Deuda técnica’ y prevenir problemas.

(Deuda técnica: consecuencias provocadas por un desarrollo apresurado de software o un despliegue descuidado de hardware.)

Page 6: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Estructura de Sonar

1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido, cobertura, complejidad, etc.

2. Base de datos -> almacena datos de los análisis, la configuración y un historial de sucesos o eventos (MySQL, SQL server, Oracle)

Page 7: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

VENTAJAS

• Depuración de código más sencilla.

• Aumento de la calidad del producto final.

• Aumento de la eficiencia en el trabajo.

• Apto para ámbitos empresariales y particulares.

Page 8: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

VENTAJAS II

• Integrable en un IDE masivamente utilizado como es Eclipse.

• Multilenguaje.

• Facilidad de uso.

• Disponibilidad de plugins para aumentar su funcionalidad.

Page 9: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

INCONVENIENTES

• Algunos plugins son de pago: SQALE (2700€/año), COBOL (7,500€/año), Developer Cockpit (7,000€/año)…

• Más información sobre plugins en

http://www.sonarsource.com/products/plugins • Para poder soportar algunos lenguajes es

necesario descargar un plugin.

• Acumulación de plugins y su mantenimiento.

Page 10: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Funcionalidad

• Inspección continua • Informes procesables • Perspectiva para desarrolladores • Monitorización de cambios recientes • Evaluación de la deuda técnica • Gestión del ciclo de vida de las aplicaciones • Soporte multitecnológico • Panel de accesibilidad • Seguridad

Page 11: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Inspección continua

• Enfoque holístico.

• Fases:

– Analizar código, informar y tomar medidas.

Page 12: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Fases inspección continua

• Descubrir tendencias de programación:

Page 13: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Fases de la inspección

• Identificar los defectos en las últimas modificaciones con criterios diferenciales

Page 14: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Fases de la inspección

• Enfoque individual con informes personalizados por usuario

Page 15: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Fases de la inspección

• Tomar el control sobre nuevas incidencias

Page 16: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Funcionalidad

• Informes procesables

Page 17: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Otras funcionalidades

• Reglas personalizadas de identificación de defectos

• Perspectiva de desarrollador

• Gestión del ciclo de vida de las aplicaciones

• Soporte multitecnológico

• Panel de accesibilidad

Page 18: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Otras funcionalidades

• Seguridad

Page 19: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Utilidades

• En esta parte vamos a dar a conocer una herramienta muy útil sobre todo para el rol de "Jefe de Desarrollo" ya que de un sólo vistazo da valiosa información de como de bien está escrito el código de un proyecto

• Controla el desarrollo implementado por los programadores de un equipo.

Page 20: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Utilidades

• 1. Analiza el código fuente generando informes.

• Sección Violations: Errores del código dividido en niveles de gravedad. En la siguiente imagen nos damos cuenta también que SONAR se apoya en 3 herramientas útiles:

»Pmd:

»Cpd:

»Findbugs :

Page 21: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

PMD

• PMD es un conjunto de reglas estáticas del código fuente del analizador, que identifica problemas potenciales como:

• Posibles bugs: Vacío try / catch / finally / switch.

• Variables Deads: variables del código no utilizadas, variables locales, parámetros y métodos privados.

• Vaciar if / while.

• Excesivamente complicada expresiones innecesarias-if, bucles for que podría ser bucles while.

Page 22: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

CPD

• Es el Detector Copy /Paste. Es un add-on para el PMD que utiliza el algoritmo de búsqueda de Rabin-Karp , es decir , cadena a buscar para encontrar código duplicado. CPD trabaja con Java, JSP, C, C + +, Fortran, PHP y el código C.

Page 23: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

FindBugs

• FindBugs es un programa de tipo código abierto creado por William Pugh que busca errores en programas escritos en código Java.

• ¿Cómo detecta errores?: Utiliza análisis estático para identificar cientos de tipos de errores potenciales1 en programas Java.

Page 24: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Otras utilidades.

• Sonar también nos ofrece la posibilidad de configurar nuestras propias reglas para cada una de las tres tecnologías explicadas, en base a archivos de definición en XML.

• Si queremos ver que errores hemos cometido deberemos ir al apartado “Violations drilldown” donde podemos ir navegando por cada categoría hasta llegar a la clase donde se encuentra el error y ver el propio código con una explicación detallada de la violación cometida (Ver Foto).

Page 25: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Otras utilidades.

Page 26: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Otras utilidades.

• Sonar también nos ofrece la posibilidad de configurar nuestras propias reglas para cada una de las tres tecnologías explicadas, en base a archivos de definición en XML.

• Si queremos ver que errores hemos cometido deberemos ir al apartado “Violations drilldown” donde podemos ir navegando por cada categoría hasta llegar a la clase donde se encuentra el error y ver el propio código con una explicación detallada de la violación cometida (Ver Foto).

Page 27: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Caso Practico

• Requisitos para su uso.

• Instalación.

• Caso de prueba.

Page 28: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Caso Practico: Requisitos

• Tener la JDK de Java instalado en tu SO (versión 6 o mayor)

• Una Base de datos

• Un Cliente

• Un Servidor

• Un Servidor Web Servidor

BD Cliente

Page 29: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Caso Practico: Instalación

• Primero: Instalación de Base de datos, MySQL, Oracle, H2, Apache, etc…

• Segundo: Tener instalado un Navegador Web.

• Tercero: Instalar el servidor de Sonar e iniciarlo

• Cuarto: Instalar el Cliente, SonarRunner, Maven, Ant Task, etc…

• Existe un pluging para Eclipse (version 3.2 o superior).

Page 30: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Caso Practico

• Después de este proceso iniciar servidor

• Iniciar cliente sobre un proyecto(SonarRunner, Maven, Ant Task, etc…)

• Ver resultados en un explorador web en la dirección localhost:9000 (por defecto), y nos aparecerá algo como esto…

Page 31: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Caso practico

Page 32: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Caso Practico

Page 33: Rubén Soleto Buenvarón, Enrique Benito Domínguez, David ... · Estructura de Sonar 1. Analizadores de código -> escanean el código fuente en busca de errores, código repetido,

Limitaciones y/o problemas encontrados

• La versión final es de pago

• Los plugins de los lenguajes también son de pago

• Solo un lenguaje gratuito Java

• Necesitas unos conocimientos medios sobre bases de datos, clientes y servidores, etc…

• Software orientado principalmente a las empresas grandes.