UNIVERSIDAD NACIONAL DE UCAYALI FACULTAD DE INGENIERIA DE SISTEMAS Y DE INGENIERIA CIVIL

ESCUELA DE FORMACIÔN PROFESIONAL DE INGENIERIA DE SISTEMAS

"SONARQUBE 4.0 EN LA CERTIFICACIÔN DE CODIGO JAVA EN UNA CONSULTORA DE PROYECTOS INFORMATICOS"

Tes is

Para Optar al TItulo de:

INGENIERO DE SISTEMAS

TESISTA BACH. AGUILAR POLO YOSLAR.

BACH. FLORES CHIRINOS GERARD.

AS ESO R ING. MG. JORGE LUIS HILARIO RIVAS.

PUCALLPA - PERU

2017 f,\UNIVERSIDAD NACIONAL DE UCAYALI

FACULTAD DE INGENIERIA DE SISTEMAS Y DE INGENIERIA CIVIL

Escuela Académica Profesional de Ingenieria de Sistemas

INFORME DE ASESORIA DE TESIS

Tesista : Bach. Aguilar Polo Yoslar.

Bach. Flores Chirinos Gerard.

Tesis : SONARQUBE 4.0 EN LA CERTIFICACION DE

CODIGO JAVA EN UNA CONSULTORA DE

PROYECTOS INFORMATICOS.

Que, los tesistas han cumplido con ejecutar Ia tesis titulada: "SONARQUBE 4.0 EN LA CERTIFICACION DE CODIGO JAVA EN UNA CONSULTORA DE PROYECTOS INFORMATICOS", de conformidad con el Reglamento General de Grados y Titulos de Ia Universidad Nacional de Ucayali, por lo que ml asesoria declara: APROBADO y, encontrándose apta para ser presentada y evaluada por Ia Comisión de Grados y Titulos de Ia Facultad de lngenierIa de Sistemas y de Ingenieria Civil de Ia Universidad Nacional de Ucayali.

Se expide el presente documento, a solicitud de los interesados para los fines consiguientes.

P i j r,.,q I I nq r1in del 2017 "SONARQUBE 4.0 EN LA CERTIFICACION DE CODIGO JAVA EN UNA CONSULTORA DE PROYECTOS INFORMATICOS"

Por:

Bach. Aguilar Polo Yoslar.

Bach. Flores Chirinos Gerard.

Aprobado

Asesor: DEDICATORIA

A mis padres y familiares.

Yoslar.

A ms padres, a mi esposa y ml hija.

Gerard. AGRADECIMIENTO

Al Ing. Mg. Jorge Luis Hilario Rivas, por su asesoramiento en nuestro informe, nuestro mayor reconocimiento por su trayectoria académica y profundo respeto, le estamos muy agradecidos.

A Ia Universidad Nacional de Ucayali y los catedräticos de Ia Escuela Profesional de Ingenieria de sistemas. INDICE DE CONTENIDO

DEDICATORIA...... iv

AGRADECIMIENTO......

LISTADE TABLAS ...... xii

LISTA DE FIGURAS ...... xvi

RESUMEN...... xix

ABSTRACT...... xx

INTRODUCCION...... xxi

CAPITULOI...... 1

PLANTEAMIENTO DEL PROBLEMA ...... 1

1.1. DESCRIPCION DE LA REALIDAD PROBLEMATICA ...... 1

1.2. FORMULACION DEL PROBLEMA ...... 2

1.2.1. GENERAL...... 2

1.2.2. ESPECIFICOS...... 3

1.3. OBJETIVOS DE LA INVESTIGACION ...... 3

1.3.1. GENERAL...... 3

1.3.2. ESPECIFICOS ...... 3

1.4. HIPOTESIS...... 4 1.4.1. GENERAL .4

1.4.2. ESPECIFICOS...... 4

1.5. JUSTIFICACION, IMPORTANCIAY LIMITACIONES DE LA

INVESTIGACION...... 5

1.5.1. JUSTIFICACION TEORICA ...... 5

1.5.2. JUSTIFICACION PRACTICA...... 5

1.5.3. JUSTIFICACION METODOLOGICA ...... 6

1.5.4. IMPORTANCIA...... 6

1.5.5. LIMITACIONES ...... 7

1.6. VARIABLES. ...... 7

1.6.1. VARIABLE INDEPENDIENTE...... 7

1.6.2. VARIABLE DEPENDIENTE ...... 7

1.6.3. VARIABLE INTERVINIENTE...... 7

1.7. OPERACIONALIZACION DE LAS VARIABLES ...... 8

CAPITULOII...... 9

MARCOTEORICO ...... 9

2.1. ANTECEDENTES DE LA INVESTIGACION...... 9

2.2. BASES TEORICAS...... 12

JAVA ...... 12 CARACTERISTICAS DE JAVA COMO LENGUAJE DE

PROGRAMACION ...... 14

CODIGO FUENTE ...... 16

SONARQUBE...... 18

ARQUITECTURA DE SONARQUBE...... 19

INTEGRACION DE SONARQUBE ...... 21

REQUISITOS DE HARDWARE PARA SONARQUBE ...... 22

MEDIDA DE LA CALl DAD DE TU CODIGO...... 23

JENKINS...... 23

2.3. DEFINICION DE TERMINOS BASICOS ...... 25

CAPITULOIII ...... 29

MARCO METODOLOGICO ...... 29

3.1. METODOLOGIA DE LA INVESTIGACION ...... 29

3.1.1. TIPO DE INVESTIGACION...... 29

3.1.2. NIVEL DE INVESTIGACION...... 29

3.1.3. METODO DE INVESTIGACION ...... 29

3.1.4. DISEO DE INVESTIGACION ...... 30

3.2. POBLACION Y MUESTRA...... 31

3.2.1. POBLACION...... 31 3.2.2. MLJESTRA .31

3.3. PROCESAMIENTO DE RECOLECCION DE DATOS ...... 32

3.4. TRATAMIENTO DE LOS DATOS ...... 32

3.4.1. PROCESAMIENTO Y PRESENTACION DE DATOS ...... 32

3.4.2. MECANISMOS PARA EL PROCESAMIENTO Y

PRESENTACION DE DATOS ...... 33

3.4.3. MECANISMOS PARA EL ANALISIS E

INTERPRETACION DE RESULTADOS...... 34

CAPITULOIV ...... 35

RESULTADOS...... 35

4.1. INTERPRETACION DE RESULTADOS PRE-TEST ...... 35

4.2. INTERPRETACION DE RESULTADOS POST - TEST ...... 46

4.3. PRUEBA DE HIPOTESIS ...... 57

4.3.1. FORMULACION DE CUADRO DE VALORES DE

INDICADORES...... 57

4.3.2. SUPUESTOS DE LA PRUEBA DE HIPOTESIS...... 58

4.3.3. CALCULO DEL VALOR CRITICO Y LA FUNCION

PRUEBA 59

CAPITULOV...... 64

DISCUSION DE RESULTADOS ...... 64 5.1. CONSTRASTACION DE RESULTADOS .64

5.1.1. DEFINICION DE METRICAS ...... 66

5.1.2. DEFINICION DE METRICAS JAVA...... 67

5.1.3. ANALISIS DE CODIGO FUENTE ...... 76

5.1.4. EL ESPACIO DE TRABAJO...... 100

5.1.5. LA PAGINA DE INICIO ...... 102

5.1.6. CUADRO DE MANDOS DE UN PROYECTO...... 111

5.1.7. NAVEGACION POR LAS METRICAS ...... 116

5.1.8. EVENTOS...... 117

5.1.9. EL VISOR DE RECURSOS ...... 117

5.1.10. COMPONENTES ...... 125

5.1.11. NAVEGACION POR LAS EVIDENCIAS...... 126

5.1.12. LAMAQUINADELTIEMPO ...... 128

5.1.13. NUBES ...... 132

5.1.14. LOS "TOP"...... 133

5.1.15. DISE11OYDEPENDENCIAS ...... 134

5.1.16. LIBRERIAS...... 138

5.1.17. SEGURIDAD...... 140

5.1.18. REVISIONES MANUALES DE CODIGO...... 142 5.1.19. USANDO SONAR EN ECLIPSE . 146

CONCLUSIONES ...... 160

SUGERENCIAS...... 161

REFERENCIAS BIBLIOGRAFICAS ...... 162

ANEXOS...... 165

ANEXO 1. MATRIZ DE IDENTIFICACION DEL PROBLEMA...... 166

ANEXO 2. HOJA DE RUTA DE LAS VARIABLES ...... 167

ANEXO 3. MATRIZ DE CONSISTENCIA ...... 168

ANEXO 4. CUESTIONARIO DIRIGIDO AL EQUIPO QUE

ELABORAN PROYECTOS DE LA CONSULTORA EVERIS ...... 169

ANEXO 5. VALIDACION DEL INSTRUMENTO ...... 171

ANEXO 6. MANUAL DE USUARIO JENKINS...... 173

ANEXO 7. MANUAL DE USUARIO SONARQUBE ...... 184 LISTA DE TABLAS labia 1. Dimensiones e indicadores de las variables ...... 8 labia 2. Pobiación del equipo de ...... 31 labia 3. instrumentos de recolecciOn de datos...... 32 labia 4. Pre - Test ,COmo califica Ia furicionaiidad del cOdigo Java9 ...... 35 labia 5. Pre - Test ,Cômo califica Ia confiabiiidad del côdigo Java' ...... 36 labia 6. Pre - Test ,Cômo califica Ia usabilidad del codigo Java9 ...... 37 labia 7. Pre - Test ,Cômo califica Ia eficiencia del codigo Java' ...... 38 labia 8. Pre - Test ,Cómo califica Ia eficacia del cOd igo Java' ...... 39 labia 9. Pre - Test ,COmo califica ia portabiiidad del cOdigo Java' ...... 40 labia 10. Pre - Test ,COmo califica los reportes emitidos en Ia certiflcaciOn de codigo Java' ...... 41 labia 11. Pre - Test ,COmo califica ia verificaciOn en Ia certificaciOn de códigoJava9 ...... 42

Tabla 12. Pre - Test ,COmo califica los procesos evaivaciOn en Ia certificaciOn de cOdigo Java' ...... 43 labIa 13. Pre - Test ,COmo califica los recursos en Ia certificaciOn de cOdigoJava' ...... 44 labia 14. Pre - Test ,COmo califica ia satisfacción en Ia certificaciôn de codigoJava' ...... 45 Tabla 15. ,COmo califica Ia funcionalidad del SonarQube 4.0 en Ia

certificaciOn de cOdigo Java? ...... 46

Tabla 16. 6C6mo califica Ia confiabilidad del SonarQube 4.0 en Ia

certificaciôn de cOdigo Java? ...... 47

Tabla 17. ,COmo califica Ia usabilidad del SonarQube 4.0 en Ia

certificaciôn de côdigo Java? ...... 48

Tabla 18. c,COmo califica Ia eficiencia del SonarQube 4.0 en Ia

certificaciOn de côdigo Java? ...... 49

Tabla 19. ,Cômo califica Ia eficacia del SonarQube 4.0 en Ia certificaciôn decOdigoJava? ...... 50

Tabla 20. ,COmo califica Ia portabilidad del SonarQube 4.0 en Ia

certificaciOn de cOdigo Java'? ...... 51

Tabla 21. ,Cômo califica los reportes emitidos del SonarQube 4.0 en Ia

certificaciôn de côdigo Java'? ...... 52

Tabla 22. ,Cômo califica Ia verificaciôn del SonarQube 4.0 en Ia

certificaciOn de côdigo Java'? ...... 53

Tabla 23. ,Cômo califica los procesos del SonarQube 4.0 en Ia

certificación de cOdigo Java'? ...... 54

Tabla 24. ,Cômo califica los recursos del SonarQube 4.0 en Ia

certificaciOn de côdigo Java'? ...... 55

Tabla 25. ,COmo califica Ia satisfacciOn del SonarQube 4.0 en Ia

certificaciôn de cOdigo Java'? ...... 56 Tabla 26. Para variables cualitativos ...... 58

Tabla 27. Resumen de resultado de valores...... 59

Tabla 28. CorrelaciOn de datos del Pre - Test...... 62

Tabla 29. CorrelaciOn de datos del Post - Test ...... 63

Tabla 30. Arquitectura del Sonar...... 64

Tabla 31. Calidad del Sonar ...... 65

Tabla 32. Interface web del Sonar...... 66

Tabla 33. DefiniciOn de métricas Java por tamaño ...... 67

Tabla 34. DefiniciOn de métricas Java por pruebas ...... 70

Tabla 35. Definiciôn de métricas Java por duplicidad ...... 72

Tabla 36. DefiniciOn de métricas Java por diseño ...... 72

Tabla 37. DefiniciOn de métricas Java por corn plejidad ...... 73

Tabla 38. Definiciôn de métricas Java por reglas...... 75

Tabla 39. Definiciôn de métricas Java por SCM ...... 75

Tabla 40. Servidor Sonar...... 95

Tabla 41. Base de datos...... 95

Tabla 42. Configuracion del proyecto...... 95

Tabla 43. ConfiguraciOn de proyecto...... 96

Tabla 44. Unit And Integration Tests ...... 98 Tabla 45. Sonar Configuration . 99

Tabla46. Log ...... 99 LISTA DE FIGURAS

Figura 1. Las interioridades de Java.... 14

Figura 2. Ejes de calidad ...... 19

Figura 3. Arquitectura de SonarQube.. 20

Figura 4. lntegracion de SonarQube ...... 22

Figura 5. Pre - Test ,Cômo califica Ia funcionalidad del cOdigo Java? ...... 35

Figura 6. Pre - Test ,Cômo califica Ia confiabilidad del codigo Java? ...... 36

Figura 7. Pre - Test 6C6mo califica Ia usabilidad del cOd igo Java'? ...... 37

Figura 8. Pre - Test ,Cómo califica Ia eficiencia del cOdigo Java'? ...... 38

Figura 9. Pre - Test ,COmo califica Ia eficacia del cOdigo Java'? ...... 39

Figura 10. Pre - Test ,COmo califica Ia portabilidad del cOdigo Java'? ...... 40

Figura 11. Pre - Test ,COmo califica los reportes emitidos en Ia certificacion de cOdigo Java'? ...... 41

Figura 12. Pre - Test ,COmo califica Ia verificación en Ia certificaciOn de cOdigo Java'? ...... 42

Figura 13. Pre - Test ,COmo califica los procesos evaluaciOn en Ia certificaciOn de cOdigo Java'? ...... 43

Figura 14. Pre - Test ,Cômo califica los recursos en Ia certificaciOn de cOdigo Java'? ...... 44 Figura 15. Pre - Test Cômo califica Ia satisfacciôn en Ia certificaciOn de

cOdigoJava? ...... 45

Figura 16. c Cómo califica Ia funcionalidad del SonarQube 4.0 en Ia

certificaciôn de côdigo Java? ...... 46

Figura 17. ,COmo califica Ia confiabilidad del SonarQube 4.0 en Ia

certificaciOn de código Java? ...... 47

Figura 18. ,Cômo califica Ia usabilidad del SonarQube 4.0 en Ia

certificac,On de côdigo Java'? ...... 48

Figura 19. 4C6mo califica Ia eficiencia del SonarQube 4.0 en Ia

certificaciôn de cOdigo Java'? ...... 49

Figura 20. ,COmo califica Ia eficacia del SonarQube 4.0 en Ia

certificaciôn de cod igo Java'? ...... 50

Figura 21. ,COmo califica Ia portabilidad del SonarQube 4.0 en Ia

certificaciôn de cOdigo Java'? ...... 51

Figura 22. c Cômo califica los reportes emitidos del SonarQube 4.0 en Ia

certificaciOn de cOdigo Java'? ...... 52

Figura 23. ,COmo califica Ia verificaciôn del SonarQube 4.0 en Ia

certificaciOn de cOdigo Java'? ...... 53

Figura 24. 4C6mo califica los procesos del SonarQube 4.0 en Ia

certificaciOn de cOdigo Java'? ...... 54

Figura 25. ,COmo califica los recursos del SonarQube 4.0 en Ia

certificaciOn de codigo Java'? ...... 55 Figura 26. ,Cômo califica Ia satisfacciôn del SonarQube 4.0 en Ia certificaciôn de codigo Java?...... 56 RESUMEN

La presente investigaciOn, cuenta con el problema general de qué mariera

SonarQube 4.0 mejora Ia certificaciôn de código Java en una consultora de proyectos informáticos. El objetivo consiste en proponer el SonarQube 4.0 mejora Ia certificaciOn de código Java en una consultora de proyectos informáticos. La hipOtesis demostrada SonarQube 4.0 mejora Ia certificación de cOdigo Java en una consultora de proyectos informéticos.

El tipo y nivel de Ia investigaciOn es aplicada y descriptiva respectivamente, asimismo el diseño es Pre Test - Post; Ia muestra corresponde a 16 profesionales del equipo que elaboran proyectos de software de Ia consultora

Evens, y el instrumento que sirvió para recolectar información es Ia encuesta.

La principal conclusiOn fue se ejecuto un estudio detallado para Ia respectiva centificaciOn de codigo Java, donde se detectan vulnerabilildades en las aplicaciones webs que deben ser corregidas. En primera instancia se realiza una revisiOn general del codigo fuente, asimismo se describe el uso de Ia técnica para ejecutar el respectivo análisis, en cumplimiento de los estándares de calidad.

Palabras claves: Proceso, Metodologia y Usuario. ABSTRACT

This research has the general problem of how SonarQube 4.0 improves Java code certification in a computer project consultancy. The objective is to propose the SonarQube 4.0 enhances Java code certification in a computer projects consultancy. The proven SonarQube 4.0 assumption improves Java code certification in a computer project consultancy.

The type and level of the research is applied and descriptive respectively, also the design is Pre Test - Post; The sample corresponds to 16 professionals of the equipment that elaborate software projects of the Evens consultancy, and the instrument that served to gather information is the survey.

The main conclusion was that a detailed study was carried out for the respective

Java code certification, where vulnerabilities are detected in web applications that need to be corrected. In the first instance, a general revision of the source code is performed, as well as the use of the technique to execute the respective analysis, in compliance with the quality standards.

Key words: Process, Methodology and User. INTRODUCCION

La tesis denominada "SONARQUBE 4.0 EN LA CERTIFICACION DE CODIGO

JAVA EN UNA CONSULTORA DE PROYECTOS INFORMATICOS", propone una revisiOn general del estado de las herramientas de análisis de cOdigo enfocadas en detectar vulnerabilidades en aplicaciones web y su implementaciOn dentro del ciclo de desarrollo del software. Estas herramientas constituyen una forma rápida, eficiente y sencilla de asegurar los proyectos de software, incluso Si no todos los fallos son detectados.

La evaluaciOn busca demostrar el estado actual y real de los programas de, con el fin que SonarQube 4.0 logre mejorar Ia seguridad de sus proyectos a partir de

Ia implementaciOn de Ia herramienta que mas se ajuste a sus necesidades y metodologlas de desarrollo.

Después de Ilevar a cabo el trabajo de campo, el presente trabajo de investigaciOn se ha estructurado en cinco capitulos:

Capitulo I - Planteamiento del Problema: Se describe los

antecedentes del problema, diagnOstico de Ia situaciOn actual,

formulaciOn del problema, objetivos, justificaciOn e importancia,

hipOtesis, variables y operacionalizaciOn.

Capitulo II - Marco Teórico: Se describe los antecedes del problema

teOricamente, las bases teOricas y Ia definiciOn de términos básicos.

' Capitulo Ill - Marco MetodolOgico: se describe el tipo, nivel método y

diseño de Ia investigaciOn, poblacion y muestra, procesamiento de

recolecciOn de datos y el tratamiento de los datos. Capitulo IV - Resultados: Se presentan los resultados del anâlisis

estadIstico y Ia prueba de hipOtesis.

CAPITULO V - DiscusiOn de resultados: Se realiza Ia discusiOn de

resultados y Ia propuesta de Ia herramienta.

Finalmente, presentamos las conclusiones, sugerencias, referencias bibliogrâficas y anexos correspondientes. 1

CAPITULO I

PLANTEAMIENTO DEL PROBLEMA

I.I. DESCRIPCIóN DE LA REALIDAD PROBLEMATICA

En el PerU existen consultoras de proyectos informâticos, con un amplio

portafolio de servicios y de clientes, el inconveniente radica que los

proyectos ejecutados, no cuentan con una debida estandarizaciôn de los

procesos para Ia certificaciôn del codigo fuente, es por ello que Ia presenta

investigaciOn, plantea evaluar en Ia etapa de "Prueba" si los cOdigos

mantienen uniformidad y pueden ser reusables en prOximas versiones.

El análisis del codigo es un proceso automatizado que se realiza sobre Ia

codificaciôn de una aplicaciOn sin necesidad de Ia ejecuciOn. Puede

incluirse el análisis estático manual realizado por un humano. Pero, para

términos de esta tesis, el análisis estático es un análisis realizado de forma

automatizada por una herramienta. La idea principal de estas herramientas

es encontrar, tan pronto como sea posible, defectos de codificación en el

ciclo de vida del desarrollo, generalmente después de escribir el código

fuente de Ia aplicaciOn.

Las primeras herramientas de análisis de cOdigo estético eran sencillos

programas de chequeo que no eran mas sofisticados. Estos software

fueron rápidamente precedidos por herramientas comerciales mas

sofisticadas que buscaban automatizar Ia revision de código para una

variedad de lenguajes de programacion. Estos programas analizan los 2

fallos mas comunes para cada lenguaje en particular y ayudan a los

desarrolladores a crear cOdigos mas estabtes y de mayor calidad.

SINTOMAS

Falta de normativas y protocolos.

Conflictos al momento de realizar Ia siguiente versiOn del software.

Las clases y funciones no se encuentran debidamente relacionadas.

Clases con Ilneas de cOdigo extenso.

CONSECUENCIAS

Duplicidad de codigo en las clases.

ReestructuraciOn total del cOdigo fuente en Ia siguiente versiOn del

software.

Uso excesivo de variables locales.

Errores at momento de Ia compilaciOn.

1.2. FORMULACIÔN DEL PROBLEMA

1.2.1. GENERAL

,De qué manera SonarQube 4.0 mejora Ia certificaciOn de cOdigo

Java en una consultora de proyectos informáticos? 3

1.2.2. ESPEC1FICOS

,CuáI es el proceso de certificaciOn de cOdigo Java en el ciclo

de desarrollo de los proyectos informáticos para el

cumplimiento de estándares de calidad?

,Cuál es el grado de asociaciOn entre SonarQube 4.0 y Ia

certificaciôn de cOdigo Java en una consultora de proyectos

informáticos?

,CuáI es Ia aplicaciOn del SonarQube 4.0 como herramienta

para Ia certificaciOn de cOdigo Java en una consultora de

proyectos informáticos?

1.3. OBJETIVOS DE LA INVESTIGACION

1.3.1. GENERAL

Proponer el SonarQube 4.0 mejora Ia certificaciOn de código Java

en una consultora de proyectos informáticos.

1.3.2. ESPEC1FICOS

Integrar Ia certificaciOn de cOdigo Java en el cicto de desarrollo

de los proyectds informáticos para el cumplimiento de

estãndares de calidad.

Determinar el grado de asociación entre SonarQube 4.0 y Ia

certificación de codigo Java en una consultora de proyectos

informáticos. 4

3. Evaluar Ia aplicaciOn del SonarQube 4.0 como herramienta

para Ia certificaciOn de cOdigo Java en una consultora de

proyectos informáticos.

1.4. HIPÔTESIS

1.4.1. GENERAL

"SonarQube 4.0 mejora Ia certificaciôn de côdigo Java en una

consultora de proyectos informáticos".

1.4.2. ESPEC1FICOS

"Existe integraciôn de Ia certificaciôn de cOdigo Java en el

ciclo de desarrollo de los proyectos informáticos para el

cumplimiento de estándares de calidad".

"SonarQube 4.0 posee un grado de asociaciôn con Ia

certificaciOn de cOdigo Java en una consultora de proyectos

informáticos".

"Es viable Ia aplicación del SonarQube 4.0 como herramienta

para Ia certificaciôn de côdigo Java en una consultora de

proyectos informáticos". 5

1.5. JUSTIFICACIÔN, IMPORTANCIA Y LIMITACIONES DE LA

INVESTIGACIóN

I.S.I. JUSTIFICACIÔN TEÔRICA

Mediante Ia documentaciOn fundamentamos nuestra investigaciOn,

porque en ella expresamos nuestras ideas que son respaldadas por

autores con definiciones acertadas. De igual forma con el uso del

SonarQube 4.0 lograremos importantes mejoras en Ia certificaciOn

del côdigo Java, anulando cOdigo redundante en Ia elaboraciOn de

las clases.

El sistema brinda lo siguiente:

Resumen de las incidencias.

Reporte de los riesgos alto, medio y bajo.

Cumplimiento de reglas.

Reporte del codigo Java.

1.5.2. JUSTIFICACIÔN PRACTICA

La aplicaciOn del SonarQube 4.0 constituye una eficiente y segura

forma de confirmar, el adecuado uso de los proyectos informáticos,

asimismo silos errores no son detectados. Mediante Ia evaluaciOn

buscamos señalar el estado real de los codigos fuente elaborados

en el lenguaje de programaciôn Java, con el propôsito de mejorar [j

Ia seguridad en Ia implementacion realizando ajustes y métodos de

desarrollo.

1.5.3. JUSTIFICACIÔN METODOLOGICA

Se siguiô los lineamientos del proceso de investigaciOn Ia cual

incluye el planteamiento de interrogantes, objetivos e hipOtesis, a

fin de establecer un conocimiento probable acerca de los factores

que influyen en el certificaciôn del codigo Java (Hernández

Sampieri, Fernández Collado, & Baptista Lucio, 2014).

1.5.4. IMPORTANCIA

La importancia del Sonarqube radica en Ia mejora continua del

codigo fuente, manteniendo un cierto nivel de calidad y legibilidad

de código, siendo de crucial importancia para un desarrollo exitoso

en el ambiente de desarrollo dinámico actual de las consultoras

inform áticas.

Esos ambientes requieren seguir ciertas convenciones de codigo

para lograr que el cOdigo sea entendible para todos los

involucrados en el proceso.

Para mantener un control de alta calidad, elegimos proponer Ia

revisiOn de cOdigo en nuestro proceso de desarrollo. Sin embargo,

luego de cierto tiempo, las revisiones comenzaron a Ilevar mucho

tiempo y desviaban nuestra atenciOn de otras tareas importantes.

La revisiOn de cOdigo consiste no sOlo en un proceso de revisiOn 7

creativo sino también en un control de errores repetitivos, del uso

de las reglas de convenciOn, etcetera. Se cuestionO el proceso

completo, asI que una soluciOn logica era automatizar una parte.

1.5.5. LIMITACIONES

La disponibilidad de tiempo de los tesistas, por el término de Ia

distancia entre ellos.

Falta de informaciOn en libros sobre Ia herramienta Sonarqube,

teniendo que consideras bibliografias de Ia web.

Al estar laborando fuera de Ia ciudad de Pucallpa, los trámites

tienden a demorar.

1.6. VARIABLES.

1.6.1. VARIABLE INDEPENDIENTE

SonarQube 4.0.

1.6.2. VARIABLE DEPENDIENTE

CertificaciOn de codigo Java.

1.6.3. VARIABLE INTERVINIENTE

Consultora de proyectos informáticos. 1.7. OPERACIONALIZACIóN DE LAS VARIABLES

Tabla 1. Dimensiones e indicadores de las variables

Variables Dimensiones Indicadores

Funcionalidad %

Confiabilidad %

Métricas de Usabilidad % SonarQube 4.0. software Eficiencia %

Eficacia %

Portabilidad %

Reportes %

VerificaciOn % CertificaciOn de Control de Procesos % codigo Java calidad Recursos %

Satisfacción CAPITULO II

MARCO TEORICO

2.1. ANTECEDENTES DE LA INVESTIGACIÔN

(Ospina Delgado, 2015), en su investigación: "Análisis de segundad y

calidad de aplicaciones (Sonarqube)" busca Implantar dentro del ciclo de

vida del desarrollo de aplicaciones el cOmputo automático de una serie

de métricas sobre Ia calidad del cOdigo y Ia büsqueda de

vulnerabilidades. Lo anterior se hare realizando Ia integraciOn de estos

mOdulos de análisis dentro de Ia herramienta de software libre

SonarQube. Llegando a Ia siguiente conclusion en el presente trabajo se

realizO un estudio sistemático de Ia actualidad del análisis de cadigo

estático y, para ser más precisos, del análisis de cOdigo estático

enfocado en detectar vulnerabilidades en aplicaciones web JAVA. En Ia

primera parte se hizo una breve presentaciOn sobre los avances y el

adelanto actual de Ia revisiOn automatizada de cOdigo y su

implementaciOn en el desarrollo de proyectos. Luego se describiO cada

una de las técnicas utilizadas para realizar anelisis estático y cuáles son

los usos que se les pueden dar a estas herramientas, además se

especifican las ventajas y desventajas que ofrecen al implementarse

dentro del proceso de desarrollo de sistemas. Con esa base se procede

a explicar las caracteristicas y funcionalidades de SonarQube, por ser el 10

software propuesto por el ANCERT como una alternativa viable para ser

implementada en sus desarrollos.1

(Aguilera DIaz, 2014), en su investigaciOn: "Analizando Ia calidad del

cOdigo Java con Sonar" busca conocer una herramienta muy ütil sobre

todo para el rol de 'Jefe de Desarrollo" ya que de un sOlo vistazo da

valiosa informaciOn si está bien escrito el codigo de un proyecto.

Llegando a Ia siguiente conclusiOn esta herramienta nos facilita que

nuestros proyectos mantengan una calidad 6ptima.2

(Dávila Murillo, 2010), en su investigaciOn: "Software para controlar ía

calidad en el desarrollo de software SONAR" busca utilizar Sonar y su

funcionalidad para que las empresas cubran su necesidad de poder

contar con Herramientas para el control de calidad en el codigo fuente

de sus desarrollos de Software. Liegando a Ia siguiente conclusiOn en el

mercado nacional no existen las suficientes herramientas para controlar

Ia calidad de los programas desarrollados, sin embargo se cuenta con

productos como Sonar, el cual Ilega a cubrir las necesidades importantes

de Ia calidad del Software. Sonar es una herramienta muy valiosa sobre

todo para el trabajo que desempeña el Jefe o Lider de Desarrollo, ya que

de una sola revisiOn puede ver toda Ia informaciOn del cOdigo de un

proyecto, puede identificar cuáles son las fallas que se han detectado,

cual es porcentaje de cumplimiento de reglas y el nivel de complejidad

tanto de las clases como de los métodos que 10 componen. De esta

1hftp://openaccess.uoc.edu/webapps/o2/bitstream/1 0609/43263/3/gnupabIoTFMO71 5memoria.p df 2https://www.adictosaltrabajo.com/tutoriales/utiflzando-sonar/ 11

manera se puede controlar y evaluar el desarrollo que sus

programadores implementen.3

(Bavera, 2006), en su investigaciOn: "Compilación y certificaciOn de

cOdigo mediante análisis estático de flujo de control y de datos"

realizando el siguiente aporte: Se diseñô y desarrollo un prototipo de

compilador certificante basado en análisis estático de flujo de control y

de datos. Este compilador permite certificar propiedades de seguridad

de gran importancia. Por ejemplo, certifica Ia ausencia de accesos

inválidos a los arreglos. CCM1ni toma como entrada un subconjunto

extendido de C y genera un 'árbol sintáctico abstracto anotado con

informaciOn del estado del programa en cada punto. CCMini asegura que

solo serán descartados aquellos programas que son ciertamente

inseguros. Si no puede determinar Ia seguridad de un programa inserta

verificaciones dinámicas que garantizan Ia ejecución segura del

programa. Esto no solo ocurre por las limitaciones de un análisis estático

particular sino porque los problemas a resolver son no computables,

como por ejemplo, garantizar Ia seguridad al eliminar Ia totalidad de

array-bound checking dinámicos.4

(Alba Castro, 2008), en su investigaciOn: 'CertificaciOn automática de

propiedades de seguridad de codigo fuente Java en IOgica de

reescritura" realizando el siguiente aporte por Ic que se sabe, el enfoque

desarrollado es Ia primera aproximaciOn correcta, y completa de una

herramienta completamente automática para Ia verificaciOn de

http://repositorio.ug.edu.ec/bitstream/redug/6899/1 ITesis%2OCompleta-289-201 1 .pdf 4 htto:/Idc.exa.unrc.edu.ar/staff/thavera/Daners/tesi maestri Fndf 12

propiedades aritméticas basadas en tipos no verificables por un

compilador estándar, de programas Java (côdigo fuente). La completitud

es relativa a Ia abstracciOn, pero puede obviarse al mejorar Ia

aproximación. La escalabilidad a cOdigo de tamaño y complejidad

industriales depende de las abstracciones disponibles, para el cual los

dominios abstractos EvenOdd y Mod4 no tenlan Ia precision suficiente.

Esto quiere decir que para certificar un programa Java dado, es posible

que se necesite definir un nuevo dominio abstracto. Si se quiere certificar

Ia politica de resultados EvenOdd, el nuevo dominio posiblemente sea

una refinaciOn de los existentes EvenOdd, Mod4 y AbstLeqN.5

2.2. BASES TEÔRICAS

JAVA

El lenguaje Java fue creado por Sun Microsystems Inc., Aparece en el año

1995 y debe, en gran medida, su popularidad al éxito del servicio VWVW.

Se creO en su origen para que fuese un lenguaje multiplataforma. Para ello

se compila en un cOdigo intermedio: bytecode y necesita de una méquina

virtual que lo ejecute. Normalmente, no utiliza codigo nativo, es decir, no se

puede ejecutar directamente por el procesador. (Bernal Bermüdez, 2012)

Java es un lenguaje de programación con el que podemos realizar

cualquier tipo de programa. En Ia actualidad es un lenguaje muy extendido

5https://riunet.upv.es/bitstream/handle/1 0251/1 2247/tesina%20Mauricio%2OAIba- Castro.Ddf?seauence=1 &isAllowed=v 13

y cada vez cobra más importancia tanto en el ámbito de Internet como en

Ia informática en general. Está desarrollado por Ia compañIa Sun

Microsystems con gran dedicaciOn y siempre enfocado a cubrir las

necesidades tecnolôgicas más punteras. (Alvarez, 2001)

El significado de Java, tal y como se le conoce en Ia actualidad, es el

lenguaje de programación y un entorno de ejecución de programas escritos

en Java. Al contrario de los compiladores tradicionales , que convierten el

codigo fuente en instrucciones a nivel de máquina, el compilador Java

traduce el cOdigo fuente Java en instrucciones que son interpretadas por

Ia máquina virtual de Java (JVM, Java Virtual Machine). A diferencia de C

y C++ en los que está inspirado. Java es un lenguaje interpretado. (Cruz

VIlchez, 2012)

(Párraga Garcia, 2003), no es sOlo un lenguaje de programaciOn, Java es

además un sistema de tiempo de ejecuciôn, un juego de herramientas de

desarrollo y una interfaz de programaciOn de aplicaciones (API). Todos

estos elementos asI como las relaciones establecidas entre ellos se

esquematizan en Ia siguiente figura. 14

Figura 1. Las interioridades de Java

Leng-je de prograrrucl6n Java /.tlerimid.de--s de Ja-.,a de Java

hernamiantas de Java Java 411Bylecode cornplado ll? APIde Sistemadetlempode Java eeon Java

Mqulna As1&jaI

Stema Operavo tints, Linux, Windowa, MacOS, OS/2... PIatern host Hardware del ordenador Sparc, PC. Power PC...

Fuente: (Parraga Garcia, 2003)

CARACTERISTICAS DE JAVA COMO LENGUAJE DE

PROGRAMACION

De acuerdo a Ia página web (JavaSun, 2014), las caracterIsticas principales

que nos ofrece Java son:

Lenguaje simple: Se lo conoce como lenguaje simple porque viene de

Ia misma estructura de C y C++; ya que C++ fue un referente para Ia 15 creaciOn de java por eso utiliza determinadas caracterIsticas de C++ y se han elimnado otras.

Orientado a objeto: Toda Ia programaciôn en java en su mayorIa está orientada a objeto, ya que at estar agrupados en estructuras en estructuras encapsuladas es más fãcil su manipulaciOn.

Distribuido: Permite abrir sockets, establecer y aceptar conexiones con los servidores o clientes remotos; facilita Ia creaciOn de aplicaciones distribuidas ya que proporciona una colección de clases para aplicaciones en red.

Robusto: Es altamente fiable en comparacion con c, se han eliminado muchas caracteristicas con Ia aritmética de punteros, proporciona numerosas comprobaciones en compilaciOn y en tiempo de ejecucion.

Seguro: La seguridad es una caracteristica muy importante en java ya que se han implementado barreras de seguridad en el lenguaje y en el sistema de ejecuciôn de tiempo real.

Indiferente a Ia arquitectura: Java es compatible con los más variados entornos de red, cualesquiera sean estos desde Windows 95, Unix aWindows Nt y Mac, para poder trabajar con diferentes sistemas operativos.

Java es muy versãtil ya que utiliza byte-codes que es un formato intermedio que sirve para transportar el cOdigo eficientemente o de diferentes plataformas (Hardware - Software). 16

Portable: Por ser indiferente a Ia arquitectura sobre Ia cual estâ

trabajando, esto hace que su portabilidad sea muy eficiente, sus

programas son iguales en cuaIquiera de las plataformas, ya que java

especifica tamaños bâsicos, esto se conoce como Ia máquina virtual

de Java.

Interpretado y compilado a Ia vez: Java puede ser corn pilado e

interpretado en tiempo real, ya que cuando se construye el côdigo

fuente este se transforma en una especie de cOdigo de mãquina.

Multihebra o Multihilos: Java tiene una facilidad de cumplir varias

funciones al mismo tiempo, gracias a su funciOn de multihilos ya que

por cada hilo que el programa tenga se ejecutaran en tiempo real

muchas funciones al mismo tiempo.

Dinárnico: El lenguaje java es muy dinámico en Ia fase de enlazado,

sus clases solamente actuaran en medida en que sean requeridas o

necesitadas con esto permitirã que los enlaces se puedan incluir

incluso desde fuentes muy variadas o desde Ia red.

CODUGO FUENTE

El codigo fuente no es otra cosa que un texto escrito, simple. Un texto similar al que usted genera cuando usa el "block de notas" de su sistema

Windows; un texto piano, es decir, sin formatos rigurosamente ceñido al vocabulario y a las reglas semánticas y de sintaxis propias del lenguaje etegido por el programador. 17

El côdigo fuente es texto simple, capaz de ser leldo por cualquier editor de

textos y lo que es más importante, comprensible por cualquier programador que conozca el "idioma" utilizado. En éI estãn escritas las instrucciones que deberâ realizar Ia computadora, segün Ia sintaxis de un lenguaje de programaciOn. (Casañas, 2014)

Conj unto de reglas y normas propios de Pa aplicacion que es utilizada para programar, pero siendo siempre entendible por un usuarlo que tenga estos conocimientos especificos. (Zamora Herrera, 2012)

Texto desarrollado en un lenguaje de programaciOn y que debe ser compilado o interpretado para poder ejecutarse en un ordenador, también

Ilamado computadora. Asimismo facilita Ia comunicaciôn entre distintos dispositivos digitales. Las letras, los nümeros, los simbolos y los acentos tienen su correspondiente nUmero ASCII, de manera que programas desarrollados por diferentes personas y equipos fabricados por una u otra compañIa pueden entender el texto de Ia misma forma. (Perez Porto &

Gardey, 2012)

Texto escrito en un lenguaje de programacion especifico y que puede ser leldo por un programador. Debe traducirse a lenguaje maquina para que pueda ser ejecutado por Ia computadora o a bytecode para que pueda ser ejecutado por un intérprete. Este proceso se denomina compilaciOn.

Acceder aI cOdigo fuente de un programa significa acceder a los algoritmos desarrollados por sus creadores. Es Ia ünica manera de modificar eficaz y eficientemente un programa. 18

Liberar un côdigo fuente significa compartir ese texto con cualquier persona

que 10 desee, esto implica que cualquiera puede analizarlo, copiarlo 0 modificarlo. Las aplicaciones que liberan sus codigos suelen ser gratuitas bajo licencia GNU. La liberaciOn de un côdigo de un programa implica ciertos riesgos en cuando a Ia seguridad del mismo, pues su funcionamiento exacto queda expuesto. El cOdigo fuente no suele liberarse para las aplicaciones comerciales y no puede obtenerse el cOdigo fuente original a través de los programas ya compilados. (Alegsa, 2010)

SONARQUBE

(Ospina Delgado, 2015), es una plataforma de côdigo abierto usada por los equipos de desarrollo para controlar Ia calidad del cOdigo. Sonar fue desarrollado con el principal objetivo de hacer accesible Ia administraciôn de Ia calidad del cOd igo con un minimo esfuerzo. Como tal, Sonar contiene en su nücleo de funcionalidades un analizador de cOdigo, una herramienta de reportes, un mOdulo que detecta defectos y una funciOn para regresar los cambios realizados en el cod igo.

(Cambell, 2016), es una plataforma de gestión de calidad de cOdigo abierto, dedicado a analizar y medir continuamente Ia calidad técnica, de Ia cartera de proyectos de método.

(Garcia, 2013), es una herramienta para gestionar Ia calidad del cOdigo, Ia herramienta controla Ia calidad en 7 ejes: 19

Figura 2. Ejes de calidad

besign E chitecture & J Commentsl I i - . -. I buplicatrons ces 12 ding ruil LUnit tests I tenticd buss plexity [-~O— 12—T I

Fuente: (Garcia, 2013)

ARQUITECTURA DE SONARQUBE

(Gigleux, 2016), indica que Ia plataforma SonarQube es de 4 componentes:

1. Una SonarQube servidor empezando 3 procesos principales:

Un servidor web para desarrolladores, administradores para

navegar instantáneas de calidad y configuraciOn de Ia instancia

SonarQube

Un servidor de busqueda basado en Elasticsearch realizar una

copia de büsquedas de Ia interfaz de usuario.

C. Un servidor Compute Engine a cargo de los informes de anátisis

de codigo de procesamiento y almacenamiento en Ia base de

datos SonarQube 20

Una SonarQube base de datos a almacenar:

La configuraciOn de Ia instancia SonarQube (seguridad, plugins

configuraciOn, etc.)

a Las instantáneas de calidad de los proyectos, vistas, etc.

Multiples SonarQube plugins instalado en el servidor, posiblemente

incluyendo el lenguaje, SCM, plugins de integración, de autenticaciOn

y de gobernabilidad.

Uno o más SonarQube Escáneres que se ejecuta en su construcciOn

Servidores I continuos de integraciOn para analizar proyectos.

Figura 3. Arquitectura de SonarQube

0 CQdeMo SQeS fJJk

QeS

-p GOMH - CAKI SScfMt

Fuente: (Gigleux, 2016) 21

INTEGRACIÔN DE SONARQUBE

(Gigleux, 2016), indica que el siguiente esquema muestra cOmo SonarQube se integra con otras herramientas de ALM y donde se utilizan los diversos componentes de SonarQube:

Los desarrolladores de cOdigo en sus entornos de desarrollo y utilizar

SonarLint para ejecutar análisis local.

Los desarrolladores empujan su côdigo en su SMC favorita: Git, SVN,

TFVC, etc.

El servidor de integraciOn continua desencadena una acumulaciOn

automática, y Ia ejecuciôn del escáner SonarQube requerido para

ejecutar el anâlisis SonarQube.

El informe de análisis se envia al servidor SonarQube para su

procesamiento.

SonarQube procesos de servidor y almacena los resultados del

informe de análisis en Ia base de datos SonarQube, y muestra los

resultados en Ia interfaz de usuario.

Los desarrolladores opinion, comentario, desafian a sus problemas

para gestionar y reducir su deuda técnica a través de Ia interfaz de

usuario SonarQube.

Los gerentes reciben informes de anâlisis.

Ops utilizan las API para automatizar los datos de configuraciOn y

extraer de SonarQube. 22

OPS La utilizaciOn JMX para monitorear SonarQube servidor.

Figura 4. IntegraciOn de SonarQube

rS00e Cogwotion Mooçcment SCM I "p b it C ft

Tm

In ecdon Co.Jrsojs

;—i Son,rQe Ser DE K*q~w OBamboo - - TI i. -.a Stek 0 Jj EdVK 1..W~ - -

Fm-;~ _----

4-,oe I.$*

SQb.

P(g,SOL

MySOL ML -

Fuente: (Gigleux, 2016)

REQUISITOS DE HARDWARE PARA SONARQUBE

El servidor SonarQube requiere at menos 2 GB de RAM para ejecutar

de manera eficiente y 1 GB de memoria RAM libre para el sistema

operativo.

La cantidad de espacio en disco que necesita dependerá de Ia

cantidad de cOdigo que analizar con SonarQube. A modo de ejemplo,

SonarQube.com Ia instancia püblica de SonarQube, tiene más de 30

millones de lineas de cOdigo bajo análisis con 4 años de historia.

SonarQube.com se está ejecutando actualmente en un m4.Iarge 23

Amazon EC2 ejemplo, utilizando alrededor de 10 Gb de espacio en

disco. Maneja mãs de 800 proyectos que tienen más o menos 3M

cuestiones abiertas. SonarQube.com se está ejecutando en

PostgreSQL 9.5 y está utilizando aproximadamente 15 GB de espacio

en el disco.

SonarQube debe estar instalado en los discos duros que tienen un

excelente rendimiento de lectura y escritura. Lo más importante, Ia

carpeta "data" alberga los indices Elasticsearch en Ia que se hará una

enorme cantidad de E I S cuando el servidor está en funcionamiento.

Gran lectura y escritura rendimiento del disco duro serân por lo tanto

tienen un gran impacto en el rendimiento general del servidor

SonarQube. (Gaudin, 2016)

MEDIDA DE LA CALIDAD DE TU CóDIGO

(Caro, 2010), estas tres variables son básicamente las siguientes:

Anàlisis de Ia calidad del codigo de las aplicaciones.

Profiling de aplicaciones para detectar cuellos de botella y problemas

de memoria (memory leaks).

EjecuciOn de pruebas de carga/estres que estudie Ia escalabilidad que

presenta Ia infraestructura tanto hardware como software.

JENKINS

Es un motor de automatizaciôn con un ecosistema plug-in sin precedentes para apoyar todas sus herramientas favoritas en sus tuberlas de suministro, 24

su objetivo es Ia integracion continua, pruebas automatizadas, o Ia entrega

continua. (Jenkins, 2014)

Es un software de integracion continua open source escrito en Java. Está

basado en el proyecto Hudson y es, dependiendo de Ia visiOn, un fork del

proyecto o simplemente un cambio de nombre.

Jenkins proporciona integraciOn continua para el desarrollo de software. Es

un sistema corriendo en un servidor que es un contenedor de serviets,

como . Soporta herramieritas de control de versiones como

CVS, Subversion, Git, Mercurial, Perforce y Clearcase y puede ejecutar proyectos basados en y , asi como scripts de shell y programas batch de Windows. (Kawaguchi Kohsuke, 2011)

Jenkins es un servidor de integraciOn continua, gratuito, open-source y actualmente uno de los mâs empleados para esta funciOn

Esta herramienta, proviene de otra similar Ilamada Hudson, ideada por

Kohsuke Kawaguchi, que trabajaba en Sun. Unos años después de que

Oracle comprara Sun, Ia comunidad de Hudson decidiO renombrar el proyecto a Jenkins, migrar el cOdigo a Github y continuar el trabajo desde ahI. No obstante, Oracle ha seguido desde entonces mantenierido y trabajando en Hudson. (Garcia Oterino, 2014) 25

2.3. DEFINICIÔN DE TERMINOS BASICOS

Considerando el (Diccionario informático, 2011), definimos los siguientes

términos.

Alfanumérico: Conjunto de letras, nUmeros y otros simbolos, como

signos de puntuaciôn o simbolos mateméticos. Hace referenda a los

caracteres del teclado y al conjunto de caracteres disponibles para las

diferentes operaciones de transferencia de datos del ordenador.

Archivo: Se suele usar como sinônimo de fichero. En el mundo de los

compresores, es frecuente hacer una diferenciaciôn, diciendo que

varios ficheros originales se comprimen y se empaquetan en un

archivo comprimido.

Binario: sistema de numeración en base 2, de modo que solo hay dos

digitos posibles: el 0 yell. Para formar nUmeros "grandes", se usan

varios digitos binarios, que representan cada una de las potencias de

2. Porejemplo, el nümero decimal 13 se representa 1101 (1x8 + 1x4

+ 0x2 + lxi).

Byte: Es Ia unidad básica de informaciOn. En Ia práctica, se puede

considerar que un byte es Ia cantidad de espacio necesaria para

almacenar una letra. Tiene mültiplos como el Kilobyte, Megabyte,

Gigabyte y Terabyte. Internamente, corresponde a 8 bits.

CD: Normalmente se refiere a Compact Disc. Otras abreviaturas

relacionadas son: CD-ROM, CD-R y CD-RW. Un Compact Disc para

ordenador seré capaz de almacenar cerca de 650 Mb de informaciOn. 26

COdigo maquina: es el lenguaje en el que el ordenador es capaz de reconocer Ordenes. Los programas que se creen en otros lenguajes deberán traducirse previamente a Codigo Máquina (compilarse) o el ordenador no podrá entenderlos.

Compilador: AplicaciOn informática que se usa para crear programas en un cierto lenguaje de programaciOn. Convierte los programas

creados en un lenguaje de programacion al lenguaje interno del ordenador (codigo máquina). En los compiladores, todo el programa original (fuente) se convierte a codigo maquina en bloque, y el programa resultante (programa ejecutable) se puede en otro ordenador usar sin necesidad de recurrir otra vez al compilador. En los intérpretes, el programa fuente se convierte a cOdigo máquina, linea por Ilnea, justo en el momento en que se pone a funcionar; no se crea ningUn ejecutable, y por eso es necesario distribuir el

programa fuente pero también el intérprete que es capaz de entenderlo.

Hardware: La parte "que se puede tocar" de un ordenador: caja (y todo su contenido), teclado, pantalla, etc.

HTML: HyperText Markup Language: el lenguaje de descripciOn de

páginas habitual en Internet.

IBM: Importante fabricante de ordenadores y de software

(International Business Machines).

Java: Lenguaje de programación orientado a objetos, basado en C++,

cada dia más extendido, especialmente a través de Internet. Pretende 27

ser un lenguaje totalmente portable entre distintos ordenadores,

gracias a que no se compila a cOdigo mäquina,sino a un lenguaje

intermedlo que luego es interpretado por Ia "mâquina virtual Java",

que si es especifica de cada plataforma. Esto le da una velocidad

ligeramente inferior a Ia de los programas realizados en otros

lenguajes compilados, como C++, a cambio de una mayor portabilidad

(aparte de las mejoras que el lenguaje en sI incorpora sobre otros

como C++).

Procesador: el "cerebro" del ordenador. Su velocidad de trabajo se

mide en Megahertzios (MHz) y su capacidad de proceso por el nUmero

de bits que es capaz de manejar a Ia vez (por ejemplo: 32 bits, o 64

bits). ff Programa: un conjunto de Ordenes para un ordenador. Cuando se

trata de un programa ya terminado que se compra, se suele hablar de

una Aplicaciôn lnformática. Los programas se deben escribir en un

cierto lenguaje de programacion. Los lenguajes de programaciôn que

se acercan más al lenguaje humano que al del ordenador reciben el

nombre de "lenguajes de alto nivel" (como Pascal); los que se acercan

más al ordenador son los de "bajo nivel" (como el ensamblador). Lo

más habitual es crear los programas en un lenguaje de alto nivel

(Ilamado "fuente") y después convertirlos al lenguaje proplo del

ordenador ("compilarlos" para obtener un "ejecutable").

Sistema operativo: Es una capa intermedia entre el ordenador y el

usuario. Se podria considerar como un programa (normalmente de 28 gran tamaño) que toma el control del ordenador y que nos proporciona las utilidades básicas. Para usos ms avanzados, necesitaremos instalar aplicaciones informáticas como bases de datos, hojas de cálculo, programas a medida, etc.

Software: La parte "que no se puede tocar" de un ordenador: los programas y los datos. 29

CAPITULO III

MARCO METODOLOGICO

3.1. METODOLOGIA DE LA INVESTIGACIÔN

3.1.1. TIPO DE INVESTIGACION

El presente estudio reüne las condiciones de tipo aplicada, segUn

Jo consultado en el libro de (Hernández Sampieri, Fernández

Collado, & Baptista Lucio, 2014), porque aplicamos el Sonarqube

4.0 en Ia optimizaciOn del côdigo Java.

3.1.2. NIVEL DE INVESTIGACIÔN

Asimismo de acuerdo a Ia naturaleza de nuestra investigaciOn,

teniendo Ia apreciación de (Hernández Sampieri, Fernández

Collado, & Baptista Lucio, 2014) es descriptivo, porque buscamos

caracteristicas del código Java en su respectiva evaluaciôn. Es

decir, pretendemos medir y/o recoger informaciôn sobre las

variables a las que se refieren.

3.1.3. METODO DE INVESTIGACION

El deductivo se utiliza en Ia revisiOn de nuestro marco teOrico y en

Ia presentaciOn del informe final.

El inductivo se utiliza cuando se procesan y se analizan los datos

obtenidos del cuestionario aplicado y en el análisis e interpretaciOn 30

de los datos. (Hernández Sampieri, Fernández Collado, & Baptista

Lucio, 2014)

3.1.4. DISENO DE INVESTIGACIóN

Se aplica el método de diseño en sucesiOn o en linea, conocido

también como método Pre Test - Post Test el cual consiste en:

MediciOn de Ia variable dependiente antes de aplicar Ia

variable independiente (Pre - Test).

AplicaciOn de Ia variable independiente.

Mediciôn de Ia variable dependiente después de aplicar Ia

variable independiente (Post- Test).

Se puede representar mediante Ia siguiente simbologla: GE, 01, X,

02.

GE: 01 -) x - 02

Dônde:

GE: La muestra (Grupo experimental)

Oi: Análisis de los resultados, antes de Ia aplicaciOn del

Sonarqube 4.0.

X: Sonarqube 4.0.

02: Análisis de los resultados, después del Sonarqube 4.0.

Al final de Ia investigaciôn se establece diferencias entre Oi y 02

para determinar si existe mejoramiento o no en los indicadores

expresados en Ia variable independiente. 31

3.2. POBLACION Y MUESTRA

3.2.1. POBLACION.

Está conformada por el equipo que elaboran proyectos de software

de Ia consultora Evens, en total son 16.

Tabla 2. PoblaciOn del equipo de software.

Descripción Cantidad

Encargado del proyecto 1

Analistas 2

Analistas en base de datos 2

Programadores 8

Practicantes 3

Total 16

3.2.2. MUESTRA

Se estima siguiendo los criterios que ofrece Ia estadIstica, teniendo

en cuenta el muestreo no probabilistico, por conveniencia. El

tamaño de Ia muestra es 16 colaboradores que deben ser

en cu e sta d o a 32

3.3. PROCESAMIENTO DE RECOLECCIÔN DE DATOS.

Encuesta.- Documento formado por un conjunto de preguntas que

están redactadas de forma coherente, a través de Ia organización y

secuencia. (Hernández Sampieri, Fernández Collado, & Baptista Lucio,

2014)

Análisis documental.- Es Ia relaciOn de documentos sea libros,

informes o paginas webs que los investigadores deben leer para realizar

su marco teOrico. (Hernández Sampieri, Fernández Collado, & Baptista

Lucio, 2014)

labIa 3. Instrumentos de recolecciOn de datos.

Técnicas, Instrumentos Agente

Para el equipo que elaboran

Encuesta Cuestionarios proyectos de software de Ia

consultora Evens.

Análisis Para el marco teOrico de nuestra Fichas textuales documental investigacion.

3.4. TRATAMIENTO DE LOS DATOS

3.4.1. PROCESAMIENTO Y PRESENTACIóN DE DATOS

IBM SPSS Statistics Base.- (IBM, 2015), software de análisis

estadistico que presenta las funciones principales necesarias para

realizar el proceso analltico de principio a fin. Es fácil de utilizar e 33

inoluye un ampilo rango de procedimientos y técnicas para ayudarle

a aumentar los ingresos, superar a Ia competencia, dirigir

investigaciones y tomar mejores decisiones.

Proporciona las herramientas básicas de análisis estadIstico para

cada paso del proceso analitico.

Una amplia gama de procedimientos estadisticos para dirigir

análisis precisos.

Técnicas incorporadas para preparar los datos para el análisis

de forma rápida y sencilla.

Funcionalidad completa de elaboraciOn de informes para Ia

creación de graficas muy eficientes.

Potentes funciones de visualizaciOn que muestran claramente

el significado de sus conclusiones.

Soporte a todos los tipos de datos, incluidos grandes

conjuntos de datos.

3.4.2. MECANISMOS PARA EL PROCESAMIENTO Y

PRESENTACIÔN DE DATOS

Los datos son presentados en tablas y figuras, interpretados

mediante el análisis estadistico descriptivo que ofrece el SPSS. 34

3.4.3. MECANISMOS PARA EL ANALISIS E INTERPRETACIÔN

DE RESULTADOS

Los datos son interpretados en:

Tablas.

Figuras elaborados en diagramas de barras y curvas de

frecuencias.

Se realiza el procesamiento y posteriormente Ia presentaciOn de los

datos recolectados, del respectivo análisis e interpretaciOn de los

resultados. 35

CAPITULO IV

RESULTADOS

4.1. INTERPRETACIÔN DE RESULTADOS PRE - TEST

Tabla 4. Pre - Test 4C6mo califica Ia funcionalidad del codigo Java?

Porcentaje Frecuencia Porcentaje acumulado

Muy malo 6 37,5 37,5

Malo 6 37,5 75,0 Válidos Regular 4 25,0 100,0

Total 16 100,0

Figura 5. Pre - Test .COmo califica Ia funcionalidad del codigo Java?

40

30

w

20

10'

0' MUY mIo M.I. ReguIr

Lectura: El 37.5% califica Ia funcionalidad del cOdigo Java como Muy malo, el

37.5% Malo y el 25% Regular. Km

Tabla 5. Pie - Test ,Cómo califica Ia confiabilidad del codigo Java?

Porcentaje Frecuencia Porcentaje acumulado

Muy malo 7 43,8 43,8 Malo 7 43,8 87,5 Válidos Regular 2 12,5 100,0 Total 16 100,0

Figura 6. Pie - Test LUrno califica Ia confiabilidad del codigo Java?

40

0I

V°C w U I- 0 a. 143.75%l 43,75% 20

10

0- Muy malo Malo Regular

Lectura: El 43.75% califica Ia confiabilidad del codigo Java como Muy malo, el

43.75% Malo y el 12.5% Regular. 37

Tabla 6. Pre - Test 6C6mo califica Ia usabilidad del cOdigo Java?

Porcentaje Frecuencla Porcentaje acumulado Muy malo 7 43,8 43,8 Malo 8 50,0 93,8 Válidos Regular 1 6,3 100,0

Total 1 161 100,0

Figura 7. Pre - Test 6C6mo califica Ia usabilidad del cOdigo Java?

50

40

a. 14375%I 20

10

Muy malo Malo Regular

Lectura: El 43.75% califica Ia usabilidad del codigo Java como Muy malo, el 50%

Malo y el 6.25% Regular. 38

labia 7. Pre - Test 4C6mo califica Ia eficiencia del codigo Java?

Porcentaje Frecuencla Porcentaje acumulado Muy malo 4 25,0 25,0

Malo 6 37,5 62,5 Válidos Regular 6 37,5 100,0 Total 161 100,0

Figura 8. Pre - Test óCOmo califica Ia eficiencia del codigo Java?

40

30

w 4.• - C U 20 CL

10'

0' I - Muy malo Malo Regular

Lectura: El 37.5% califica Ia eficiencia del codigo Java como Malo, el 37.5%

Regular y el 25% Muy malo. 39

Tabla 8. Pie - Test ,Cômo califica Ia eficacia del cOdigo Java?

Porcentaje Frecuencia Porcentaje acumulado

Muy malo 6 37.5 37.5

malo 6 37,5 75,0 Vãlidos Regular 4 25,0 100,0 Total 16 100,0

Figura 9. Pre - Test ,Cómo califica Ia eficacia del cOdigo Java?

40

30

C 20 0.

10'

0- 1 -, I - Muy malo Malo Regular

Lectura: El 37.5% califica Ia eficacia del côdigo Java como Muy malo, el 37.5%

Malo y el 25% Regular. 40

Tabla 9. Pre - Test 6C6mo califica Ia portabilidad del cOdigo Java?

Porcentaje Frecuencia Porcentaje acumulado

Muy malo 5 31,3 31,3

Malo 5 31,3 62,5 Válidos Regular 6 37,5 100,0

Total 1 16 1 100,0

Figura 10. Pre - Test ,COmo califica Ia portabilidad del cOdigo Java?

40

30

C

CL

131 ,25%I 131 ,25%I

10-

0- I I - Muy malo Malo Regular

Lectura: El 37.5% califica Ia portabilidad del côdigo Java como Regular, el

31.25% Muy malo y el 31 .25% Malo. 41

Tabla 10. Pre - Test 4 COmo califica los reportes emitidos en Ia certificaciOn de cOdigo Java?

Porcentaje Frecuencia Porcentaje acumulado

Muy malo 7 43,8 43,8

Malo 6 37,5 81,3 Vãlidos Regular 3 18,8 100,0

Total 1 161 100,0

Figura 11. Pre - Test ,COmo califica los reportes emitidos en Ia certificaciOn de codigo Java?

50-

40

* 3°

IL 143.75% I 20

10 118775%I'

0' --- Muy malo Malo Regular

Lectura: El 43.75% califica los reportes emitidos en Ia certificaciOn de cOdigo

Java como Muy malo, el 37.5% Malo y el 18.75% Regular. 42

Tabla 11. Pre - Test ,Cómo califica Ia verificaciOn en Ia certificaciOn de codigo Java?

Porcentaje Frecuencia Porcentaje acumulado

Muymalo 5 31,3 31,3

Malo 6 37,5 68,8 Válidos Regular 5 31,3 100,0

Total 1 161 100,0

Flgura 12. Pre - Test ,COmo califica Ia verificaciôn en Ia certificaciOn de cOdigo Java?

40

30

C w 2 a.o 137,5%I 131 25% 131 .25%

10

I I - Muy malo Malo Regular

Lectura: El 37.5% califica Ia verificaciôn en Ia certificaciôn de codigo Java como

Malo, el 31.25% Muy malo y el 31 .25% Regular. 43

Tabla 12. Pre - Test 4C6mo califica los procesos evaluaciOn en Ia certificaciOn de codigo

Java?

Porcentaje Frecuencia Porcentaje acumulado Muy malo 5 31,3 31,3 Malo 8 50,0 81,3 Validos Regular 3 18,8 100,0 Total 16 100,0

Flgura 13. Pre - Test ZC6mo califica los procesos evaluaciOn en Ia certificaciôn de codigo

Java?

50

40

;30

CL 20

131 ,25%I

10 118,75%I

0 - I - Muy malo malo Regular

Lectura: El 50% califica los procesos evaluaciOn en Ia certificación de cOdigo

Java como Malo, el 31 .25% Muy malo y el 18.75% Regular. 44

Tabla 13. Pie - Test ,COmo califica los recursos en Ia certificaciOn de codigo Java?

Porcentaje Frecuencia Porcentaje acumulado

Muy malo 8 50,0 50,0

Malo 4 25,0 75,0 Válidos Regular 4 25,0 100,0 Total 161 100,0

Flgura 14. Pie - Test 6C6mo califica los recursos en Ia certificación de cOdigo Java?

50

40

41

U.

CL 20

10 ''

0 I Muy malo Malo Regular

Lectura: El 50% califica los recursos en Ia certificaciOn de codigo Java como

Muy malo, el 25% Malo y el 25% Regular. 45

Tabla 14. Pre - Test ,COmo califica Ia satisfacciOn en Ia certificaciOn de codigo Java?

Porcentaje Frecuencia Porcentaje acumulado

Muy malo 4 25,0 25,0

Malo 9 56,3 81,3 Válidos Regular 3 18,8 100,0

Total 1 161 100,0

Figura 15. Pre - Test ,COmo califica Ia satisfacciôn en Ia certificaciOn de cOdigo Java?

so.

50

40 U)

C U) 30 o l56,25%

20

10 11875%1

Muy malo Malo Regular

Lectura: El 56.25% califica Ia satisfacciOn en Ia certificaciOn de cOdigo Java como Malo, el 25% Muy malo y el 18.75% Regular. 46

4.2. INTERPRETACIÔN DE RESULTADOS POST - TEST

Tabla 15. 4C6mo califica Ia funcionalidad del SonarQube 4.0 en Ia certificaciOn de cOdigo

Java?

Porcentaje Frecuencia Porcentaje acumulado Regular 6 37,5 37,5 Bueno 3 18,8 56,3 Vâlidos Muy bueno 7 43,8 100,0 Total 16 100,0

Figura 16. ,COmo califica Ia funcionalidad del SonarQube 4.0 en Ia certificaciôn de cOdigo

Java?

5o

40

30

a. 20-

10 118,75%l

Regular Bueno Muy bueno

Lectura: El 43.75% califica Ia funcionalidad del SonarQube 4.0 en Ia certificaciôn

de codigo Java como Muy bueno, el 37.5% Regular y el 18.75% Bueno. 47

Tabla 16. 4C6mo califica Ia confiabilidad del SonarQube 4.0 en Ia certificaciOn de codigo Java?

Porcentaje Frecuencia Porcentaje acumulado

Regular 3 18,8 18,8

Bueno 7 43,8 62,5 Válidos Muy bueno 6 37,5 100,0 Total 16 100,0

Figura 17. .COmo califica Ia confiabilidad del SonarQube 4.0 en Ia certificaciOn de cOdigo

Java?

50

40-

30-

CL 20-

10 118,75%I

Regular Bueno Muy bueno

Lectura: El 43.75% califica Ia confiabilidad del SonarQube 4.0 en Ia certificaciOn de cOdigo Java como Bueno, el 37.5% Muy bueno y el 18.75% Regular. 48

labia 17. ,Cómo califica Ia usabilidad del SonarQube 4.0 en Ia certificaciOn de cOdigo Java?

Porcentaje Frecuencia Porcentaje acumulado Regular 3 18,8 18,8 Bueno 4 25,0 43,8 Válidos Muy bueno 9 56,3 100,0 Total 16 100,0

Figura 18. ,COmo califica Ia usabilidad del SonarQube 4.0 en Ia certificaciOn de codigo Java?

60'

50-

40- w

4- w 30 _____ o 15625%I a.

20-

10-

Regular - Bueno Muy bueno

Lectura: El 56.25% califica Ia usabilidad del SonarQube 4.0 en Ia certificaciOn de cOdigo Java como Muy bueno, el 25% Bueno y el 18.75% Regular. 49

Tabta 18. ,COmo califica Ia eficiencia del SonarQube 4.0 en Ia certificaciOn de cOdigo Java?

Porcentaje Frecuencia Porcentaje acumulado

Regular 1 6,3 6,3

Bueno 9 56,3 62,5 Vãlidos Muy bueno 6 37,5 100,0 Total 16 100,0

Figura 19. ,COmo califica Ia eficiencia del SonarQube 4.0 en Ia certificaciOn de cOdigo Java?

60

50-

40- w

'I.., C U 30. I561 a

20-

10-

O J F Regular Bueno Muy bueno

Lectura: El 56.25% califica Ia eficiencia del SonarQube 4.0 en Ia certificaciOn de codigo Java como Bueno, el 37.5% Muy bueno y eI 6.25% Regular. 50

labia 19. ,Cómo califica Ia eficacia del SonarQube 4.0 en Ia certificaciOn de cOdigo Java?

Porcentaje Frecuencia Porcentaje acumulado

Regular 5 31,3 31,3

Bueno 7 43,8 75,0 Válidos Muy bueno 4 25,0 100,0 Total 16 100,0 _

Figura 20. LC6mo califica Ia eficacia del SonarQube 4.0 en Ia certificaciOn de cOdigo Java?

Lectura: El 43.75% califica Ia eficacia del SonarQube 4.0 en Ia certificaciOn de cOdigo Java como Bueno, el 31.25% Regular y el 25% Muy bueno. 51

Tabla 20. ,Cômo califica Ia portabilidad del SonarQube 4.0 en Ia certificaciOn de codigo Java?

Porcentaje Frecuencia Porcentaje acumulado

Regular 5 31,3 31,3 Bueno 3 18,8 50,0 Vãlidos Muy bueno 8 50,0 100,0 Total 16 100,0

Figura 21. 6 C6mo califica Ia portabilidad del SonarQube 4.0 en Ia certificaciOn de cOdigo Java?

50

40

41

CL 20

31 ,25%I

10' 118,75%I

0 — Regular Bueno Muy bueno

Lectura: El 50% califica Ia portabilidad del SonarQube 4.0 en Ia certificaciOn de

côdigo Java como Muy bueno, el 31.25% Regular y el 18.75% Bueno. 52

Tabla 21. ,COmo califica los reportes emitidos del SonarQube 4.0 en Ia certificaciOn de cOdigo

Java?

Porcentaje Frecuencia Porcentaje acumulado Regular 1 6,3 6,3 Bueno 6 37,5 43,8 Vãlidos Muy bueno 9 56,3 100,0 Total 16 100,0

Figura 22. 4C6mo califica los reportes emitidos del SonarQube 4.0 en Ia certificaciôn de cOdigo

Java?

60

50

40-

.' C 3D 156,25% IL I

20

10-

-1 0 Regu?ar Bueno Muy bueno

Lectura: El 56.25% califica los reportes emitidos del SonarQube 4.0 en Ia certificaciOn de cOdigo Java como Muy bueno, el 37.5% Bueno y el 6.25%

Regular. 53

Tabla 22. (,COmo califica Ia verificaciOn del SonarQube 4.0 en Ia certificaciôn de cOdigo Java?

Porcentaje Frecuencia Porcentaje acumulado Regular 3 18,8 18,8 Bueno 8 50,0 68,8 Válidos Muy bueno 5 31,3 100,0 Total 16 100,0

Figura 23. 4C6mo califica Ia verificación del SonarQube 4,0 en Ia certificación de cOdigo Java?

50

40

IL 20

131 25%

10 I18,75%l

0- - I - Regular Bueno Muy bueno

Lectura: El 50% califica Ia verificaciOn del SonarQube 4.0 en Ia certificaciôri de cOdigo Java como Bueno, el 31.25% Muy bueno y el 18.75% Regular. 54

Tabla 23. ,COmo califica los procesos del SonarQube 4.0 en Ia certificaciOn de codigo Java?

Porcentaje Frecuencia Porcentaje acumulado

Regular 2 12,5 12,5

Bueno 7 43,8 56,3 Välidos Muy bueno 7 43,8 100,0

Total 16 100,0

Figura 24. ,COmo califica los procesos del SonarQube 4.0 en Ia certificaciOn de codigo Java?

50

40

143,75%l I43.7% I 20

1 O

0 I Regular Bueno Muy bueno

Lectura: El 43.75% califica los procesos del SonarQube 4.0 en Ia certificaciôn de codigo Java como Bueno, el 43.75% Muy bueno y el 12.5% Regular. 55

labia 24. 4C6mo califica los recursos del SonarQube 4.0 en Ia certificacLOn de cOdigo Java?

Porcentaje Frecuencia Porcentaje acumulado

Bueno 11 68,8 68,8 Válidos Muy bueno 5 31,3 100,0 Total 16 100,0 _

Figura 25. 4C6mo califica los recursos del SonarQube 4.0 en Ia certificaciOn de codigo Java?

60

. 4O C

168 75%j 0 - IL

20

131

0• I Buena Muy bueno

Lectura: El 68.75% califica los recursos del SonarQube 4.0 en Ia certificaciOn de codigo Java como Bueno y el 31.25% Muy bueno. 56

Tabla 25. 6C6mo califica Ia satisfacciOn del SonarQube 4.0 en Ia certificaciôn de codigo Java?

Porcentaje Frecuencia Porcentaje acumulado

Regular 3 18,8 18,8

Bueno 4 25,0 43,8 Válidos Muy bueno 9 56,3 100,0

Total 16 100,0

Figura 26. ,Cômo califica Ia satisfacciOn del SonarQube 4.0 en Ia certificaciOn de cOdigo Java?

Lectura: El 56.25% califica Ia satisfacciOn del SonarQube 4.0 en Ia certificaciOn de cOdigo Java como Muy bueno, el 25% Bueno y el 18.75% Regular. 57

4.3. PRUEBA DE HIPOTESIS

4.3.1. FORMULACION DE CUADRO DE VALORES DE

IN DICADORES

La contrastaciôn de Ia hipOtesis se realiza de acuerdo al diseño de

investigaciôn, el cual es conocido también como Pre - Test y Post

- Test, que se representa mediante Ia siguiente simbologla:

GE: 01 - x - 0

Donde:

GE: (Grupo experimental).

O: Observaciôn 1, antes de Ia propuesta SonarQube 4.0.

X: SonarQube 4.0.

02: Observaciôn 2, después de Ia propuesta SonarQube 4.0.

El procedimiento consiste en determinar en primer lugar una tabla

de rango de valores, Ia cual nos permite ubicar valores cuantitativos

de los indicadores, por medio de valores cualitativos expresados en

este rango.

Posteriormente realizamos Ia comparaciOn de valores entre

indicadores de acuerdo al diseño de contrastaciOn; esta

comparaciOn nos permite finalmente aceptar o rechazar Ia hipOtesis

de acuerdo a los estándares cientificos de Ia Estadistica. Tabla 26. Para variables cualitativos:

RANGO SATISFACCION [0 - 1.5] Nada Ventajoso [1.6 - 3.2] Poco Ventajoso [3.3 - 5] Altamente Ventajoso

4.3.2. SUPUESTOS DE LA PRUEBA DE HIPÔTESIS

Los datos muéstrales seleccionamos por conveniencia, a una

muestra de 16, correspondiente al equipo de software de Ia

consultora Evens, asI mismo evaluamos los principales

indicadores relevantes para Ia prueba de hipOtesis.

La hipôtesis nula Ho es Ia negacion de Ia relaciOn existente

entre Ia variable independiente y Ia variable dependiente y Ia

hipotesis Ha es Ia afirmaciôn correspondiente.

Se utilizO el 95% del nivel de confiabilidad y 5% del nivel de

sig nificancia.

Se acepta Ia hipótesis nula Si el Valor Calculado Tc es menor

al valor en tabla Tt, caso contrario se rechaza Ia Ho y se

acepta Ia hipôtesis alterna Ha. 59

4.3.3. CALCULO DEL VALOR CRITICO Y LA FUNCIÔN

PRUEBA

Después de analizar las diferencias entre los indicadores en Pre-

test (Oi) y post-test (02), se puede concluir que para todos los

indicadores hay diferencias significativas y una mejora después de

implementar Ia Tecnologia .Net.

Tabla 27. Resumen de resultado de valores

Valor Valor No Pre untas Dif. Pre Post ,Cómo califica Ia funcionalidad del SonarQube 4.0 en Ia 01 certificaciOn de cOdigo Java? 1.8750 4.0625 2.19

,Cômo califica Ia confiabilidad del SonarQube 4.0 en Ia 02 certificaciOn de cOdigo Java? 1.6875 4.1875 2.50

,COmo califica Ia usabilidad del SonarQube 4.0 en Ia 03 certificaciôn de cOdigo Java? 1.6250 4.3750 2.75

,COmo califica Ia eficiencia del SonarQube 4.0 en Ia 04 certificaciOn de codigo Java? 2.1250 4.3125 2.19

- ,COmo califica Ia eficacia del SonarQube 4.0 en Ia 05 certificaciOn de cOdigo Java? 1.8750 3.9375 2.06

,COmo califica Ia portabilidad del SonarQube 4.0 en Ia 06 certificaciOn de cOdigo Java? 2.0625 4.1875 2.13

,COmo califica los reportes emitidos del SonarQube 4.0 en 07 Ia certificaciOn de cOdigo Java? 1.7500 4.5000 2.75

,COmo califica Ia verificaciôn del SonarQube 4.0 en Ia 08 certificación de codigo Java? 2.0000 4.1250 2.13

- ,COmo califica los procesos del SonarQube 4.0 en Ia 09 certificaciOn de cOdigo Java? 1.8750 4.3125 2.44

- COmo califica los recursos del SonarQube 4.0 en Ia 10 certificaciOn de codigo Java? 1.7500 4.3125 2.56

,COmo califica Ia satisfacciOn del SonarQube 4.0 en Ia 11 certificaciOn de cOdigo Java? 1.9375 4.3750 2.44

TOTAL 1.87 4.24 2.38

Cálculo de Ia diferencia promedio (D)

Z=IDi = 26.1250 238 11 11

Cálculo de Ia desviaciOn estándar (S)

(DiD)2 S =

/0.63 s= \J10

S = 0.25

H ipOtesis estática

Ho = Oi - 02 >0

Ha=02 -01 >0

Cálculo del valor crItico o valor en tabla de Ia "T" Student (Tt)

It (1-1) (n- i)

Tt(1 —0.05) (11-1)

Tt(0.95) (lo) = 1.8125

Tt= 1.8125 61

Regiones de aceptación y rechazo.

------.-

Cálculo del valor calculado o Función de prueba (Tc).

2.38 T- S 0.25 -Fn

Tc = 2.8466

Por lo tanto:

Como Tc = 2.5466 es mayor que Tt = 1.8125; entonces se

rechazan Ho y se acepta Ha = 02 - Oi > 0.

Finalmente se concluye que Ia hipôtesis planteada es aceptada.

En las tablas siguientes apreciamos que existe una significacion correlaciOn

entre las variables para los nivel del 1% y 5% de manera bilateral.

Realizando Ia prueba de correlaciones: Analizas - Correlaciones -

Bivariadas, se obtiene. .- U) U) — 0) U) CO '- U) N- N- U) C) 0 CO (OO) 0) N - ,- N- (0 () CO 0) — U) N- U) () N- N- co c.j U) U) v ç..J 0) , U)

U); o '-.- C) 0 0) It CO 0 to Cj — 0) (3) CC 0) N- - CO co CO CC co CO 0 00) CD 0 0) N- N- ,- C'J 0) (0 a-u 00 o—.

0) aD CD 0) 0 C) 0) N- - C) 0 N- cli C) 0) c) CO ' N- - N- U) CO (0 a- 00 0 0co

(C CO U) 0 C'.J CO 0) CO C'J U) _ CO U) - 0) 0 CC 00 (N ' ')CO CO (N 0 CO ,- ' N- 0) N- (N U) (0 a- fCN- ( -c

N- 0 (N (00 CO 0 0 CO CO — (N U) CO CO ) (0 00 0 0) CO N- 0) 1, U) 00 CC) '- M m M o0 N- co CL 0) 000-CO-00

to 0) U) N- (N (0 0 0 CO tO CC CO 0) CC (D U) N- N- 00) (N(D(O(N0 U)O0 U) (N0) 0) (NCOQ)O)(OCON- 0

U) U) — (0 0) CO (0 .- CO U) 00 CO (N 0) (N — U) 0 CO 0) (N CO 0) CO 0) .- 00 CO 0 0 U) ('4 N 0 N- U) CO

: (N 0) .- CO 0 v 0) v v CO 0 CO (0 O CO 0) 0) N- 0 V CO C)) 0 N- U) 0 0 N- U) CO 0 U) c (0 OCCO'

CO CO 04 U) 0) ,- CO CO ('4 (0 N- (N 0) 0) U) (000 CO — CO 0 CO 0 (N — ,- CO 0) (N 0 N- 0) CO ('4 CO 0 CC CC 0)

(Ne— U)0)-0)U)0) N-(N(N(00)0)COQU)— ON- U)00N-(NCO' I -

-

U): 0_ — , CO N- 0 U) 0 — U) ,- — U) 0.- N- CO 0 CO 0) CO V 0) N 0 0 (N CO 0) çr) C) N- (0 (0 0 - a- CO — O) OCU)OO'O >a)~ —CE (0_ C C C C = c c C C C C 0 0 0 0 0 0 0 0 0 0 " 0 CO CO CO CO CO CO CO (0 (0 (0 (0 G) 0) 0) a) 0) 0) a) a) a) a) 0) ( a- a- a- Q Q a- o a- a- a- Ø)C 2' CCC- EOCOO 'CO OCOOCOOCOOOOCOQCOQCOQCOQCO C0)

-- 8 - 0 05 0v)0000000c/)0v)0ci)0c,)0cO0Q0c,)Z ti) _ 03 co — (N CO U) CO N- CO 0) 0 '- 0 0 0 0 0 0 0 0 0 — .- a.. a- a- a.. a- a- a- a- a- n c aD aD m N CO 0 0 0) C) N- U) CO Cl) U) N- ,co- Q .Nq .N--C)'-0 .U)

CS) N CO N - C') <') C') - 0 — C') .- CO N- CO cl a-u 000 1- co N 0O

0) N01.- 0 COCO0 C')C')CO CO U) - C') 0 ,- - N N- to C') - 0 CO U) CO a- Q Nj

CONC')N-(D OO)U)NN-N-000 COC)(3) o ' CO N- N- N- CS) N C') N U) CO CO ,- C') N CO N- to CO a- 0N- 0 C

N CO CO 0 CO N U) 0 0 CO Ict CO 0 U) N CO 0 CO CO U) CO 0 CO C) (0 00 N .- CO N- U) — CO 0) C') CO a-NN—Q0000-

,.. CO '-0- CO 0 N U) N- CO U) 0 N- N- CO 0 0 N N 0 U) 0 CN - N- U)C)N ,- 0 N ,- N-C')O000 NO (0 OC') . C')•

U) CO C) N N- 0) N- 0) N N- CO CO N U) N CO CO N- CO N- U) 0 N-U)COCOC')0. C)NCO0N-tS)0-,-0 00 000 000C - 0.CO'

c) N- 0) C') 0) N- - C), C') N C) N U) CO 0 b C) . .. N (0 O 0) 0 N- N C) ,- C') 0 N- U) C') 0) (N C') C') C') C') (0 N CO C')N O Lr) OL?OCOU)O'

00 0)N-O)N-0 (O N-b.- N0 0 0 0,- N 0) (0 o 0 N U) C') CO ø CO a-U) 0 N

CS) CU N ,- CO N- 0) C') N N- '- N N- CO 0 (N N 0 U) (N 0 0 N U) 0 U) aD N N- ') CO N CO CO ci

q

U) ',- o N- '- CO 0) '- CO v N- N C') N - N ,- 0 ,- U) N 0 C') C) N- qr 0 U) CO aD ' CO N- N U) N (N U) a- u)0LQ OCOC' N U)0 ' >0) -- C . - C C C C C C C C C C C C o o 0 0 0 0 0 0 0 0 co0 C', (', C', C', (', (', C', (', co C', C', ca (i) Ci) ci) ci) ci) ci) ci) ci) 0) (1) ci) a- o_ a- a. a- a a a- a. a- a.. CD C ,9) 0 U) C' -u-. :_- --u-- - -

0aD0ø0(O0 U)0 aD0u)OaDQaD0 aD0 C,)0 ØZ 3 — co • '- N C) U) CO N- CO C) 0 '- - 0 0 0 0 0 0 0 0 0 '- - - a- a_ a- a- a- a- a- a- a- a- a- 64

CAPITULO V

DISCUSIÔN DE RESULTADOS

5.1. CONSTRASTACIÔN DE RESULTADOS

Sonar es una aplicaciOn que permite analizar distintos parámetros de

calidad del software en proyectos informáticos. Con un sistema flexible y

adaptable a las necesidades del proyecto, permite controlar varios aspectos

del software como Ia complejidad ciclomática, el grado de replicaciôn de

código, Ia cobertura con tests o el respeto por los coding standards.

Manteniendo estos parámetros bajo control con esta herramienta gratuita

conseguiremos un diagnostico constante del estado de salud de nuestro

codigo, Jo que permitirá añadir funcionalidades sobre el mismo de un modo

más rápido y por tanto más econômico.

Tabla 30. Arquitectura del Sonar

Concepto Definición Temas relacionados Procesos batch que analizar el codigo fuente de Analizador Ver informaciOn sobre obteniendo la imagen instantánea. Arquitectura Cliente Procesos batch ejecutados por el analizador. Ver informaciOn sobre Arquitectura Base de Comerciales: Ver informaciOn sobre datos ConfiguraciOn del Sonar instantánea Arquitectura Web Server que se utiliza para navegar por Servidor Ver informaciôn sobre instantáneas fotos y hacer Ia configuraciôn Arquitectura 65

Tabla 31. Calidad del Sonar

Concepto Definición Temas relacionados Verificar Verificar = Reglas de Codificación.

Son una buena práctica de codificaciôn. La evidencia de las reglas de codificaciOn reduce Ia calidad. Reglas de Ver Visor de resultados de las Codificacton Las reglas de codificaciôn pueden comprobar Ia pruebas unitarias calidad de los archivos, las pruebas unitarias o paquetes.

Una propiedad de un recurso. Ejemplos: nUmero de lineas de codigo, complejidad, etc.

Una métrica puede ser:

cualitat/va: da una indicación de Ia calidad del recurso (por ejemplo: densidad de las lineas duplicadas, la cobertura de la linea de pruebas Ver NavegaciOn por Metricas unitarias, etc.) las métricas

o cuantit at/va: no da una indicaciOn de Ia calidad del recurso (por ejemplo: nümero de lineas de cOdigo, complejidad, etc.)

El valor de Ia métrica para un recurso dado se denomina medida.

El valor de un indicador para un recurso dado en un momento dado.

Ejemplos: Medida 125 lineas de codigo en Ia clase MyClass

Densidad de lineas duplicadas de un 30,5% en el proyecto myProjec

Un conjunto de reglas de codificaciOn. Perfil de Calidad Cada instantánea se basa en un perfil de calidad Ver Perfil de Calidad. Unico.

Una pieza del software. Por ejemplo: proyecto, Recurso paquete, modulo, archivo, etc. Un conjunto de medidas y evidencias en un recurso determinado en un momento dado. lristantánea Una instantánea se genera para cada anãlisis Sonar. Cuando un recurso no cumple con una regla de codificaciôn, Sonar registra una evidencia en Ia instantánea. Evidencia Una evidencia se puede registrar en un archivo a en una prueba de unidad o en un paquete.

Tabla 32. Interface web del Sonar

Temas Concepto Definiclón relacionados Pagina Web que proporciona una forma de mostrar los Cuadro de datos almacenados en Ia base de datos. Ver Cuadro de mandos mandos Un panel es un conjunto de widgets.

Es un cuadro que muestra los datos en un cuadro de mandos.

Hay dos tipos de widget:

Wdget Widget Global que muestra datos de varios proyectos. Hasta el momento sOlo hay un widget global disponible: ver filtros.

Widget de Proyecto que muestra sOlo los datos de un proyecto especifico.

5.1.1. DEFINICIÔN DE METRICAS

Las metricas son el corazôn de Sonar, utilizando un sonar de

manera eficiente significa comprender perfectamente Ia definiciOn

y el algoritmo de cálculo de cada uno.

En este documento nos centraremos en las métricas para Java, en

los siguientes enlaces se presentan las métricas que utiliza Sonar

para cada uno de los lenguajes especificados:

ABAP, C, C++, Cobol, Java, Natural, PLII, PL/SQL, V66

co C U) N-Ce m U) . a) a) C0 a) I ' a) C '0 a) I E 2 0 t Ela) U) 0,C C 0 -cu -0.0 > Cco CDQ) I C,C,' C I + 8 € .2a) I o > a)0 0 W 4) o5 Cca) •g) E '0 ' i ) '0 E'0° QC 4) 8 I ,.> U) 0 0 U) M co a 2 co CD 222 8' E'0 E V U) CL .2 U) =3 0 C c U) Q) CQC Cc1'C- Ec 'o I C1 w0o '0 E C' .2' a) C C 0 •c U) 0 0 WC co 0 a)"VEC) 00 U)U) 0 • E '.c'o0° E 0>' a) 3-5 0(j '0 '0 >'a)C4CM CE,EU).c2W0U)c U)'Cco aju,>O'0 0 0. >°a) I C C Ia)V 8'2.2 a) ) '0 c 2 a) a)) N- 024)i (0 .2—a)EU)4)U)0a)a)a)Q)Q) ' C •C LU ___ ] LI_I -i z c - - - - • - 4) z z -J oE','-...... c.. .. Z II 0 L) W Z Z Z Z Z o.Q (4 > C0 C0 CCCC0000 C0 (4 0

CD U' U) - 0 U) c a)U'C a) C 2 c COU)a) 0 U) a) 0 4) E C I 0 E cu 8 E E 0

0 (4U) U) .2' W (4 0 '0 U) 4)9 4)C '0 .EC U' U)0 U) U) '0(4 0 w- 2U'0.c 0 a) •0 a)U).0 U) EU) '0 -o 3 ° E E 0 8 _J C CW i '"0 U-

co

IH IL k= I i iI EU U..° 10) O(j. °E i ' °' 0)45 0 0) -& c :2 :2 0 1 Cr 3.2 5 Ii — i o 1 o'-._ °L I 1 O - 0II — 00 00 OC 00. 00 0C I — . 0)U)v)

Q- N LU ID N. W ô N c) LU (C N. '- N Cl) LU to N. (0 C) --- (I) - N Ce) LU CD N- (0 C) ------a) V 2 a) E 'E a 2 z cc 2 cc c a > E . CV

cii ' 0 0 -( .. cC O( = 'a .Q) .Q- 0 0-G)0 E i, 0-2 OQØQ)tO - Ea)o0C 0 -- o 0 V '0L = C 0 .9 .9 U) 1) cot' 2 ç 0.. C:

Ddoo( > a) JC U .-QU) 0 wjc2 Ca) C 0) U0) E"2 d 2 a) °OC .

C.0 (T 0) U)

0 Q (n fn m IL D V . - tr- c a) 0 CL 0. U) U)> ...... 0 0 0. 0 V V . - c U) 0- 2 E V a) a) a) V . _ CU -o V 0- . V 2 - 0Gj00 qT s.-. - c-o °B 0- . II II a) Ca 0 E '- E . - • Q

u

0 0 C C U) (0

C/) 0. C CU U) V V I a C CU C,) C') 0- a) I — C (U V C .2 I 2 0 C V CL 2 CU . I €

0- 0.

- (/) (U CV< - a) V ._CV0C .2 CL - CU 0. _OCF) 0 0 < 0. 00 0 U)

(5 0 D (O o co a, • 9- 0 a, = a,a,a, (5 U) t .0 a, cu QU) 0 a, 0 .. 0. Cl 0 0 0 >

Cl) 0 0 c5a, II 0 . - U) IL 0 - U •._ U)C + o '- a,>a, I to c = 0 cI

cu 0 - 0 0 - cu :2

- u tn U) 2 2 I mCuU).0 :.-..

2 - :. 8 U) Q) a, - 4 I. cu , cr 8 Qi 0. -0 0 Cu . Cu -0 !- - U) U) Cu .0 0. a a, Cu C Cu . CU 0 a, - OCu (5(5>ol 0. • a.) cu - C C (1) c - (U 22C a, C 0 ) 0.0 (U Cu Cu a, U) a, C.') U) Cl) 111I CU Cu Cu .0 C-ICu t_ t a,Cu >>> .0 0 .0 .0 C)) Q. 0) • c 0 Cu C)) a, a E 0 -8 V0. Cu 0. 0. Cu >'- a, a, a, 2 - (l)U) .. -' Cu Cu 0. U) 0 t Cu a E Cu a, 0. o 0 0 0 (U CU CuDa,i a, a, E E E E E 0 ..0 C I - 0 0. 75 0.0 C C 0 C)) ) Cu Cu1 0 J -a) c 0) > 0 0 IL 0 Z - Z Z Z 2

Cu> Cu o 4 4 c U) U) U) U) U) Cu ()

a, a, E C) C U) a, (U C' . ) G)U).2 2 . 0 ) - 0 a) 0. 0 U) 0. 0 cn .0

i. . . . - . . .

E U) , U) Cuv: 0 Cu0CuCuCu VCuCuE Z .0 Cu.0 .0 .0 Cu ' .0 0 t a,- ww w a, a, a,

0 U) V 2 N 0 0 = 0 Co

Co 0 Co Co = >' C -.0 . - 0 C 0 OCo 0 > Co Co (00)0) - - o CV I Co 42° • 0 0 .0 I CoCo CE c -Co C (1) 0 = . a) (I) C (0 I U) CoE 0) (0 Co 4- . I .0 0 CL - 0 4- - c 0) (1) .2' (0 a) OCo 0 cu (C I > .9' V a) 0 I- 00) - 0)0) 0 0) I (1) - Co C 0 V 4- .2 , C).C'-i a)C0 t) ° : a)V 0. 5 - 8 > 0Co Nj- 0_ 0) 0)> o O (0 > a) 5) 0o 0 0 .- 0 0 0 Co - cI Co 0 1Co05 . U 0 V CC — 0 C U .2.90CoVco C - (0 E (0 (I) 0 C 2 U) Q) -0 .9'- a) C 0 CCOU) 0 U) (]) -0 c 2 8 . a V.c09_ (I) .2 .2 5) C V2CoEI EEiU)oaQ C 0 0 0 NU)IW 0) II) 0 (0C Ofloo 0 0 a) a) In EI+ )0 0 cul CC . C - C C In SI - o. U)0 II 0 0 Co00 ' all a 0 C Co C U) 0. .2Co cli 0)F 5 0 6 E -.ja) U) -0 C -0 2 U)VCIQ 020) 11) 0) 0) 0 (0 WCoCoOLJ CC0) U)(00)C a) C 0) 0 o 22 Co0)00 C V .2 C V E OCol (0Co- E.5 0 WILL 0 U) 0 . .2 U) C 2 2 U) 22 -6 Co V 0 Co C Co : 5' 0 0 0)V0C Co C -5 0) Co V t .0o(0+ >>t C .2 a OVOIF- 0)0)9 0 — C 0 0 — C Q 0 C Q)i, (1) 0) -0 co (1) 0 0) Q) 0 0) = - -8 — O V 0 V V In 2 U)U)U) .2 Co 0-:2 Co a) - Co Co Co Co CO 0 -U)ti-(0 I-r-Q)CD CO € 3 E CCoa)a)1 CCC U) U) U)Co U) Co E.Co3 Co Co 2 CoN2 (0 0 0) 22_i -C.a) C V I . 0) EC0,.0 C CI 15 E E E CE C CD a) Co 0 0 I— U Q I Q) .() Q) - .0) t -a) co 9 _JV_l(c..,- ...c).c).-J ...... 9z :9 z : z 2CoZ :9

0 0 0 0 0 0 0 0 C C C C C C C

C C In 2 0)1 0)0 0 a) a) > > — 0 I 0) 0- ; >0 O > 0 VI 2 C 0 1 0 01 0)0-° . 0 CO > 0) 0)CV a) o-a >. U) > C > CCC 2 0 U) C -a 0 : 0 C = c CC 1 - 8 (I) 0 0) C 0) 0) C 0 C C C C

U) Co (DO U) u > (0t 0) CoO a) >0) U) 0 C tC 0)6.°2tCo C C OQ)>U)U)O0Co3CoU) 2 Co0)Co-5t>Co .Co C0Vt t Co v)CWtCtC 0) 0 0) t E 0) Co (0 .0 .CO0 O.000CC 0 0 CoO (I) .00 (0 0) (5) CO (00 .0 0VV6 0 0 0C J o ( Z Z -J a, U) U) a, U) U) cl -o a, a, - 0 0 C> U) U) - Cu Cu

U) - 0 a. Cu V V a, - o2Ea, - .- CC C -a Cu Cu Cu Cu C -o a- C -o 0a,0 a, - E Cu :-a > Z9ZoZ'3Z N E E - cl) N-. -= -= - C Cu zzw 0 0 0 0 0 0 0 0 = C C C C C C C Cu > 0 4.. Cu - Cu U) a, I-) a) -a .9 U) 0) w a, I C U) U) a,> cn C 0 (0 a, E a, '0 a,U) - U) a, .rn 0 0 0 0 a, V C) .2 .9 -Cu a, C- -0 S_I Q) o a () Cu Cu a.

W> co- '-a)a) 0(a(D a a)E (OCcu 'ii; DQ) ' 0(a> U)C ii; C E (/)Q (0 (a_ a) . a) D) Q OC.2 V1 a) co C U)Q a):, W0 0 0 V '02 > t, a(aa. 70(a a.(a U)' o a3 a) (I) U)C '0 0 oE E' 09 0.20 0 w 2 00 a.0C a) a) 5 C'J o'a5.3 ' U) E a) 02 '0 (a •. X C U) Co(3a) — 'o :2 ..--..----.-- -- ECU) U) 0 000 I E' o> C Co a) V 0) E : 0 a)U)a)t( C '0 0 (a < a. C-E .o 0 C - a) °' t) .2 .Eco-.2c. 0. ci) E, a-0a). U) C e(a 'CC'13 Hffi 0 -0 CU E 0Qa) VW C U) 0 V I 0 >U) .0 E.— — o 9W 0 E0cc QEC -0 CU Ca.U) E •- .2 o a. CO a) Ca)_(a22'.U) V CQ (0— C_ >'a), E CE. QC — 0 a.a).2CCQC U) > a) O 0 CC 0 Qa)a) 0 (a 0 C(a (a a) .0 (1) - E o • (1) U) (a a) ) _Ca)cZ&)D9Ez ('J W CWEU)a)U) E2a.E CVE C' a. C(aOa) a) a)a)Cl CE U)0l

0 00— . • = CC , (a

I ,< ci) U) -cc C U) a) 2 ci, I 0) - - E' I 0 W 0) C C a) . U)VC0 'a) Q, 0) X (a : 0 (a Ca 2 o E a. 0 0

U)

U)o -; ,, 0 (Oca•0 cc '0oo 0 U) a)U) a)--0U) '00 -o a) o (a -C :2 U) Cc,)fi Oa)W(a 0 0)0 ~CV E 'CU) a. C o E z 0 Q.

z.a) ow> .2w° cu° > 0 i + ow V ca LC) a) - V 0

U)U) I w . E C/) 0 Cu - . a) -co 0 - . o .Q - - . V'.91 IV_ ) - o D Cu > E + 2 r o . - °- ° E 0 0 0 — Cu 0 0) V 0 V E V

CL flb : - U)C • 0 Cu 0 Cu 0 " - w Cu C/) Q) .cu - 0 E E cu a) V 2 V U) .2 — 8 .~ — ~ - .2 ow I2 2 -Cl) U) CT - ._ . 0) •.~ V a)0 (1) V E - - - - - E (Cl 2 2 ' ' . E - — a) Q) Q a) CL E E E E E W - CCla) - - 0 - 0 0 > (n Q ...... Z Z 0 Z 0

U) U) U) U) U)

= 0 C

>< .? Cl) V X CL I a) V >< E 0 x E 0 a) 0 X E CI a .2 8 o E °I u E w 0 0 9 0 =1 0 0i 0 U) U) 0 Cu C 9-

.9 -8 w.2 V 00. Zn V w 2Cu 22w

= 0 = cx C E Cl) °-E V 2 V :2 -0 -0 0 CO E 0 V (02 0 (Cl (Cl cu 2O:a) 0C c1)a U)C928 0-

o 0 o 0 0 - co a) V 0 Co - Co - (OV) U) Co cu Co °

0 (0(l) U) )( 0 0) a) < U) O E - cr cu .2 5 . .0 x )< w U) CL V .

< °' -5 Q )( > > X ) CL (OX C, V c O o 2 g - V (0) (l) C a)> o V- C >Oo (0 0 -oU) 0 ) U)U) .9.2 CE.2 Va) .2 000 U) 9> >

a) x CL o :Lh> > 0 *0 x - a) a)V•->(0 ''- 0) co m °'E 0) .9 . 0 Q 2222i0 O 0 0 a)00)CO(oV W(O EEEOE.E 6 E2 - ZZZ.C2ZQ(/)c2. Q> ( U,

>Ca

U) (I) Cl) Cl) (0 0

U) U) .2 C g U) U).2 5 .9 0) C ( 0 >2— 05 I > Ca) .9 m 0' 0 •9 >< >< a) .2 > :, C

.9 a) (0 U) V a) . :2 C > - 0) CO0) °' °' a) V0 > :2 >C - _C Ewa) > OJ. 02U) . V Z>(O )< .2 UJ >< a) Z > o Q0 z 76

5.1.3. ANALISIS DE CODIGO FUENTE

Cuando Ia instalaciOn se haya completado, Sonar está listo para

ejecutar el a'nálisis de sus proyectos.

OBJETO DE ANALISIS

Sonar tiene Ia capacidad para realizar análisis en más de 18

lenguajes. El resultado de este análisis va a ser principalmente las

medidas de las métricas y las evidencias de las reglas de

codificaciôn. Sin embargo, lo que se analizó por Sonar variará

dependiendo del lenguaje analizado:

En todos los lenguajes, Sonar realiza un análisis estãtico de

codigo fuente (archivos java, programas Cobol, etc.)

Sonar puede realizar el análisis estático de cOdigo compilado en

ciertos lenguajes (archivos class a jars en Java, dli en C#, etc.)

Sonar puede realizar un análisis dinámico de côdigo en algunos

lenguajes (ejecución de pruebas unitarias en Java, C#, etc.)

ANALISIS DE EJECUCIÔN

En primer lugar, se debe instalar el lenguaje del proyecto a analizar

ya sea por descarga directa a por el centro de actualización.

Para iniciar el análisis con Sonar, están disponibles los siguientes

clientes:

Sonar Runner (cliente recomendado) 77

. Sonar Ant Task

. Maven

MotoresdeCl

Desde Sonar 3.3, es posible analizar un proyecto de varios

módulos con diferentes tenguajes. Para las versiones anteriores a

Ia 3.3, cada uno de los mOdulos tiene que ser analizado por

separado mediante Ia ejecucion de un análisis especifico. A

continuaciôn, los resultados pueden ser agregados a nivel de

proyecto, con el plugins de visualizaciOn.

ANALISIS CON SONAR RUNER

El Sonar Runner se recomienda como cliente por defecto para

analizar un proyecto con Sonar.

Requisitos

Es necesario tener instalado el Sonar Runner y haber leido el

apartado análisis de codigo Fuente.

Sonar Runner 2.0+

En este apartado se describe como utilizer el cliente Sonar Runner 2.0+. rL]

UtilizaciOn

Proyecto Simple

Crear un archivo de configuracion en el directorio raiz del

proyecto: sonar-project.properties

# metadatos necesarios

-sonar.projectKey=my: project sonar.projectName=My project sonar.projectVersion=1 .0

~ ruta a los directorios de origen (requerido) sonarsources=srcDirl srcDir2

W ruta a los directorios de origen de las pruebas (opcional)

:sonar.tests=testDirl testDir2

t ruta a los binarios del proyecto (opcional), por ejemplo el directorio del codigo java

:sonar.binaries=binDir.

opcional, lista separada por comas de las rutas de acceso a las bibliotecas. Solo se permite Ia ruta al archive JAR y las rutas a las clases. sonar.libraries=path/to/library.jar,path/to/classes/dir

* Su valor determina el lenguaje utilizado.

.sonar.language=cobol

* Parámetros adicionales

:sonar. my. property=value

Ejecute el siguiente comando desde el directorio raIz del

proyecto para iniciar el anälisis Sonar:

sonar-runner 79

Para cada lenguaje, existe un ejemplo de un proyecto simple

disponible en github que puede ser consultado o descargado:

p rojects/la ng u ages

Proyectos Multi Módulos

Hay dos maneras de deuinir una estructura de mUltiples môdulos

en Sonar:

Usando Ia estructura de archivos dado ... con los archivos properties' dados Contenido del archivo MyProject/sonar- [project. properties' 1 :# Informaciôn de la raiz del proyecto 2

:sonar . proj ectKey=org .mycompany . rn 3 4 :sonar.projectName=My Project 5 •sonar.projectVersion=1 .0- 'SNAPSHOT

Caso#1 7 L~.MyProject :# Algunas de las propiedades que: Establecer moduIe1 8 serán heredados por los mOdulos toda Ia Vf,src conflguraciOn 0ja :Sonar.sources=src AY,moduIe? en el archivo 1 de propiedades son::ropee. 11 :t Lista de los identificadores de Ia carpeta :de mádulo raiz 12 sonar .modules=modulel, module2 13 14: :# Propiedades, que pueden ser

15 anuladas por cada rnódulo - :ejemplo el prefijo con el ID de mádulo

nodulel . sonar. proj ectName=Module :i odule2 .sonar. proj ectName=Module

:2 * ME

Contenido del archivo "MyProject/sonar- project.properties" 1 :# Inforrnación de la ralz del proyecto 2 :sonar .projectKey=org.mycompany.rn 3 -yproject: 4 :sonar ..rojectName=My Project

5 :sonar.Proiectversionl.0- NA P S HOT 6. 7: :# Algunas de las propiedades que 8 serári heredados por los módulos I C—_MyProject Caso #2 i Vmodue1 9 'sonar.sources=src ] tr 10: Ajuste la I J J HeIIo.J4va configuracion I I J sonar-project.propertles e2,modu :# Llsta de los identificadores de los rc mLItipIes de módulo J Hetlo.Java archivos de DF sonar-projectpropertie sonar. .rnodules=modulel,module2 propiedades sonar- pJectpropees Contenido del archivo "MyProject/modulel/ sonar-project.properties" i-# Redefinir las propiedades 2•# No es necesario definir la :propiedad 3: :sonar.projectName=Module 1 ------Contenido del archivo "MyProject/module2/ sonar-project.------properties" 1# Redefinir las propiedades

2-S No es necesario definir la :pr opi eda d 3 :sonar.projectName=Module 2

Cabe destacar:

Las propiedades se heredan de padres a hijos

Esto puede ser evitado:

Mediante el prefijo del identificador del modulo (Caso #1) 81

Definiéndolos en el archive 'sonar-project. properties' ubicado

en el mOdulo (Caso #2)

El directorio del modulo base se puede especificar para

casos especial

Por defecto, el directorio del mOdulo base se especifica desde el identificador de mOdulo (como en los ejemplos anteriores). Pero puede modificarse usando Ia variable

'sonar.projectBaseDir'.

Por ejemplo, aqul hay dos casos de uso y Ia forma de

redefinir el directorio de los môdulos base:

La carpeta de un mOdulo contiene espacios en blanco o caracteres especiales:

iodulel .sonarprojectBaseDir=My Module One

El môdulo no está situado directamente en Ia carpeta principal, sino en una estructura de directorio más profundo:

modulel .sonar.projectBaseDir=modules/modt

nodule2.sonar.projectBaseDir=modules/mod2 ------

Un proyecto que define los mOdulos (o el môdulo que define sub-môdulos) no se puede definir en una carpeta de código fuente para ser analizados por Sonar. 82

Para cada tipo de estructura, existe un ejemplo disponible en

github que puede ser consultado o descargado.

Proyectos Multi-MOduIo y Multilenguaje

Desde Sonar 4.0, es posible ejecutar un análisis en un proyecto

multi-mOdulo cuyos môdulos contiene el codigo fuente de varios

leng uajes.

Además de Ia configuración multi-môdulo, es obligatorio

estableces Ia propiedad lenguaje para cada módulo:

module.sonarianguage

1:------ modulel.sonar.language=java

2. module2.sonar.Ianguage=javascript

3: ------

Se puede consultadar o descargar mâs informaciôn en github.

Uso avanzado

Si el archive sonar-project.properties no puede ser creado en el

directorio raiz del proyecto, existen otras alternativas:

Las propiedades se pueden especificar directamente a través

de Ia linea de comandos:

------sonar-runner -Dsonar.projectKey=myproject -Dsonar.sources=srcl ------

La variable 'project.settings' puede ser utilizadas para

especificar Ia ruta de acceso al archive de configuracion del 53

proyecto (esta opciOn es incompatible con Ia variable

'project home')

sonar-runner -Dproject.settings=../myproject.properties ------

El directorio de trabajo de Sonar se puede establecer mediante

Ia variable 'sonar.working.directory' (por defecto es '.sonar').

La carpeta raiz del proyecto de análisis se pueden establecer a

través de Ia variable 'project.home'. Esta carpeta debe contener

un archivo sonar-project.properties si las variables obligatorias

(como 'sonar.projectKey') no se especifican en Ia lInea de

comandos.

Otros parametros de anâlisis se pueden definir en el archivo de

configuracion del proyecto a través de parámetros de Imnea de

comandos.

Solución de problemas

aparece el error java.Iang.OutOfMemoryError es necesarlo establecer Ia variable de entorno SONAR_RUNNER_OPTS como se especifica: export SONAR_RUNNER_OPTS="-Xmx5l 2m -XX:MaxPermSizel 28m' ------

En entornos Windows evitar las comiflas dobles, ya que se enterpreta errOneamente, convirtiendo los dos parámetros en uno solo:

------64

Migrando de Sonar Runner 1.x a Sonar Runner 2.0

Cambie las siguientes variables en el archivo de sonar- project. properties:

sources => sonar.sources

tests => sonar.tests

binaries => sonar.binaries

libraries => sonar.libraries

Configura explicitamente Ia variable sonar.sourceEncoding en el archivo de sonar project.properties.

ANALISIS CON MAVEN

Este cliente está recomendado para realizar el análisis de proyectos de Java Maven.

Req u is itos

Es necesario tener instalado y configurado el Sonar Maven y haber leido el apartado anãlisis de cOdigo Fuente.

Analizando un proyecto Maven

El análisis de un proyecto Maven consiste en ejecutar el cliente de

Maven en el directorio donde se encuentra el archivo pom.xml.

Forma recomendada

------ynvn c'ean install DskipTests=true: nvn sonar:sonar 85

skipTests=true permite no ejecutar las pruebas unitarias en dos

ocasiones: durante Ia instalación y Ia inclusion del objeto en Sonar.

Tambien se puede desactivar Ia ejecuciOn de las pruebas integradas.

Revisar Ia documentaciOn del Maven.

tUsando Eclipse

AsegUrese de que no está utilizando el plugin de Maven embebido en el eclipse. Utilice Ia Ultima versiOn del plugin de Maven para eclipse y desmarque Ia opciOn "resolver Ios artefactos del espacio de trabajo" en Ia ventana de lanzamiento del proyecto Maven. Echa un vistazo a el primer comentario de esta entrada:

httrx//jira.codehaus.org/browse/SONAR-929

0pciones avanzadas

Tenga en cuenta que las opciones avanzadas (por ejemplo, "- projects" y "—resume-from") no son compatibles con Sonar y no debe ser utilizado.

Pasos alternativos

Cuando no es posible utilizar Ia configuracion anterior, las pruebas

unitarias se ejecutaran dos veces. No utilice el parámetro

DskipTests=true ya que no se ejecutaran las pruebas.

------nvn clean install sonar:sonar -Dmaven.test.failure.ignore=true: ------

Si Ia variable Dmaven.test.failure.ignore=true asegura que aunque

fallen las pruebas unitarias, el anãlisis del Sonar se realizar.

ConfiguraciOn del análisis con Sonar

Un ejemplo de archivo pom.xml está disponible aqui.

Parámetros de análisis adicionales estãn listados en Ia pâgina de

anâlisis de parámetros. Véase también algunos ejemplos completos

Cómo determinar Ia versiOn del Plugin de Maven

Es recomendable bloquear Ia version del plugin de Maven.

Solamente existen dos versiones del plugin de Sonar Maven, uno

para Maven 2 y otro para Maven 3. La versiOn depende de Ia

version del Maven que se utilice en el proyecto.

Proyectos Analizados con Maven 2 solamente

Agregue el cOdigo siguiente al archivo pom.xml:

. org.codehaus.mojo sonar-maven-plugin 1 .0

ALa version 1.0-beta-1 no está soportada.

Proyectos analizados con Maven 3 solamente.

org.codehaus.mojo sonar-maven-plugin 2.0 87

Proyectos analizados con Maven 2 Y Maven 3

org.codehaus.mojo sonar-maven-plugin ${sonarVersion}cz/version>

maven-2 ${basedir} 1 .0 maven-3 ${basedir} 2.0 Analizando un proyecto Multi Módulo y Multi Lenguaje

Desde Sonar 3.3, es posible ejecutar un análisis en un proyecto

rnulti-mOdulo cuyos rnOdulos contiene el cOdigo fuente de varios

idiomas.

Fara ello, solo tiene que añadir Ia variable "sonar language" al

porn de cada rnódulo.

Se puede consultar o descargar más inforrnaciOn en github.

ANALISIS CON SONAR ANT TASK

En este apartado se explica como integrar Sonar en el Apache Ant.

Requisitos

Es necesario tener instalado y configurado el Sonar Ant Task y haber

leldo el apartado análisis de codigo Fuente

&Sonar Ant Task 2.0+ En este apartado se describe como usar el Sonar Ant Task 2.0

UtilizaciOn

Proyecto simple

Definir un nuevo objeto Sonar Ant en su script de creación:

build.xml

------

Definición de las variables de proyecto de Sonar -->

:

:

:

/. Se puede modificar 51 es necesario

:

Se puede consultar o descargar más informaciôn en github.

Proyectos Multi-Módulo y Multi-Languaje

Desde Sonar 3.3, es posible ejecutar un análisis en un proyecto

multi-môdulo cuyos módulos contiene el codigo fuente de varios

leng uajes.

Además de Ia configuraciOn multi-môdulo, es obligatorio estableces

Ia propiedad lenguaje para cada môdulo: 91

moduie.sonar.language

1------::

2

3:.. ------

Se puede consultar o descargar mãs informaciOn en github.

Uso avanzado

Se pueden definir parámetros adicionales para en anáiisis en el

archivo buiid.xmi o mediante linea de comandos.

Ejecutar pruebas y obtener Ia cobertura de cOdigo con Jacoco

Ant Task

Se puede consuitar o descargar más informaciôn en github.

Proyecto Sim pie: projects/code-coverage/ut/ant/ut-ant-jacoco-

ru nlests

Proyectos Multi mod uios: projects/code-coverage/ut/ant/ut-ant-

jacoco-moduies-runTests

Limitaciones conocidas

Las fuentes principales y las fuentes de prueba no se pueden

mezciar en el mismo directorio.

Migración de Sonar Ant Task I .x a Sonar Ant Task 2.0

El Sonar Ant Task 2.0 puede ejecutar el anãiisis con los archivos de configuracion diseñados para Sonar Ant Task 1 .X. 92

Este modo de compatibilidad se activa autornáticamente. Pero es

recomendable migrar al nuevo formato, ya que el modo de

corn patibilidad se dará de baja en las prôximas versiones.

INTEGRACIÔN CONTINUA

Se recomienda realizar el anãlisis de proyectos sobre un proyecto estable para obtener Io mejor de Ia plataforma de Sonar. Servidores de integraciôn continua son las herramientas perfectas para ello.

Hudson / Jenkins

lnstalar y configurar el plugin de Sonar para Hudson / Jenkins.

Atlassian Bamboo

Instalar el plugin de Sonar para Bamboo, de Marvelution.

Apache Continuum 1.2

La dificultad de Continuum es ser capaz de sincronizar Ia

instalaciôn con el objeto de sonar porque es necesario que un

comando de instalaciôn es ejecutado antes de que el sonar

comience a ejecutarse (Ver Anãlisis de cod igo fuente para más

informaciOn).

Desde Continuum no se proporciona el mecanismo para

desencadenar Ia acumulaciôn de ejecuciones, para ello hay dos

opciones: o Ia ejecucion de comandos de instalaciOn

periódicamente (por ejemplo cada hora), o Ianzar un comando

completo, como: invn clean install sonar:sonar -Dmaven.test.failure.ignore=true ------en este caso, las pruebas unitarias se van a ejecutar dos veces: una durante Ia instalaciôn y otra vez con el sonar.

En caso de que decida ejecutar comandos de instalaciOn de forma

regular, aqui está Ia configuracion que puede hacer para el sonar:

Crea una variable de configuraciôn con el objeto:

sonar:sonar Para proyectos multi mOdulos, asegurar que Ia opcion —no

recursivo no estâ establecida en los argumentos de Ia definiciôn del

build.

Una vez creado, ejecute Ia compilaciOn en el directorio raiz del

proyecto que quiere analizar con Sonar.

En el caso de proyectos multi mOdulos, asegurarse de revisar

todos los módulos del proyecto, cargue el root recursivamente

cuando se cree un proyecto con el asistente Continuum Maven

2.

CruiseControl

En el CruiseControl, utilice el signo I para separar Ia instalaciOn y Ia

ejecucion del Sonar en dos procesos diferentes.

El comando de lanzamiento querarla de Ia siguiente forma:

------dean install -Dtest=false -DfaillfNoTests=false I sonar:sonar -Psonar_proflle 94

Jetbrains Team City

Estos son los pasos de configuracion que se tiene que hacer para

Ia creaciOn:

En Ia configuracion general, asegurarse de que al menos una

pruebas está marcada antes de Ia ejecuciOn.

En Ia configuraciOn del ejecutor, seleccione el objeto Maven 2

clean install sonar:sonar

Parâmetros Maven adicionales por Ilnea de comandos:

Dmaven.test.failure. ignore=true

En Ia configuraciOn de Ia activaciOn seleccione un programa

diario (o el necesitado)

En las propiedades y variables de entorno, añadir una variable

de entorno liamada MAVEN_OPTS, y establecer el valor a

Xmx5l2m'

PARAMETROS DE ANALISIS

Los parámetros de configuracion del análisis de un proyecto se pueden especificar en varios archivos. Esta es Ia jerarquIa de parámetros:

Parámetros de anãlisis globales, definidos en Ia interfaz de usuario,

se aplicará a todos los proyectos.

Parámetros de análisis de proyectos, definidos en Ia interfaz de

usuario, anularä los parámetros globales. 95

Parámetros de análisis del proyecto, definidos en el archivo de

configuraciOn del proyecto de análisis o en el archivo de

configuracion del analizador, se sobreescriben loss definidos en Ia

interfaz de usuario.

Parámetros de linea de comandos, que se definen en el

lanzamiento de un análisis, se anulará cualquier parámetro.

Parámetros obligatorios

labia 40. Servidor Sonar

Clave Descripción Valor por defecto sonar.host.urj URL del Servidor Sonar http://localhost:9000

labia 41. Base de datos

Clave Descripción Valor por defecto org.h2.Driver Controlad or JDBC sonar.jdbc.driverClassName Antes de Sonar 3.2: utilizado por Sonar org.apache.derby.jdbc.ClientDriver jdbc:h2:tcp://localhost:9092/sonar URL del sonar.jdbc.url Antes de Sonar 3.2: controlad or JDBC jdbc:derby://localhost: 1527/sonar Usuario del sonar.jdbc.username sonar controlador JDBC Contrasena del sonar.jdbc.password sonar controlador JDBC

Tabia 42. Configuracion del proyecto

Clave DescripciOn Valor por defecto Version Clave del proyecto, es Inica para cada proyecto. sonar. projectKey Establecer mediante : al utilizer Maven. Nombre del proyecto que se mostrará en el interfaz web. sonar. projectName Establecer mediante al utilizer_Maven. VersiOn del proyecto. sonar.projectVersion Establecer mediante al utilizer Maven. Establece el lenguaje del codigo Fuente. Si mediante un plugin de Sonar se permite analizar otro lenguaje, el analizador de código fuente tiene que ser activado desde sonar.language mediante esta variable. java 2.0 El lenguaje predeterminado se puede configurar a nivel de isntancia desde: Cofiguracion> Configuracion General > General y modificar Ia variable sonar.language Separados por comas, rutas de acceso a los directorios que contienen los Fuentes. sonar.sources No es compatible con Maven, los fuentes se recuperan del directorio predeterminado para los proyectos Maven Java.

Parámetros opcionales

Tabla 43. ConfiguraciOn de proyecto

Clave DescripciOn Valor por defecto Version

DescripciOn del proyecto. sonar.projectDescrtpti Establecer mediante on at usar Maven. Separados por comas, rutas de acceso a los directorios que contienen los archivos binarios (en el caso de java, los directorios donde se encuentran los archivos sonar.binaries class) No es compatible con Maven, los binarios se recuperan del directorio por defecto establecido para los proyectos Maven Java. Separados por comas, ruta a los directorios que contienen las pruebas. sonar.tests No es compatible con Maven, las pruebas se recuperan del directorio predeternimado en los proyectos Java Maven. Separados por comas, ruta a los sonar.libraries archivos con librerias externas (en el caso de Java, los archivos JAR) Codificación de los archivos de sistema de sonar.sourceEncoding origen. Por ejemplo: UTF-8, MacRoman, Shift_JIS. Esta codificación variable puede ser reemplazada 97

pro Ia variable project. build. sourceEncoding en proyectos Maven. La lista de las codifdificaciones disponibles depende de la JVM. Ver http://docs.oracle.com/iavase/1.5. 0/docs/guide/intl/encoding.doc.htm 1. A veces, por razones de seguridad u otras, fuentes del proyecto no sonar.importSources true desde 1.5 deben ser almacenados y mostrados.

Si es necesarlo introducir datos histbricos y destacar algunos eventos, esto es posible mediante sonar.projectDate Ia etiqueta de version y Ia opciOn Fecha actual desde 1.5 sonar.projectDate. El formato es yyyy-MM-dd, por ejemplo 2010-1 2- 25.

Excluir archivos de análisis. Esta propiedad se suele fijar en la configuraciOn de página del proyecto. Es una lista separada por comas de los patrones de sonar.exclusions exclusiOn. Las rutas se definen en desde 1.8 el directorlo base de origen. Ejemplo:. Corn / mycompany / * java, ** / * Durnmy.java. La docurnentaciOn completa de Ia interfaz web Sonar: ir a miproyecto> Exclusiones. Algunos mOdulos del proyecto no deben ser analizados y consolidados con las rnedidas globales del proyecto, por ejemplo, sonar.skippedModules las muestras de pruebas de desde 1.5 integraciOn o el cOdigo generado. El formato es una lista separada por comas de los mOdulos: moduleltoexclude, module2toexctude. Lista separada por comas de los módulos para el análisis, todos los sonar.includedModule demãs módulos son desde 2.2 S automOticamente ignorados. Tenga cuidado: Ia raiz del proyecto se debe agregar a Ia lista. Administrar rarnas SMC. Dos desde sonar.branch ramas de un rnismo proyecto se consideran como diferentes 1.10 proyectos en Sonar. A través de Ia interfaz web de Sonar, se puede definir los pertiles de calidad que se desee y se Perfil sonar.profile puede asociar un perfil de calidad predeterminado del desde 1.6 a un determinado proyecto. lenguaje en También puede hacer esta cuestiOn asociaciOn mediante Ia variable "sonar.profile".

Desactivar 01 análisis de bytecode de Java. Desde Sonar 2,0, el cOdigo de binario de Java Os analizada por Sonar con el fin de oxtraer las dependencias entre los sonar.skipDesign paquetes y archivos. Esas false desde 2.0 dependencias se utilizan por ejemplo para mostrar el DSM (dependencia del sistema Matriz). Este análisis de bytecode se puede desactivar.

Run maven phase or goal prior to analysis. When Sonar needs a phase or maven goal to be executed prior sonar.phase to analysis, this desde parameter can be used. For 1.10 example sonar.phaserqenerate sources. This property is used only for Maven analysis.

VersiOn del cOdigo fuente de Java. Esta propiodad no se utiliza por el 1.4, 1.5, 1.6 desde sonar.java.sourco nUcleo Sonar pero puede ser 2.10. 1.7desde desde2.6 utilizado por el plugin Sonar Java 2.12 como el plugin PMD.

VersiOn del Objeto del cOdigo Java. Esta propiedad no se utiliza por el sonar.Java.target nUcleo Sonar pero puede ser 1.4, 1.5 desde 2.10 desde 2.6 utilizado por el plugin Sonar como el plugin de Java Clover.

sonar.findbugs.exclud Permite utilizar FindBugs, excluye desde osFilters los filtros. 2.10

Tabla 44. Unit And Integration Tests

Valor por Clave DescripciOn Version defecto I El análisis dinámico de las pruebas I sonar.dynamicAnalysis unitarias. Por defecto, las pruobas unitarias se ejecutan pero silo desea, true desde 1.7 puede optar por hacer sOlo análisis 99

estático o volver a utilizar los informes existentes que han sido previamente generadas. Los valores posibles son verdaderas, falsas, reuseReports. La ruta absoluta 0 relativa del sonar.surefire.reportsPath directorio de informes. Sool se utiliza si es sonar.dynamicAnalysis desde 11 reuseReports. La ruta absoluta o relativa del archivo desde sonar.jacoco.reportPath de informe jacoco. SOlo se utiliza Si es sonar.dynamicAnalysis reuseReports. 2.12 La ruta absoluta o relativa del archivo sonar.cobertura.reportpat de informe Cobertura xml. SOlo se sin desde h utiliza si es sonar.dynamicAnalysis ce 1.7 reuseReports. La ruta absoluta o relativa del archivo sonar.clover.reportpath de informe xml. SOlo se utiliza si es desde 1.7 sonar.dynamicAnalysis La ruta absoluta o relativa del archivo Sonar.jacoco.itReportPath de informe jacoco para las pruebas de desde integraciOn. 2.12

Tabla 45. Sonar Configuration

Valor por Clave Descripción VersiOn defecto El aumento de los tiempos de espera HTTP de las peticiones al servidor Sonar. El plugin de Maven ejecuta algunas peticiones HTTP al sonar.host.connectTimeout respectivame servidor Sonar. Dos tiempos de desde Ms and nte 30 i 60 sonar.host.readTimeoutMs espera hace que Ia Ilamada fallará 1.12 Si Ia conexiOn del servidor es milisegundos demasiado lento. En tal caso, los tiempos de espera se pueden aumentar de propiedades Maven.

Tabla 46. Log

Valor por Clave DescripciOn VersiOn defecto Mostrar todaS las desde Sonar 2.14, sonar.showSql solicitudes SQL ejecutadas false Sonar Ant Task 1.4 & en modo batch Sonar Runner 1.3 Mostrar el resultado de desde Sonar 2.14, sonar.showSqlResults todas las peticiones SQL false Sonar Ant Task 1.4 & ejecutadas en modo batch Sonar Runner 1.3 La activaciOn del modo desde Sonar 2.12, sonar.verbose DEBUG de los procesos en false Sonar Ant Task 1.3 & modo batch Sonar Runner 1.2 100

5.1.4. EL ESPACIO DE TRABAJO

La herramienta web se divide en tres areas principales:

El area de "Home" (página de inicio)

El area de proyecto (cuadros de mando y el resto de opciones)

El area de configuracion (configuraciOn global y por proyecto)

LA BARRA SUPERIOR

En cualquier lugar de Ia herramienta, estés donde estés, siempre

está Ia barra superior:

Esta barra incluye diferentes opciones que te permiten realizar

tareas generales como por ejemplo:

Volver a Ia página de inicio.

Buscar un proyecto en el campo de bUsqueda.

. Ver Ia miga de pan para saber dOnde te encuentras actualmente,

y navegar a través de ella.

Conectarse o desconectarse a Ia herramienta como usuario o

administrador.

Imprimir Ia pagina actual.

9 Un enlace permanente a Ia pâgina. 101

MENU LATERAL

El menU lateral es un menU contextual y sus opciones dependen del area en Ia que te encuentres y de las extensiones que se hayan incorporado en Ia instalaciOn:

MenU lateral de Ia página de inicio

Revisiones Dependencas Motion chart Radiator Views

MenU lateral de Ia página de proyecto

SQALE Componentes DetaUe de evdencias Máquna del tiernpo Nubes Diseño Funtos crfticos Librerths Motion chart Radiator Tirneline

MenU lateral de configuracion global del usuario

tniclo LPerfiles do calidad 102

MenU lateral de configuracion global del administrador

M perfil Categorf as de evento Métricas man:uaies F Itros pot defecto Cuadro do mandas par defecto SQALE

SEGLJRIDAD Usuarios Grupos Roles lales Roles do proyecto

S1STEMA Conflguración general Copia do segurkiad Inforrnac.ión de sistem Centre do actualizaciones

MenU lateral de configuracion de proyecto

CONFIGURACIOPI Medidas imanuales Configu:rac:ion do proyecto ExcJlusiones Enlaces Roles do proyecto Borrado do ih ist6ricos Borrado do 1proyecto

5.1.5. LA PAGINA DE INICIO

La página de iniclo es Ia página principal de Ia herramienta una vez

nos hemos identificado. Esta pãgina es el punto de partida de Ia

navegacion por todos los datos y presenta una visiOn general con 103

el listado de proyectos analizados ordenados segun las métricas

disponibles.

Cada usuario solo podra visualizar aquellos proyectos sobre los

que tenga permisos suficientes. La gestiôn de permisos se describe

en el apartado correspondiente a seguridad.

El principal objetivo de Ia página de inicio es responder al máximo

nUmero de preguntas Si necesidad de acceder a paginas más

detalladas.

Por ejemplo:

Listado de mis proyectos favoritos

Listado de los peores proyectos desde un criterio especifico: deuda

técnica, cobertura de cOdigo, duplicados,...

Listado de los môdulos de un proyecto

Listado de los ficheros más complejos

Listado de las pruebas unitarias que más tardan

Todos estos listados se configuran a través de filtros. tire.

Activity over 90 days Ones Soue Fostos Sonar Platforre Activity Sonar PlosIr,s Revisiones Oependenotos MtIonchart At8ta NqabT U.stiscdigacaart'.ne Radiator tpLojyç . 9272,l88 Vi— &447 A , 59193 A 405% sonar 18,896 894% 104

En Ia pagina de inicio se pueden ver ciertos indicadores que nos

informan si los proyectos cumplen con los requisitos establecidos

(umbrales):

Indica que el proyecto cumple. con todos los umbrales establecidos y no hay ninguna alerta a destacar Indica que el proyecto ha superado alguno de los umbrales de advertencia en alguna de sus métricas Indica que el proyecto ha superado alguno de los umbrales criticos en alguna de sus métricas

Si en el listado se muestra alguna de las métricas que han superado

los umbrales, entonces se representarán coloreadas segün el nivel

de gravedad: en naranja si se trata de una advertencia, en rojo si

se trata de algo critico. La definiciOn de umbrales se trata en su

correspondiente apartado.

Además, se puede observar de forma visual las tendencias que han

tenido en los diferentes indicadores: flecha en verde si ha mejorado

Ia tendencia es a mejor, y flecha en rojo si Ia tendencia es a peor.

Desde Ia pagina de inicio se puede acceder a cualquiera de los

recursos que se muestran para navegar en los resultados

detallados.

LA PESTAfIA "MIS FAVORITOS"

Esta pestaña muestra todos los recursos, ya sean proyectos,

mOdulos, paquetes o ficheros, que hayan sido marcados como

favoritos por el usuario. 105

Dependencies ]—&cLecLt~ I For jLAJl Sonar Pluns Motion chart

Radiator Alert Name A Views 19 ActiveMQ Aoache Aries sonar Codehaus 1Sonar Sonar:: Channel Sonar:: Sguid Sonar IDEs [MI 8 results

Cualquier recurso puede marcarse como favorito simplernente

pinchando en el icono de Ia estrella disponible en los cuadros de

mando, en los listados de proyectos o en las päginas de

corn ponentes:

E on 19 Jul 201013:02 Components II Lines of code Classes Violations dnlldown Time machine 448,695 7,386 j ,agi lines clOUds 683 packages 1 211,719 statements 37,110 methods Design 1 5,902 files 4-5,834 accessors

LA PESTAfIA "T000S LOS PROYECTOS"

Esta pestaña esta disponible para todos los usuarios de Ia

herrarnienta. Tal y como se espera, muestra todos los proyectos

disponibles a los que tenga acceso el usuario.

Como en todas las pestañas, pinchando en algunas de las métricas

se puede ordenar el listado de forrna ascendente o descendente.

106

Activity over 90 dave Open Source Forges Sonar Platform Activity Sonar Plupins -

Aterta Nombre Llneasdecódtgo Cobertura AII protects 9,272 186 A 28.7% jA ] ActiveMQ 168,447 AA fjjl Activiti 59,193 A 40.5% Ij1 Adobe Flex PMD Java Parent 16.696 89.4% 0 VR AisUb application (rameworlc 12,187 38.4% o [fj1 All Sonar pluqins 47,892 7 53.1% O 49,460 t Apache Amr 5,064 A 33.1% ,4 l Apache Archiva 33,488k 56,7% ! O [fP 49,209 W 38.6% O Apache Asyncweb Pprent 9,640 34.4%

CREACIÔN DE FILTROS

Para Ia creaciôn de un filtro es necesarlo que el usuario esté

identificado en Ia herramienta.

Para crearlo basta con pinchar en el botôn de "Añadir filtro" en Ia

parte superior derecha de Ia pagina de inicio.

IlI"u. ______- I Deendenctes LVV'T1 Motion chait Radiator Ajert Na-- Llne of code - Rules compliance Vlplaons Coveraoe BuIld date Views No results.

A continuaciôn se tiene que completar el formulario de creaciOn del

filtro:

Settings Name: My tiller -. ShareckO Path: $çf5f Typo: OViews OSub-viows UVProjects DSub'prvlects 00irectories/Packages QFllesfClasses Ourrittests Criteria: (lerece a-metric t] 1 and: [jci a metrIc Reset and: [-SrIIeCI a metric t] [ ' 3 - Sresi Advanced search (Save &i) (Save & Close) Qtincel 107

Donde los parámetros disponibles tienen el siguiente significado:

Nombre del Descripclón Obilgatorlo Avanzado campo Name El nombre del filtro Esta opciôn sOlo está disponible con el rol de Shared administrador. Permite compartir los filtros con cualguier otro usuario. Mecanismo para filtrar solo los recursos que Path compartan una misma raiz Mecanismo para filtrar solo los recursos que sean Type de un tipo especifico Mecanismo para filtrar solo los recursos que en los Criteria cuales una métrica especifica es mayor o menor que un umbral. Mecanismo para filtrar recursos de un lenguaje Language concreto Favourites Mecanismo para filtrar solo recursos favoritos only Resource Mecanismo para filtrar solo recursos cuyas claves key like coincidan con un patrOn determinado 0 Resource Mecanismo para filtrar solo recursos cuyos nombres name like coincidan con un patrOn determinado Mecanismo para filtrar solo recursos de acuerdo a Build date Ia ültima fecha del análisis

Una vez definido el filtro con lo que se va a mostrar, tendremos dos

opciones disponibles:

"Guardar y cerra?' (Save & Close): que permite guardar el filtro

actual y volver a Ia pagina de inicio.

"Guardar y visualizar" (Save & Preview): que permite guardar el

filtro actual pero permanecer en modo ediciOn, para personalizar

los resultados y empezar a ver el resultado del filtro.

108

Display Dtsp1yns. 0 Tabie 0TrOeJn8P Pintha en las fIchas Add column: ujj L para distribuir las Oefnultscdcolumn: [Nm ] ndlng columnas Pa *lzC in 20 MAX 200

17/O&2011

Ireffl Pincha an el icano basura para eliminar

una columna

FILTROS DIFERENCIALES

Mediante Ia utilizaciôn de los filtros diferenciales se pueden ver de

forma sencilla los cambios en las métricas de un proyecto en

periodos de tiempo predefinidos.

Esto es muy importante para poder establecer un ciclo de mejora

continua, ya que permite saber exactamente las métricas que han

mejorado o empeorado en un periodo de tiempo coricreto y

configurable.

QP!L$ Periodo de naiyss los cambos

Lkitaoc' Voanctn 6 (+) Ca Sons:: Ph,oin API 10,952(4 (-53) -53 2% (+01%_) 160(-3) -39 c? $fl1 Cambios y Sololos 3_ So Piialns : valor actual de 30(2) 12 cambios 1% (+3.1%) 127 (.32) Q6 9on: Otth a métrica 50 (.1%) -11 .,l1Q) 227 Ca 71 (.13) -13 (+0.0%) 837 (~) 109

Para poder utilizar esta funcionalidad basta con elegir el periodo de

los cambios en Ia lista desplegable de "Time changes'.

Y para crear un filtro especifico que nos permita tener en Ia pagina

de inicio un listado con los ültimos cambios basta con elegir en el

filtro las columnas correspondientes, seleccionando Si se quiere el

valor o Ia variaciôn.

Display - DLpayas: TnbtTn,omap I Addcoturnn d Value I Default soited column f Mceadtn I Page 5150 '50 (change) JAIn 20 max 200

Y posteriormente configurando el periodo de tiempo concreto sobre

el que obtener los cambios.

ctlt*isa: [iitrkT [VeIUO aid: Select a metric i and: [Select a metrIc (Value Dofutt podod INorm LIngU j:~O ootcaod, no irer wiI apy Favourftoa A 0days fli*o.jr90 keyIi - - - so the dwactec I to malch Rosource 'name like: ] use me dnrncter to MOt Ch Build data: L I daye

EDITAR UN FILTRO

Cualquier filtro que hayas creado previamente puede ser editado a

través del botOn "Editar filtro" (Edit filter): 110

ADMINISTRAR LOS FILTROS

Una vez tengas creados unos cuantos filtros, probablemente sea

necesario:

Ordenar esos filtros en Ia interfaz

Eliminar o editar algunos de ellos

Acceder a filtros compartidos (y seguirlos, para incorporarlos a tü

pagina)

Todo esto se puede hacer a través del botOn de "Gestionar filtros"

(Manage filters) en Ia esquina superior derecha de Ia página de

inicio.

t1]!lar 1 Mansos leers My filters

Name Author Shared Order Operations My favowites 4 II I Ptojects Administrator *4 Unfoltow Myfliter FreddyMallet fr EditP15LO

Pncha en las flechas para ordenar los flitros Shared filters These filters are shared by administrators and can be followed wThout copying them,

Name Author Operations Treemap Eo!kYi Forges Administrator Foll All Sonar Plugins Administrator Foll Treemap Codehaus Projects Administrator Follow longest Unit Tests Administrator Follow Tangled Prcects Administrator Foi Codehaus Prolects Administrator EDO

111

5.1.6. CUADRO DE MANDOS DE UN PROYECTO

El cuadro de mandos de un proyecto ("Dashboard") es el punto de

entrada cuando se revisa un proyecto. Presenta los resultados de

las métricas del proyecto de forma general.

El cuadro de mandos se compone de elementos (cajas) que se

denominan "widgets":

LI... of 04.46 CI...... ------.-- 680' 3 - 1,434 IflOI ' Pu.. 63ttS8Ot40flL0 40 IV1.on. 4' 6iicite C ':cm:. 69 1I1'G8J 0

- 909'/' 30 Cornn on!. OupIIc.4Ion. •• L'0O 24 26.8% 0.0% 2 knott 262 On.. 0 P t.nl, nd.. 1000cc do. API 0 144.ck. et..un, API 0 1401 0.0 3 COmfllmcItILOCO

Coc4p sulty 'j---- ] 1.0 • 4 in. 3.7 0.0% 055 nIt3 48.7 48.7,qo ToP' 146 M'.POOi, (jCi.,ss.o

Cod. covenga Tool success - 84.8% 100.0% Commitn, 080% 4410 40.840g. 0 IOnIc40t I 75%Punclloovolngn 0o,,or, 477 44 14410 Lu.! cu.40d 401 10' i.O524 Widgets 48 on

Un widget no es mãs que una representaciôn agrupada de un

conjunto de métricas que tienen una naturaleza similar.

Por ejemplo, existe un widget para ver las métricas asociadas al

tamaño, un widget para ver las métricas asociadas a Ia

documentaciOn del código (comentarios) y el codigo duplicado, otro

para ver métricas de pruebas unitarias, otro para cumplimiento de

reglas, etc. 112

Como en los filtros, una de las funciones más Utiles es Ia de vistas

diferenciadas, que permite ver los cambios en las métricas de un

proyecto en un periodo de tiempo. Basta con utilizar Ia lista

desplegable "Time changes..." para mostrar el periodo deseado.

Vci 1.4 1.SAPSHOT. FR 14 JCA 031 4) Aot)0d4y Lines of code 9,,468 17047 lines 5 packages 5M9 statements 1,283 methods 53 ffles +61 accessos

Cuando se selecciona un periodo de tiempo, entonces las métricas

diferenciales aparecerán al lado de las métricas del proyecto:

100M4

Corn pl*xlty 1.9 klas 3.0lmeuod (40.0) [ (+0.0) 73.7 (+0,1) Tota': 3,906 (+4) $Me1o0s OCtaus }

Commenti DupHca8on. 25.1% (40.1%) 4.0% 3.166 34.3% doci. API (.0.1%) 10 blocks (+0) 1 783 undocu, AP (*0) 8 rno (.0) 1 31 cornmentd 100* (+0) -. .

ADMINISTRAR LOS CUADROS DE MAN DO

Al igual que los filtros, cualquiera puede crearse nuevos paneles de

mando donde mostrar solo Ia informaciOn que más le interese. 113

La configuracion Se realiza a través de las opciones de Ia esquina

superior derecha en el cuadro de mando de un proyecto.

Selecciona "Gestionar cuadros de mando" (Manage Dashboards) y

accederás al formulario para crear un nuevo cuadro de mando:

Mydathbords Cmale - - Kim.

Ossctlçitbt

S4uuod dshboardz (Crzt diIbO*td]

Rome ShaE,dby Opirtto odistod3

----

El nuevo cuadro de mando aparecerâ inmediatamente en el menu

lateral cuando estés dentro de un proyecto. Simplemente tendrás

que añadir los diferentes widgets para componer el cuadro de

mando.

Puedes administrar los cuadros de mando creados a través de Ia

opciOn de "Manage dashboards":

114

My dashboards Nerne Order Operitlans * Confuum widaet QthtQ f..t dzshbwrd

Shared dashboards Nemo SM rod by Operetlons Tom1 AdmIrstrtor Mm1nsstatr rol

Desde aqul puedes:

Cambiar el orden de los cuadros de mando que aparecerán en el

menu lateral.

Borrar un cuadro de mando anteriormente creado.

Seguir o dejar de seguir un cuadro de mando compartido por un

administrador.

PERSONALIZAR UN CUADRO DE MAN DO.

Cualquier cuadro de mando creado por el usuario se puede

personalizar para incluir diferentes widgets e incluso para

distribuirlos de Ia forma más conveniente.

El cuadro de mando por defecto solo puede ser mod ificado por un

administrador.

Para cambiar Ia distribuciOn de un cuadro de mando tienes que

pinchar en "Edit layout" dentro de cualquier proyecto: 115

.J Vci,b,, 4,0APZ1OT. $&r 26 8, 200 23.49. orebNrts lI j 1 I 111111] Li I I I iLl I

Para añadir widgets al cuadro de mando simpleménte selecciona

"Configure widgets". Se mostrarã una lista de widgets disponibles

en los que puedes ir pulsando "Add widget" para ir añadierido los

que desees.

tY;i-6 EdW- - fi.n~cl~hbw = :-I

.1 VC1G.S4lPS$O1 . &j'.M SpiO2349. N

PJ2i9fl B1 Lista de widgets disponibles Afwft ClIdsmb.e & Kanie,*r Code covvage Commenti & D*play GuflUil slets on Repods on LCOM4 end Reçois on u(t* tests and DupIIctioni tect. RFC nveteo end Cado Govatego by uni Rapoda on copy$pasto and sttstlon. documentitton

- (dg) (4d e4dg)

Complexity ,Custom muswus O.wiptlon Events eport. y,_s gep* iRepOt$OV5fltSOflthO

Por ültimo para mover un widget dentro de un cuadro de mando,

desde Ia pantalla de configurar los widgets, basta con que pulses y

arrastres el widget deseado a su nueva posiciOri.

Para eliminar un widget tienes que seleccionar Ia pantalla de

configuraciôn de widgets y después pulsar "Delete": 116

5.1.7. NAVEGACION POR LAS METRICAS

En cualquier proyecto, siempre es posible acceder a una

navegaciOn detallada en funciôn de los valores obtenidos

pinchando en Ia métrica concreta.

La herramienta mostrará Ia estructura por componentes, Ia

jerarquIa se representa de izquierda a derecha.

En Ia primera posiciôn de Ia lista aparecera el componente que

tenga el mayor valor de Ia métrica que fue seleccionada (por

ejemplo, Ia que más lineas de cOdigo tiene, Ia de mayor codigo

duplicado, etc.)

1O14

1750 I Ic1Q a J

1S: Xtt.O 53 61

Si pinchas en una clase te mostrará informaciOn detallada del

recurso en concreto a través del visor de recursos ("Resource

viewer") 117

5.1.8. EVENTOS

Por defecto puedes incluir en el cuadro de mandos de un proyecto

un widget que refleja los eventos durante el ciclo de vida del

proyecto.

Hay dos tipos de eventos:

Manuales: se puede añadir en el momento que se desea y con una

categoria concreta para reflejar un hito importante en el proyecto.

Automatizados: se añaden mediante un mecanismo automático

cuando hay un cambio de versiOn del proyecto o cuando se

produce una alerta porque se ha superado un umbral.

La gestiOn de eventos se detalla en el apartado de Manual de

AdministraciOn.

*ø E41 CWACW - fØ) • Aø#t G'*o EAt * C7OA2t At R ; 0 EAt 41lc Ct OtZ2V1O l.i-' EAt - Edt mo

5.1.9. EL VISOR DE RECURSOS

El visor de recursos es el Ultimo elemento donde examinar Ia

informaciOn más detallada de un recurso en concreto, como un

fichero java o las pruebas unitarias. Lo más importante del visor es

118

que permite ver el recurso de acuerdo a diferentes aspectos de Ia

calidad.

VISOR DE CODIGO FUENTE

Cuando navegas por las diferentes métricas llegará un momento

en el que alcances el mãximo nivel de detalle, en ese punto,. y

siempre que tengas los permisos adecuados serãs capaz de

visualizar el côdigo fuente.

157 Pestana seleccionada

Ltnes: 1,051 Statements: 351 Comments (%): 59.5% PublIc API: 50 Classes: 2 IJ of code: 592 Complexlty. 227. Comment lInes: 870 ethods: 59 Coniplexltytnethod: 3.9 Jessers: 0

f 2 Licensed to the tpChe Soft,,aze FOunddt4Sp) uOder one or wxe 3 ce rib or Zicezsse dqre seats, See the NC - ''' bvted with 1 this work for additic,nx2 inf rziaticei recant Cabecera e2hip. .i Recurso 73 Sf )icenses this fi2e to You zndor thd .,.------ Version 2. 0 - (the "License"); you may not use this fi2e except in coarpisance with 7 the License. You say oblain a copy of the License at

9 http:/Aen.'. epa .os17/licenses/2.2'r274SE-2. 0 10 11 Un2ess .reusred by app1iceb2c 1,n.' or sresd to in iriting, softwsre 12 ' distrioted unde s BtSIS, 13 fl?Ou3 RkTLES c .Q fuente coloreado or piiea. 14 Se he Lenseic the specific iangnaqe qngoverni pe.rsissions and 15 iisitation" en the License. 161 17 package org.epeche.cosisonx.gang,tj: 18 , 91 1sort eva.text.PatseException; 20 1a5ort jove.text.Patseposlcjon; 21 iiajort java. text-. 5tp1eDateFoc,iet-; 221 iit,ort jsve.utiICalenqar;

Las diferentes pestañas representan las diferentes vistas sobre el

cOdigo fuente. Dependiendo de Ia pestaña seleccionada verás una

cabecera con informaciOn especifica. Y finalmente en el pie, el

cOdigo fuente contextualizado segUn Ia pestaña seleccionada.

También es posible ver irtformación del control de versiones en el

visor de recursos gracias al SCM Activity Plugin. 119

i

Coverhc)e DeDenderces Duhcetocts LCOM4 Violations Lines: 1.369 Statements: 318 Linesofcode: 620 Comments: 41.7% Methods: 33 CoIIY PubilcI: 27 Comploxitylmethod: Comment lines: 443 Acoessors: 0 6.7

Lflechanges...

e• 12.15 I' LAcensed to the Apeohe Software Foundation (ASF) under one contributor 11cc 09:cczl7enta. See the NO2'ICY f1c, cLiatrl this work for additionnl .a.oforvuit.ion rvgardiricj copyright ow The ASY 1100es thin file to lee under the , (the 1canso')1 you may not use this rile except in compii q the LAcesc. You ey obtain a cepy or the License at or-r nhp lQ4.o22a yove http: /A..w. apnche. org/Lrcenscs./L VN3f-2. 0 OQ707-13 nIp UnLe in retjuircd by appliesbie law or agreed to in writing, * d.Lntrjbutod under the License £s distr.Lbutsd on an 'aS 15 i,Tmour wASaaSrrgs on coNlrrIarjs OF ASY KIND, either oxpres See the Lcenee (O1 the ipuifLc Isuqeege qoverninq perrniss ILLmitations under the License. 20Ot-0-13 niMp t-iZ.iS 0.gmoc packago org.epachc.colInone.bcanutj19;

inpott 4va.1ang.reL.Rotorenoo

A continuaciOn Se describe el contenido de cada una de las

pestañas:

La pestaña de cobertura (Coverage)

Esta pestaña muestra el código fuente incluyendo informaciOn extra

y colores para visualizar Ia cobertura del codigo de las pruebas. En

Ia primera columna aparece el nümero de veces que Ia ejecuciOn

de las pruebas ha pasado por ahI, y Ia segunda columna muestra

el nUmero de condiciones cubiertas del total de condiciones a

cubrir. 120

t34 • prLvmt.o itatia eothod qmtAcceftlibLol4eUsodflo.8uporcla$s 0tI1. b.%4 00 (CLaim c1atn Strinq methodaere CLa.s I partorType.)(

f CLaim paxemtClatj caa*.etSupcz'c1amai 017K28 10 wtilo ([email protected] J. muti s-ia if oditiar.ispubiic(psro I**,95u4o4iitor.(pfl 511 try 041 4 recurs prentelass qethothodtuethed. peraetter?ypre); 94 '14 ' } c.tcb (o$uctsthodIxcrytien it 3'4 14 retUrn mull: 5" 944

Iwo [_Numero do condic1ortes cubiertas I condlciones a cubrir

tie so: ceo urn ma aCCs-iiibo mettlod (thmt LJ one that can be LJvoted via

Una lista desplegable permite filtrar Ia informaciOn a mostrar:

Ri orgapache.common$.beanutjtsMe(hodutfls

Es . Depet4enctes Duohcations LQQ 9LO V(oiaflorts' Unacoverage: 71.4% Branch coverage: 58.1% "5 " o,' Uncovered lines: 88 / 308 Uncovered . -. Unes to cover Ful sirco I C Time ehanges UJp.1,zf.Irrnsk Branches to cover - i4 f author 3 L, Uncovered branchet al-T2.1saamec 00 Sm obezt L. OX1-ra-lO ovrno CO C, 50 tO

SI bloques do códlgo con igo no cubiertas

20? objcct.gotClaoo(), 208 irothodName, 290 7parameterTypes); 2740ai5p 400 If (method mull) ( - .Ct-?3 usadea 401 Ifi- ;- - 02 methodNair,o + () an object: + object. gotCLai 27.O7.52n.J, 402 ) 404 return method .Lnvokc (object, erga); 40&

La pestana de cohesion (LCOM4)

Muestra los diferentes componentes de un recurso y como están

relacionados entre si. Tener mäs de un bloque significa que el

recurso está asumiendo más responsabilidad de Ia que deberla,

por lo que podria separarse en varios más indepenthentes.

121

Blyme Coveraoe Dependencies Dupitcalions I&QM4, Sources Vio!alons

LocK of Cohesion of Methods: 3.0

1 :S nextloken(Lorgsonar/colorizer/CodaReador;)Lvo/lang/Stting;

2 0 oplions getCssOl.java/Iang/String; ci ge1Tag8egin0FiIeLjava/1ong/St6ng: getTagEnd0lFiIeOLjava/lang/String;

3 0 beginoflJne Q checked 0 endOfUne O fineld gelTa9.AflerOt4ava/lang/String; getTagBeIoreOUava/langlstting; hasNextloken(Lorg/sonar/colorizer/CodaReader)Z

La pestana de dependencias (Dependencies)

Muestra todas las dependencias de entrada y de salida en el

recurso seleccionado:

org.apache.commons.digester3.Oigester CQkSttSS I .1TFFI lstlicoiio!p LCOM4

Acoptnmtonto af.ronto (ontran): 57 - Aooplamtonto efrgnt. (saIInte) 20 - i c ,cmonz4tosto bt,octMothodputo (It - pod,e. moditotBeanPr000,tySe5&RuIp (11 I 0oaoethe.cnrno5,dioeste,3Ab(ractob1ectcfoetionFnctv (i) R OO.ODOthO ii'g.dIoeto4.CeIIMetl,odRulp (It u,eh actRv'esInM (1) 9M.eMho.Com digestef3.C8fiParamRuto (It Q5the.c rn.diQo3te3.Be?nPrpe,jySettRuto (It 1 omxpachexommons.d (It te6.ObJWCmMeWe (It cconimode3.CaIIPa,nrnRuIe (It s tor3.ObJectCrevtIonFpctm.W commdtooste3ctPnmRuIolfl () .apcho.c qe5t3PathC,HPammRutej1J

(it t o'.diote,3Ruto$e( (it

La información de "Afferent couplings" indica el nümero de clases

que dependen de esta clase. Esto nos da informaciôn sobre Ia

responsabilidad de Ia clase.

La informaciOn de "Efferent couplings" indica el nümero de clases

de las que depende esta clase. Esto nos dice como de

independiente es Ia clase en concreto.

122

La pestaña de duplicados (Duplications)

Muestra cada bloque de código duplicado dentro de una clase, asi

como el nombre de Ia otra clase con Ia que se está duplicando.

Ri org.epache.commons.digester3Digester - -

Cobertvra Decendencias Jlr'tTT LCDM4 Qg Evidenclas L187 LInens: 3,180 Llneas dupticadas: 596 Bloques duplicados: 11 Blocks NbUnes Fromilne File Details

2 1 51 355 Digester [ org.apacho.comrTions.digester3.Digester - 52 355DiMt - Z6-170rcne0%,odi 358 public ClaaeLoader getClaaaLoader() 35? it ( thia.claeatoader 1 null ass 359 return ( tbia.claeaLoador 20I. condo,, 360 } -

2 90 443 DIgester [ og.apache.commons.digester3.Digester 108 502 OiMt 6P 20 12b,cnot,Vrdi 443 return factory ); poss-osMecraig,noc 444 }

449 447 Rcturna a flag indicetthg whether the rc 449 4codex-org iceS. sex. XMLReader. See

La pestana de evidencias (Violations)

Muestra informaciOn anotada sobre el cOdigo fuente respecto al

cumplimiento de reglas de buenas prácticas. Por defecto sOlo se

muestra el cOdigo cercano a donde se ha encontrado el

incumplimiento.

Una lista desplegable permite filtrar por prioridades o por una

evidencia especIfica.

123

j org.apache.commons,digester3.Digester

Cobertum I abo £4' Q •tfTr

89ov(doncias IN B(oquean(e: 0 12 Cthico: 0 A Mayor 85 V Menor 0 W Info: 4

OTodoocedeo [ EoIac(6n en el t(ecnpo...

640 Return the "nasnoapace aware" flag for parsers we create. 235 t-Oh.Th ReonoSthadI 050 051 eretrn the nare.pacc swers" flag for parsers we Create. 2235.cthc3 aCeeccu 553 "1 235t.05-c7 .honottbad( 513

1 Boo(eonGetMethodName 1 5mesnn

A getX() method wI,Ith mourns a boo)eon should be named (53(0

554 ( return ( this. uaocCBpaccAwaro >5 Ot.f03o5igen 557 ) £0,

2-l2-75tah53 073 fretorn The Xlnclndn-aworC flag 071 OBOe •9000saaoepocnawsro(( 5005-5746 chat 074 Oniucn 1.0 5-5743 ahssl 070 I

La pestana de fuentes (Sources)

Esta pestaña muestra el cOdigo fuerite con Ia sintaxis coloreada

para facilitar su lectura.

Thsese0u. Dnai LAd fy,ss tdee" Sues ,e.ona. Oc.,.nuro

,.w,. 311110 0 ik...4.a6do 6.477 Cns.601..(%b 55.0% IAOtndla 621 - - IweOnabIuMMOI 012 Plus od.Ifl2aed.- 61 , ouae adO fiss LB flea r4 --- 09 -" poctafl arc.oua...a.a:e..t.c,s

77 nIck I.. Sic...., mu -r octal: • tunis: a. IJC.. ci

5 . :115, .1,40 04%ccl* 01 114. a 61. Ut.... 10 $4 . •f lit I..q.aq. 15..,,lin l.,.l..b,.. aid cIaIcktIcc. 1*

ci 0n .1.11, )clo.l.c..flciaq.f....tj

c0 0A 1*11. ia.:c.acioutau,

VISOR DE RESULTADOS DE LAS PRUEBAS UNITARIAS

Este visor muestra detalles de las métricas de las pruebas unitarias

(excepto Ia cobertura) cuando alcanzas el mayor nivel de detalle

para una clase que implementa una prueba ur,itaria. 124

CM org.apache.commons.digester3fljgesterTestcase r 100% Tests: 19 Faflos/Errores: 010 Duraclôn: 4 ms

0 ms testNulllnputSourceParse

I ms testNulllnputStreamparse

0 ms testNultReaderParse 0 0 ms testNullStringParse 0 ms testNuIIURt.Parse

0 ms testProperties

Existen dos pestañas diferentes para las clases de pruebas

unitarias:

La pestaña de fuentes de las pruebas (Sources)

Esta pestaña muestra el cOdigo fuente de Ia clase que implementa

Ia prueba tat cuat.

[M org.apache.commons.digester3.RuleTestcase

I rl - r $Id Ruleresfcase.java 1102402 2011-05-12 180326z simonotripodi $ 3 - Licensed to the Apache Software Foundation (ASF) under one or more 4 contributor license agreements. See the NOTICS file distributed with 6 this work for additional information regarding copyright ownership. 6 • The ASP licenses this file to You under the ApaChe License, version 2.0 7 • (the*License"),- you may not use this file e,cept in compliance with 8 - the License. You may obtain a copy of the License at 10 httP:Ilw-apache.org/licenses/LXCENSE-2.0 * 12 Unless required by applicable law or agreed to in writing, software 13 • distributed under the License is distributed on an A5 IS . BASIS, 14 WrEou3 WARRANTIEs OR CONDIYXONS OF ANY Sf413, either express or implied. 15 See the License for the specific language governing permissions and 16 limitations under the License. 17. •/ 18 19 packago org.apachc.coemone.digeeter3 20 24 import static org.junit.Assert.aeeertE(juals; 22 import static org.junit.Aasert.aesertsot7iull; 23 import static org.junit.Assert.aeeortWull; 24 import static org.junit.Assert.aeaortrrue; 25 import static orqjunit.Asnert.fai1; 26 27 import java.io.Iosxcoption; 281 import java.io.Xnputstroam; 29 import java.util.Arraytjet; 30 31 import Org. ap&che .Commonn.digooter3.Digestor; 32 import org.apache.cosrnono.djgester3.ExtendedsasoRuleo; 33 import org.apache.cortsnonn.digo8ter3.Rul090t; 34 import org.junit.Aftcr; 35 import org.junit.Seforc; 36 import Org.jurlit.Test: 37 import org.xml.885.sAxsxception: 125

La pestaña de las pruebas (Tests)

Esta pestaña muestra los resultados de las pruebas unitarias que

se implementan en esta clase. En el caso de que Ia prueba falle o

de error se puede mostrar cual ha sido Ia causa del error.

(M org .apache .karaf.kittests.KitTest

0.0% Tests: 1 Fallos!Errores: 0/1 Duracôn: 31.5 sec

Duración Nombre del test expand 31553 ms testKit

5.1.10. COMPONENTES

Desde cualquier punto de Ia navegaciôn por un proyecto puedes

acceder a un listado de sus componentes a través del menU

lateral.

Esta opciOn te Ileva a una pagina similar a Ia pagina de inicio, sin

embargo, en lugar de los filtros se muestran los componentes del

proyecto.

LA,e 1 DU$t*d R4eI cods sneoO%) on7ro, 1.. .dco M*7 t9t4 0,0% 140512011

81i PT~w--'- tkiotc1 Qiai1t4 __ 4. .2. 5 36 0.0% 0.0% 0.0% 400613011 4.4 37 7. 53 imk4o dSo 163 0.0% 0.0% 20.4% 1610012011 6.7 171 30 0.0% 161040011 4.9 24 Ubodes t 0%h9P405i9W.4300k23 0.30. MlIcoclwt fu 30 0.0% 47.7% 00% 19107.0011 7.9 16 126

Al igual que en Ia página de inicio el listado muestra un conjunto de

métricas que son totalmente configurables siempre que eJ usuarlo

sea administrador:

- - - scarm

10FF

Coverage SuDd -- compliance timo dox ' 10 Oil 6.e 597% 1.047

Personal izaciOri del listado Quaft Total _____

00% 00% 19/0612011 4.8 31 0,0% 20.4% 1910612011 6.7 177 0.0% 19/05/2011 4.9 24 46.7% 0.0% 19105/2011 7.9 16

NdO 11*1 thne oh.ng.o w10 ImWi60 uior. ond 66 plcjoolo. Made las columnas Pincha an las flechas L - para distrlbuir las I 10 - 9 is coiumflas

0c.1nd6. coft C basura : una columna 38 0.0% 0.0% 0.0% 19100/3011 46 37 183 0.0% 0.0% 20,6% 1910612011 6.7 177 4 53 0%300pA11tlj036A9O,jJ90eJ 36 0.0% 0.0% 19105/2011 4.9 24 ' - 0 00.holl.10104086,860004193 30 0.0% 46.19. 0.0% 15/06/2011 7.8 16 (iml184 186 0% 00% 0.0% 1910512011 U 300 53 83.h60.lflJ0fl90.90b 69 0,0% 0.0% 0.0% 19106/2011 7.0 94

5.1.11. NAVEGACIÔN POR LAS EVIDENCIAS

Se puede acceder a Ia navegaciôn por las diferentes evidencias

de incumplimiento de buenas prácticas (en base a las reglas de

análisis estático) a través de Ia opciOn correspondiente del menU

(Violations drilidown). 127

Rul. t 0 A 280 * £ e iI90f £ 47 U 20 I A 47' • V WLo *0 i a 85 • a &t tDJ0J08I8 25 *

tra ' 52, 1k mow% 42 I3 15 37 2 84

La primera parte permite seleccionar un criterio para mostrar las

evidencias: por prioridades o con seleccionando una regla

especifica.

La siguiente secciOn representa Ia jerarquIa de recursos del

proyecto de izquierda a derecha. Al principio de cada lista

aparecerá el componente y recurso con mayor nUmero de

evidencias segun el criterio seleccionado.

Pinchando en una clase concreta accederás al visor de recursos

donde consultar Ia informaciOn del elemento con el mayor nivel de

detalle.

Una de las opciones mãs interesantes a Ia hora de navegar por

las evidencias es Ia de ver las diferencias con respecto a análisis

anteriores o en un periodo especIfico de tiempo. Puedes consultar

las nuevas evidencias encontradas pero no las eliminadas. Para

ello puedes seleccionar el periodo que te interese desde Ia lista

desplegable "Time changes". 128

Rul. bt, i +29 Occ cr,&'t 1kig * 4 c 4 0 'cccwtns 23 £ 13 +20

' 1r 313

J 028 *c ccip fl P -261 i 21 *20

ago

Para determinar cuando aparece una nueva evidencia se ejecuta

el siguiente algoritmo en cada inspecciOn del cOdigo:

Para cada evidencia, si existia una evidencia de incumplimiento

de Ia misma regla y estaba en el mismo nümero de linea y con el

mismo identificador —> no es nueva.

Para cada evidencia, si existia una evidencia de incumplimiento

de Ia misma regla y tiene el mismo identificador —> no es nueva.

Para cada evidencia, Si existia una evidencia de incumplimiento

de Ia misma regla y estaba en el mismo nUmero de linea pero con

identificador diferente —> no es nueva.

En cualquier otro caso, se tratarã como una nueva evidencia.

5.1.12. LA MAQUINA DEL TIEMPO

Desde cualquier punto de Ia navegaciOn por un proyecto puedes

acceder a Ia funcionalidad de Ia máquina del tiempo (Time

machine) para estudiar Ia evoluciOn de un proyecto. 129

La máquina del tiempo permite revivir el pasado analizando todos

los anãlisis realizados. La página se divide en cuatro secciones.

GRAFICA PERSONALIZADA

La gráfica representa Ia evoluciôn desde el primer análisis

realizado hasta el Ciltimo análisis. En Ia gráfica aparecerán todas

las métricas que se encuentren seleccionadas de todo el conjunto

de métricas disponible.

I OOX :: 41600 L.A 4400 4200 E 4000 3000

3600 206 3400

Jn.?007 Ar2007 jui2007 O(t.2007 .a00 Apr.2000 Jul.2000 On200I Ju2000 —Coie coverao —ComplexIty —fulu; compliaitce

P Compinuiy Documenteijon

r Commenth %) r Comment hne Rules

P Rules comp{sne r Rules compIance, incl opo. r Opt ruts empliance

r Vj0IItOnIt r Opt. nst0s Violationt 130

Para cambiar las métricas que se representan en Ia grafica basta

con seleccionar las métricas que te interesen y pulsar el botOn de

"comparar". La grafica se regenerarã con las métricas elegidas.

Si quieres que las métricas seleccionadas sean las de por defecto,

el usuario administrador dispondrã de una opciOn adicional "Set

as default" que podia utilizar.

SELECCION DE RESULTADOS

Cuando se utiliza Ia mãquina del tiempo, siempre se muestra Ia

primera "foto" del proyecto (el primer análisis) y despues los

ültimos cinco análisis.

V*Mø.4 * I 3U.$M'%4IO

Puedes añadir fotos a esa vista, o bien a través de Ia fecha, o bien

a través de un evento (una nueva versiOn, Ia superaciOn de un

umbral, etc.)

qh—

Shwdate Shøwev9nt

Compiox4Version 0.9.11 Verson 0.9.9 r enmnlpIVerSOfl 09.4 131

También es posible ocultar una foto de Ia vista utilizando el enlace

"hide al lado de cada una de las fotos que se muestran en Ia

máquina del tiempo:

Dec 6, 2006 I Mar. Version 0.6 Vers hide

Es importante destacar que tanto como si ocultas columnas como

si añades nuevas, eso no tendrá ninguna influencia sobre Ia

grafica personalizada.

LA TABLA DE METRICAS

Esta tabla muestra Ia lista de todas las métricas disponibles en el

sistema, agrupadas por su naturaleza, y también incluyendo las

métricas manuales.

Cada columna representa una foto que mostrará el valor medido

para esa métrica.

A Ia derecha de Ia fila se puede observar una representación de

Ia tendencia que sigue Ia métrica correspondiente.

O9 HO - 112 12 2.3 79 23 73 p cec'42 Sm - 4733 4mi AM

417t4 401% 1% )30% )30 -.,...,. (i7t3 £9I QG 7111) 77Y p "1uWaAk." W7% 05 O% G36% 035' 1 ?) 71 5% 31H4 'I% 350% -' 478% 41 130% 0081' 510% 6I% 132

LA GRAFICA DE DISTRIBUCIONES

Algunas de las métricas disponibles se representan a través de

distribuciones, por ejemplo, Ia distribuciOn de Ia complejidad por

clases, Ia distribuciOn de Ia cohesiOn entre las clases, Ia

distribuciOn de Ia deuda técnica,

Estas gráficas se muestran al final de Ia pagina de Ia máquina del

tiempo:

12 Sol

co,".Ows I) C ..s&" 00~ to 20 *0 ; Technical debt .paOtUon clessos difrtbtt1on 1comp4city

5.1.13. NUBES

En cualquier proyecto puedes obtener una vista en forma de

nubes de etiquetas para detectar puntos dave. Para ello basta

con pulsar en Ia opciOn del menU lateral "Clouds" (Nubes).

Una vez dentro de Ia pagina con Ia nube de recursos puedes elegir

dos pestañas:

Top risk: en este caso el tamaño representa Ia complejidad media

por método en Ia clase, y el color representa Ia cobertura de

cOdigo a el nivel de cumplimiento de reglas.

133

Quick wins: el tamaño representa las lineas de cOdigo de Ia clase.

El color representa igualmente Ia cobertura o el nivel de

cumplimiento.

Si pinchas en una clase se abrirá una nueva ventana con el visor

de recursos para analizar los detaltes de Ia clase.

L ConflgM&rn GlobatSummary *t1qd*1c$ R*oC . JMetetSoitsor JttA S*peR*).r .*, J *e**dr OtkxSefvIcelmp ._

5.1.14. LOS "TOP"

En Ia opciOn de menU "Hotspots" (Puntos crIticos) se puede ver el

listado de las principales métricas con el ranking de los cinco

primeros recursos afectados.

Es una manera muy rápida de obtener una foto de por donde

empezar a revisar un proyecto.

—- . ,a

04Cr, v,p04fir) * • o — *. — s - -00 __, ----4 a _* •' a — - - - 7-'- -_- -- —

71 4.Vao ...a — 0'4*000

2.3- — -- - 17- 4 Dj0.*XZL9 30 070I1O - - 134

5.1.15. DISENO Y DEPENDENCIAS

Navegando por Ia herramienta encontrarâs multiples puntos en

los dispondrás de información sobre el diseño y Ia arquitectura del

sistema analizado. Uno de los aspectos más importantes es evitar

ciclos entre clases y paquetes, ya que esto impide tener

componentes mucho más independientes, que podrIan ser

cambiados.

En el cuadro de mandos podrás ver un widget que informa

precisamente de esa cuestiOn:

Packagetang$olndex D 1dr0 ocut 49,3% >37cycies

Esto nos da informaciOn exacta de cuantos ciclos existen en el

proyecto. Cuanto mayor sea este valor peor es Ia arquitectura del

sistema.

Pi4Sø 1AqJ rdz Dependencies to cut 4.' 12betweenpackages '''(i.' , 135 between fites

Podemos saber exactamente como resolver este problema si

observamos el nUmero de dependencias a cortar para eliminar

esos ciclos.

Si hay muchos ficheros involucrados significa que el esfuerzo para

eliminar las dependencias será mucho mayor. 135

Para saber por donde empezar puedes pinchar en Ia métrica o

acceder a Ia opciOn en el menu lateral de "Design" y acceder a Ia

matriz de dependencias del proyecto donde se puede ver en rojo

las dependencias cIclicas.

eoenderes Desla iP shboar

0ependeny U Suspect dependency (cycte) - uses• uses>

J opathemmonsco4ons,beg -

&J opathe.mrnonsoolIeons.bdimap - ogpathecommon&co1lectons.buNer OTTVflO OflS.SpHflap

6 4, . opathe.cornnnsIeconet 3 I - 0 GJ 2 6 Og.epathe.mmonSI,ct$on,JI1 2 1 - tJ p.commorLcofloonLoou.cton 4 4 4 1, 6 - 6 4 fl org.apachoconmonsonsJterar .2L 5 2 1 18

- - orgapacho=mnionsAWlectlwshmctws - 3 1 t.J oapecheoommonscoHeons 22 40 22 11 67 8 .7 7 4 33 71 -

tJ opspae con onso - oscompsraors I 6 -

Puedes seleccionar cualquier componente y ver sus

dependencias pinchando en su nombre:

Eels I ndlca que 01 poquete bidimap' - Deenasde sIIda del tlono 3 dopondenclas oon set Dec sot

Paquete selecctonado I.eeos 4 2~3— D 1' entrada del M paquete set M3 . I IT, A 4 .1 6 6 4

5 2 - I It 3 5 4 . 3 1 ( OQ4PIthSO5L0O1ISUl5Ir$ 22 40.22 II 67 6 7 7 4 32 71 - U - e

Esto Indica quo el paquete set tiene 8 dependencIes con at

- DasUeto 'CollocItons' -

136

Los colores ayudan a ver las dependencias de entrada y de salida:

LIE EE Eie Ii1

.00rons.aouoadon.bdI,rp j oeopacho,a, mn,onsooIcoonabgjn,r - t:a ea. pacho.crnn1onsccl*ocJonsap14tnp VU orgsfiaa1o.connon1ts,tcnfl,,.p S 3 ET3Ii La 2 a ov.apaoh000nwyons.00jIoc,1cnsjaa -J —F 2 1 0. 0 *_ aPOh4 a' on ooIio2000Ileoton 4 4 4 J 4 - h .00a'a'on.aoa.otoa*.jt n_j tt 5 8 4 - r...j QtOSPSCheOCflnOflS.OoJecOofl41uflcin,$ LU PO000tk,n 22 4 22 67 7 4 33

[a QUetes do-los do-pondo oP paq uote seU1J

Con un vistazo râpido podemos saber cuales son los paquetes

más independientes, los que más Se utilizan y si existen ciclos

entre ellos.

LIEEEESdOEEEII LI EEEEEEr

Cuando no by ebbsa matriz un trngubo Componentes de bajo niveb. Por ejempbo todo Cl niundo depondo L°2 adornâs dopendo do cornParato_j1

Para obtener más información sobre las dependencias basta con

seleccionar el ciclo sospechoso:

! PP 93 137

Y haciendo doble click podemos llegar a saber incluso cuales son

los ficheros o clases irivolucrados, de manera que podemos

comenzar con Ia refactorizaciOn para corregirlo:

.....

tie ka (**

También se puede hacer un zoom especifico en cada

componente para obtener las dependencias entre sub-

componerites:

_

Dependency D Suspect dependency (cycle) - uses> - uses> 0 r org,apacheoommon.cofleotlons,bag Lb Org.apachecotnmonscol)ect)on5.bldlmep 4 J orgapachrnmonsco)lec1ion4.bufler - - *- .-.4-- J orepececomcnsllaconsspJltmsp - + org.apecli.00mmone.colloctlons.mnp org .apache.commonsccllecllans.set f: .mt i org.epacleoommons.collecfloas.keyvalue 2 - t3 Org.epachocommonsconecIs.11st .-..-- org apachocornmons.co)Ioctf "?cofloctlon .4 4 .4 1 016. .4.- Ej or9.8Pachommonaxlteco\tertors 2 2 1 183 6 .4 - - -- - r -- '-- - MD org.apacte.commonscolIect1onNnctors 3 . org.epeche.00mmons.collectlons 2240 22 11 87 8 7 rJ org.apache.00rnron5coltedt)ons.co' paratorG -

Con cable-click puedes visualizer las dependenclas eritre ficheros dentro del paquete keyvalue

DependS ncy D Suspect dependoncy (cycle) C3- uses> - uses> - I AbnctMsjSnt.yOeeorster Ell O.lultI(øyVaIuo j O.tsultMapSnt,y 1 - t1j Mullll(Sy - I I fledMepEnwy '- UnmodItlebleMspE,try - J Ab*tt*c%MiapEflvy AettsCtKeyVsdue . - 1 - 138

5.1.16. LIBRER1AS

Desde el punto de vista técnico de un proyecto, raramente el

software se compone ünicamente de un conjunto de ficheros con

el cOdigo fuente. La reutilizaciOn de cOdigo ya hecho por cualquier

otro equipo de desarrollo puede beneficiar mucho el proceso de

desarrollo. Por eso Si se trata de evaluar Ia calidad de un proyecto

las dependencias con librerlas externas son muy importantes.

Por ejemplo, se podrIa utilizar por las siguientes razones:

Una determinada version de una libreria no se puede utilizar

porque se sabe que contiene errores criticos.

Se necesita conocer que dependencias transitivas explican Ia

utilización de una libreria concreta.

Una libreria de uso comercial no debe ser utilizada porque no

se disponen de licencias.

La opcion para poder analizar estas situaciones solo está

disponible cuando se trata de proyectos Java construidos con

Maven.

Los detalles son:

LIBRERIAS DE UN PROYECTO

Una vez seleccionando un proyecto, puedes acceder a las

librerlas que utiliza pinchando en el menU lateral, en Ia opciOn

"Libraries". 139

Esta opciOn te permite ver rápidamente el árbol de dependencias

del proyecto, incluyendo un filtro para buscar mâs rápidamente.

ira SeSrth Filtrc) opcional Oashbcssd Filler i 0 Display lost brarros CollaooaO(,)g Components SenarSqid 2.2-SNAPSHOT C Sonar Check API 2.2-SNAPk T (compile) Time mne ( Sonar Graph 2.2-SNAPSNOT pile) Th com.google.collecttons:googl actions I 0 (compile) Design El ilth checkstyle:checkstyle 4.4 (compil Hotapots - Th antirar4lr 2,7.6 (compile) 1 cornmons-eanutils;commons 'Is-core 17.0 (compile) Commons Collections 3.2.1 (compi RadIator Aqul podrias ver Tmltna t)th asm.aarn-aJl 3.2 (compile) quien utliza este SetOngs (T Commons Lang 2.5 (compile) f proyecto (1 Commons 101.4 (compile) I org.slf4(:s04(.api 15.6 (compile) Arbol do C3 PicoContainor Core 2,10.2 (compile) dependencias de ThJevax,annjs26o.pi 10 (compile) Dependencias con las librerlas jj librerlas de test - I cIassworldsclassworlds 1,1 (provided)

flfi El cod igo fuente de esta libreria no ha sido analizado El cOdigo fuente ha sido analizado y el proyecto depende de Ia Ultima foto analizada Ej El cOdigo fuente ha sido analizado pero el proyecto depende de una versiOn antigua

DEPENDENCIAS ENTRE PROYECTOS Y LIBRERIAS

Conocer las librerlas de un proyecto es muy ütil pero todavIa más

interesante es poder revisar todos los proyectos y conocer cuales

dependen de una libreria con una versiOn concreta.

Esto puede Ilevarse a cabo a través de Ia opciOn "Dependencies"

de Ia pagina de inicio: 140

Busca lafibrertapornombreys&ecciona

A

12J a L2J2 a Pincha para var los detalles

FIt I.4 aaes5 et*, Elige de forma opconal un numero de version para var qulert la utiliza ° a 'iol itS ,,eft

5.1.17. SEGURIDAD

La seguridad implementada en Ia herramienta es bastante sencilla

y estándar. Es posible crear tantos usuarios y grupos como se

desee, y los usuarios pueden pertenecer a un grupo o a varios.

Un usuario 0 un grupo puede tener mUltiples roles, que dan

acceso a varios servicios y funcionalidad dentro de Ia herramienta.

CAMBIO DE CONTRASEA

Puedes cambiar Ia contraseña pinchando en tu nombre de usuario

en Ia esquina superior derecha. Tendrás que introducir Ia antigua

contraseña, Ia nueva y Ia confirmaciOn de Ia nueva.

Mypoie

4.o1n: dwm

GtOupE l*dmo

CPsanço pas5wo(d

Old %*uc 141

ROLES

Existen cuatro roles en Ia herramienta. Uno es global y los otros

tres se asocian a un proyecto:

Administradores globales (Global administrators): tendrán Ia

capacidad de realizar todas las operaciones de administraciOn

en Ia instancia, desde Ia •configuraciOn global, hasta Ia

personalizaciOn de cuadros de mando, filtros por defecto, etc.

Administrador de proyecto (Project administrators): teridrán Ia

capacidad de realizar todas las operaciones sobre Ia

configuraciOri de un proyecto especifico.

Usuario de proyecto (Project user): tendrân Ia capacidad de

navegar por todos los servicios de un proyecto, excepto ver el

côdigo fuente y Ia configuracion.

Revisor de côdigo de proyecto (Project Code Viewers): tendrán

Ia capacidad de ver el cOdigo fuente de un proyecto.

GRUPO "ANYONE"

Se trata de un grupo especial que siempre existe en cualquier instancia y que no puede modificarse.

Todos los usuarios pertenecen a ese grupo. 142

5.1.18. REVISIONES MANUALES DE CÔDIGO

El objetivo es ser capaces de asignar una evidencia a un usuario

y comenzar una discusiOn que deberla Ilegar a resolver el

problema detectado.

Una revision puede tener dos estados: Abierta ("Open") o Cerrada

("Closed")

La herramienta automáticamente se encarga de cerrar todas

aquellas revisiones tan pronto como su evidencia haya sido

resuelta.

CREAR UNA REVISION

Para crear una revisiOn tienes que estar identificado en Ia

herramienta y debes de tener el rol de usuario (grupo "Users")

dentro del proyecto donde se encuentra Ia evidencia que deseas

revisar.

Directamente en el visor de recursos, cuando pases el ratOn por

encima de Ia evidencia aparecerã un nuevo enlace para comenzar

a crear una nueva revisiOn. 143

Tendrás que añadir un comentario antes de crear realmente una

revision, pincharido en el botOn "Add comment":

EmptycIc

Eblo

*9 Is my commwl on thi mlew [ Comentar!o obligatorio bold bo j I. flthjd*WOfd I Piricha para vaIdar la creación de Ia revisiOn IMPP- _ La revisiOn se asigna al creador ] por defecto

Por defecto, una revisiOn se asigna a su creador. Si no se

setecciona, Ia revisiOn se crea pero no se asigna a ningUn usuarlo.

Una vez que se ha creado, cualquier usuario con permisos en el

proyecto podra ver Ia revisiOn debajo de Ia evidencia:

cmaim

L%M Block som I myth Msgoed to: AdffdnWftW LM 8uUnjp*p3tqii EplyonthtIodL ID de Ia revisiOn j Thmypto,4w Reasignar a otto usuarlo

obo10wo M Anadir un nuevo cornentarlo

Solamente se puede editar el ültimo comentario de una revisiOn

por su propio creador.

BUSCAR REVISIONES

La pagina de revisiones accesible desde Ia pagina de inicio te

permite buscar cualquier revisiOn indicando parámetros 144

opcionales especificos como puede ser el proyecto, el autor de Ia

revisiOn, Ia prioridad de las evidencias,

vow Iø4* ft"d______o"w____ i*y4 b No -c _ I v- - =•_ L ___ II ur 1 dyM4 yUh1 _ii 4440 jj MWdl*ø sar I A,tV.. A / 4 low f _I CF7— VW koomot)os kId I - - . how low . 004

pmn 4 Z £ Saw 4404 WO ww

Por defecto se muestran todas las revisiones asignadas al usuario

actual.

Pinchando en el titulo de Ia revisiOn puedes acceder a todos sus

detalles:

_flk tO 4$V4Ic

St4v.. • Qp.n 'ily A6 Mo Ai.igno, A*,tstnrtv.' C.**tod by; Aóitt*to. on May 19. 2011 0901

&e'* A5s1yT.dvotLcc. - a nbIt 4 t.aiy*odV*4004) 4 Anayt0dV*rt4c..AddM 4tAy7.dV.rt4o.,4, 4* - ,.4

*4 prl.t. void 80*2'chCyv1..4 47 £zoV.i-t.x .t*v p.th *.t0. t .y*.dVort1c..) O4tC4CyCL.SCUa*4 En*y catctt b4a. A 0479417.to, (.bQ'4 THO is n*y *W"xnor4 041 1t40 rs4*w 0 abo4dvid maim Coo. a b,*rt.d p44 145

MARCAR UNA EVIDENCIA COMO FALSO POSITIVO

Si por alguna razOn una evidencia se detecta como Un falso

positivo, es muy sencillo desactivarla marcándola como tal en Ia

herramienta. Simplemente basta con pinchar en el enlace de

"marcar como falso positivo":

£ rJfly sist .s I ur AaIsf is

effow COO U4oca

Q 5 (lt.AU U ier:* to $ ?vs U4sw

Kall IrS bdwvid KWM*W* /0110Z a 01(isd IIO(

Una vez ha sido desactivada, Ia evidencia no se volverá a mostrar

más en el visor de recursos. Para verbs bastarã con seleccionar

Ia opciOn correspondiente en el filtro adecuado:

OUvS(II ______ ______4 vwmiom Is 6)o., 0 * Cddca: 0 £M.or 4 V Mlnor, 0 V Info: 0 AU '4C(UUOn) Orta.auis. is.J ------ •yaU U) - CyC1$ (vcrtS. m asysodV.rtLc...addA1 ) Corrin,si - Utoratid co.dtlol tsit (2) Cycta.ssik CornpUexlly (I) Cinpiy Siot (1)

£ E*y 8iocp oa E,nply 0 (.b,* Tills Is my On.ns(4 on Ills (t145w

Hveare bold wom $OUVIS sod. SbUIaiIdCClflt

t ThIs Iss WSonal conyol Sow )nSruOn 146

Además, todos los valores de las métricas en el proyecto como

por ejemplo el nümero de evidencias encontradas será

actualizado en Ia siguiente inspección de cOdigo.

5.1.19. USANDO SONAR EN ECLIPSE

PANORAMICA

fl'( Sonar java Java Browsing De,ug Team Synchr

La API Sonar Eclipse proporciona una integracion completa de

Sonar en Eclipse para proyectos Java. El objetivo de esta

integracion es que los desarrolladores no dejan su IDE para

gestionar Ia calidad de su côdigo fuente. La mayorIa de

información que se muestra en Ia interfaz web Sonar ya estã

disponible en Eclipse.

Sonar Eclipse en Ia actualidad presta apoyo a tres casos de uso

pri n cipales:

Gestionar evidencias existentes.

Trabajar a través de revisiones.

Compruebe el cOdigo antes de cometer

CONFIGURANDO SONAR EN ECLIPSE

> Para utilizar Sonar en Eclipse en un proyecto, se requiere que el proyecto ha sido analizado primero en una forma estándar por Sonar. 147

Establecer el Servidor Sonar

Sonar Eclipse está pre-configurado para acceder a un servidor

local de Sonar mediante Ia direcciOn http://localhost:9000/. Para

usar otra direcciOn, primero tiene que definir este servidor

utilizando las Preferencias de Eclipse:

CtO*.d

CQI- h A IUOdlI

Ioom.nt t •

Ccancet)C oic )

Vincular un proyecto al servidor Sonar

Una vez que el servidor Sonar está definido, el siguiente paso es

vincular los proyectos de Eclipse con proyectos definidos y

analizados en el servidor Sonar. Esta operación de uniOn se

puede hacer haciendo clic en el botOn derecho del ratón sobre el

proyecto, seleccionando "Package Explorer", y luego en

Configurar Asociado> Sonar con

L ReStor* (ron, Locel History... I.. nr,nnt "i Associate with Sonar... Convert to P!s.g-In Projects... ProprtIrs - 391

______ 5•••••• —%•••• — ______.. .. - - ------. ------ -. -.---- -

148

En algunos casos, el proyecto Eclipse no puede automãticamente serasociado a un proyecto de Sonar. Si esto sucede, es necesario introducir manualmente Ia groupld y Ia artifactid del proyecto Sonar. Por ejemplo, para el siguiente proyecto Sonar: http://nemo.sonarsource.org/dashboard/index/orq.codehaus.sonar-pjugins:sonar-flex- Diugin, el groupid es "org.codehaus.sonar-plugins" y el artifactid es"sonar-flex-plugin'.

Desvincular un Proyecto del Servidor Sonar

Esta operaciOn se puede hacer haciendo clic en le botôn derecho

del ratôn sobre el proyecto en el 'Package Explorer", y luego

ConfiguraciOn> Eliminar Naturaleza Sonar:

Open In Sonar server Configure Ana'yse.,, popertes xi Run Local Analysis - - Remove Son3r Nature

Configurando Mylin

Un conector Sonar Mylyn permite el seguimiento de revisiones.

CreaciOn de un repositorio de tareas Sonar

Para empezar a utilizar esta caracteristica, se tiene que crear

una nueva tarea en el repositorio de Sonar (yea Ia página de

documentación Mylyn para mãs informaciOn):

ALimitaciones de Ia configuraciOn de las validaciones Validar Ia configuraciôn de las credenciales de autenticaciôn, devuelve válidos incluso Si no ha introducido las credenciales correctas (usuario I contraseña). Por 10 tanto, asegUrese de tratar correctamente las credenciales de lo contrario no será capaz de recuperar cualquier revisiOn.

149

S.t.e - .Sc rspoatt.,y typ. Vat, can connect to an elating eccot,ncu.ing one of the installed conntttott. FKU

,Sonar (acappons 29 end tasty)

Sn.c Repoeleocy S.ttiRga

SSCt h*tp./fiOc.l LoO.I Son., Vac, ID, d,nan Pasc,ycsd Teak 1411Cc S#Itls,g.

ccm - L canss1

El nuevo repositorio deberia aparecer ahora en Ia vista

Repositorios de tareas:

1Web hHotspotsf 1VoIatons Tasks LOcal -

i (' Reviews U Local Sonar Task Repository

CreaciOn de una Consulta

Para ver algunos de los comentarios, puede crear consultas

tantas como desee:

If cs.l.aityOictcibstIo#teawreVa5tie(St.haaticst()) 4.

Add Task Rspocliety_ * UpdeRsi5aCociigos4oc ES

Dtcctssecicd

- Wcbj ° Hatcpc(c 1 ' lfe4Ta&.

rk tasocc ILAk OpotRapctltoyl.*_ - A5.9i4I2 Bm SynaiwotiyrAilT.cia UEapitoq Is Prcpn(itc 150

He aqui un ejemplo de una consulta que recupera todas las

opiniones que tiene asignadas en cada proyecto:

Edt Qvevy

(trqutyposom.t,o

Poojoot K.(.]t

Aooqoodlot ytotoott .j - St.tuo Sootdt OPEN BLOCKED EDOPCNWcBmcAL ROLPEDMAIOR CLOSED MI1OR

- VE. L C.ocol -

Los comentarios deben aparecer ahora en Ia vista Lista de tareas:

I Al LL. - Ally Ro.4ows Ltol Scoot, Ti,t P.opooAo.pI 1873 M11hdo,goo., 0 3 ob..(omlTh otho ttb,OiooMt0000V,bcoLio3,.ncoo, otoing. n.g- 0 loop 0 31872: Thit tb., it bodly onood. It ohotold bo ,toc000d in QoolbyPtofl,.

NAVEGADOR SONAR EN ECLIPSE

Modos Local y Remoto

Cuando se utiliza Sonar en Eclipse, tenemos disponibles dos

modos:

Modo remoto

Este es el modo por defecto. La informaciOn mostrada en esta

modalidad a distancia proviene de un servidor remoto de 151

Sonar. Esto significa que los datos se han calculado durante

los ültimos análisis en ese servidor.

Par Ia tanto:

No podrá ver las evidencias introducidas en el código que acaba de agregar.

Las métricas (nümero de Ilneas por ejemplo) mostrarãr, los valores que no coinciden con lo que se ye en Eclipse si se ha añadido algo de cOdigo.

Modo Local

Cuando se cambia al modo local, Ia informaciOn que se muestra proviene de los ültimos análisis realizados en local.

Par lo tanto:

Se pueden ver las evidencias introducidas en el codigo que acaba de agregar.

Las métricas (nUmero de lineas por ejemplo) mostrarã los valores que coinciden con lo que se ye en Eclipse si se ha añadido algo de cOdigo.

Cambiar de un Modo a Otro

Para cambiar de un modo a otro, haga clic en el proyecto, a continuaciOn, seleccione Sonar> Mode> Control remoto a local: 152

Maven

-, Sonar - P Open n Sonar terver Sour - Mode f Remote Configure P urr Local Analysis oal Propeaties Alt*En Remove$onarNature I

Las caracterIsticas serán marcados como remoto y I o local

en funciOn de su disponibilidad.

Vista de Sonar Eclipse

Sonar Eclipse ofrece una perspectiva de Eclipse y cuatro vistas

de Ia herramienta. Estas vistas de Eclipse puedes usarse fuera de

Ia perspectiva Sonar Eclipse, pero este tutorial describe el diseño

predeterminado de Ia perspectiva de Sonar Eclipse.

Para activar Ia vista Sonar Eclipse, haga clic en Windows => Abrir

perspectiva => Otros ... y seleccionar Sonar: 153

Vista de Métricas (Local o Remoto)

La vista de métricas permite reunir todas las medidas disponibles del recurso seleccionado. La mayoria de las veces, los desarrolladores centran su atenciOn en sOlo unos pocos parâmetros como Ia complejidad, Ilneas cOdigo cubierto por las pruebas unitarias, las lIrteas duplicadas, etc. y necesita obtener una visiOn rápida de estas métricas. Por esta razOn, las métricas predefinidas se muestran en Ia parte superior de Ia vista de las medidas. Se pueden añadir o eliminar las métricas de Ia lista de favoritos haciendo clic en el botOn derecho del ratOn sobre el nombre de métrica:

Wasures

Vavourites FUritëmétrlës Complexity 53 DuplIcated tlne Uncovered IIns 65 Vtolatlens Is VCOmpxhy Complexity 553 Complexity Iciass 50.3 Complexity fBte 52.6 Complexity method 2.1 Uncovered texity 27 VOesign LCOM4 Package Lartgie index Rrc Suspect LCOM4

Vista de Evidencias (Local o Remoto)

La vista Evidencias muestra Ia lista de evidencias del recurso seleccionado (proyecto, archivo, etc.): 154

Web f Hotspof"1 Violations_f , V - Redundant Modlfl.CodeBuffer,jar,a Redundant Modifier: Redundant 'final' mOdifier. /sonar-cltannei/src/malnf dL Bad practice - CIa'Codefluffer.Java Bad practice - Class defines clOneØ but doesn't Implement C/sonur-channel/src/maln/ £ Performance - Cot Codefluffer.Jitva Performance - Could be refactored Into a static Inner class: (tonsr-channel(src/maln) £ Preserve Stack Tea CodeReadeejava Preaerve Stack Trace Olew exception it thrown in raids blo< /sonar-channel/srcjmaln/ Insufficient brand' ChannelDispatcher.jr Insufficient branch coverage by unit tests 6.S branches net /sonar-channel/src/malnj

Vista Hotspots (Remoto)

La vista Hotspots permite identificar rápidamente los puntos

de acceso a los archivos de acuerdo a las métricas definidas

en favoritos (definida en Ia vista de medidas). Por ejemplo,

puede ver los archivos con el mayor nUmero de Ilneas

duplicadas, el mayor nümero de evidencias, el mayor nUmero

de lineas no cubiertas por las pruebas unitarias, etc.

Web Hotapots V1oIatlons" sonar-channel

Hotspots by [Complexity -

Resource TCompbexttv COdefluffer 51 CodeReader 33 ChannelCodcReaderp lIter 9 ChannelOispatcher 9 CodeReaderConfiguratlon 4 CodeReaderFilter 3 ChannelCxcepelon 2 Channel 1 EndMatcher - I -

Vista Web (Remoto)

Esta vista muestra el panel de control Web de Sonar (para los

proyectos y paquetes) o Ia vista web de Sonar para los

recursos (para archivos). Esta pâgina web se puede utilizar

para acceder a información y servicios (nube, mapa de

árbol,...) que aUn no están disponibles de forma nativa en

Sonar Eclipse:

155

LWTrI *tQt ------ - --.------ -. ,monn

Unso of eod. Rulas oOmplt.nc. VIolMions 466 11 87.2% 5 1000frUS 1 060,80ft Figs 102 statwFw4s 54 mMhFidk eg _...-\ 14 r \ 10 cecu >g I MrèQf 4--- ' ' Tacitnlcal Dabt 0 42%

Trabajar con Sonar en Eclipse

Gestión de las Evidencias Existentes.

Al pasar el cOdigo fuente en el Sonar Eclipse se destacarán

las evidencias existentes.

DetecciOn de una Evidencia.

Mediante Ia vista de Evidencias se muestra Ia lista de

evidencias del recurso seleccionado (proyecto, archivo, etc.):

1Web ri Hots pots fl VIolatIons ic esouce Descdption jPMh i Redundant ModlfliCodeBuffeejava Redundant Modifier: Redundant 'flnil modIfier, /sonar-channel/src/nsaln/ £ Bad practice - CIa CodeBufferjaya Bad practIce - Class defines cloneO but doesnt Implement C/sna,-channel/srclmaln/ * Performance - Cot CodeBuffer.Javis 'Performance - Could be refactored Into a stalk Inner Class: /aonar-channel/secfrnalnj Preset-re Stack Tea CodeReaderJava Preseive Stack Trace New exception is thrown In catch bIo/sonar-channeI/src/maInJ Insufficient brancl'ChanneiDlspatcher,Jalnsggfflcltnt branch coverage by unit tests: 6.5 branches nce/sonar-channel/src/malnj

Un doble clic sobre una evidencia abre el editor de cOdigo

fuente y se destaca Ia evidencia:

[181 !Pub •O. 1 {

) cotch (1OExcepton c),f - - -- throw new ChonnelEecepiion(e.getMesscpQ); --

-..-. 156

Una vez que una evidencia se ha solucionado, se eIimna

haciendo clic en el icono de evidencia y, a continuaciôn,

Eliminar. La eliminaciôn de una evidencia también Ia quita de

Ia vista Evidencias:

pubtic float void pop(Appendable appeodoble) try( Oppcndobte.oppend((char) popQ); } catch (IOExcepiion c) tItrownc ChannctExcpUn( aoMessa9<))fr eete volation(Preserve StackTrae) 1TemporarUy hide Peietve Stack Trace violation Remove catch clause - - 0 Extract to method Replace catch clause with throws

Creación de una RevisiOn (Remoto)

Si por alguna razOn no se va a arreglar una evidencia de

inmediato, pero cree que debe ser resuelta, puede crear una

opinion sobre Ia misma.

Create rviw (Pesfonnance Method concatenates stilingsJ eIete violation (Performance- Method concatenates string

2 t ove surrounding if Otatemant block to statement

o

157

RSVw Loxal Son., Task Ropogltoey 4 I c;. — Petlonnance - Medical roneettena(e5 stringS using 4 in a IOois

AtItibales 1.0 PSnd Rnourn.

Shedal.di tlhr*Wneii a Dam LCow0at -J £tt.ewtt 10 j UewCmnnst

-

1° So,s.t

Trabajar Mediante las Revisiones

Es posible crear consultas personalizadas para mostrar los

comentarios en Ia vista Lista de tareas:

El Task lISt (Flnd 0 All S Activate... My Sonar ReviewS (0105,01 12: New exception Is thrown in catch block. Original stack trace may be lost - 13: The class Org.sgnar.chunnei.Co009ufferlflltor could be rcfaCto.cd into a ..statiC_ Inner Class 0 14: 1 branches need to be covered by Unit tes ts to roach the minimum threshold of 65.0% branchover cage. 5 0 16: org.s000r.plugins.sguId.decoratOrs.ChldambnrKnmere,QlutributioflguilderLceM4 LIMiTS should be Dockage protectnd 5 17: org.t000r.ptugins.squld.dncoratorscflIflambe,gnme,erOi,tributionguIlde,Rpc LIMITS should be package protected IS: org.sonisr.plugins.sguId.decorasors.FuoctlOncomptnniWDlssributIonBullder LIMITS should be package protected 10 J 19: Must include both @Java.lang.Dcprncated annotation and @deprecated Javadoc tag with description. 020: MUSt include both @java.lang.oeptcca,nd annotation and @depreca,edjanadoc tag with description. 122h g on olo (r'i ii DTok I 51 1db f so ed3nto nd_ i _ r ' sQ 21 switch Without defauls ctause.

A partir de ahI, hacer doble clic en una revision abrir los detalles de

dicha evaluaciOn:

ItDt6on.r.oh1gwsncud.aprw.,nrscc,aamsnoc.war.,ol.,r. i v - . -- - ReView 16

— Should be package protItcIed STaTUs OPtU Cratea ..V22.2021 ModIkrtI May 22. 2011 9:52 PM 1.sttrlltat.0 nnponcr Vrcddy.mallnt Own,, _.. lreddy.maliet clod VIOLATION Resource Oru.COdntMo*.t000I aiaains*onor-.oai *.Chldawberco,nnwroi.trlbutionpailpn,

COmn.n5o tOt c-i 0 i: r,,.dd,.,,,Iict. M..y 77. 3011 CS7, PM C Indeed dec.tasn the ol.jbIIiIy rrom public to 0.-otcoted shoUld net hanS 000510. oflnci 158

Todas las operaciones de reseñas disponibles a través de Ia

interfaz web Sonar tambien están disponibles en Mylyn, por lo que

una revisiOn puede ser comentada, fijada, reasignada, marcada

como falso-positivo y abierta de nuevo. Además, una revisiOn se

puede crear directamente desde el editor de cOdigo fuente de

Eclipse en una evidencia existente.

Limitaciones conocidas Esta extensiOn Mylyn cuenta actualmente con las siguientes limitaciones que serán rápidamente corregidos: No existe una manera de crear una opinion que no se refiere a una evidencia existente No existe una manera de crear una consulta Mylyn con filtros con elfin de, por ejemplo, recuperar Unicamente opiniones sobre un proyecto, o revisiones asignadas a otro usuario No existe una manera de añadir un comentario a un plan de acciOn: SONARIDE-286

Comprobacion de código antes de hacer commit

Al agregar o cambiar el cOdigo de una aplicaciOn, Sonar Eclipse

ofrecen Ia posibilidad de mostrar Ia calidad de este codigo antes de

incluirlo en Ia SCM.

ALirnitaciOn conocida en los servicios diferenciales Este caso de uso no es actualmente del todo compatible. Sonar Eclipse no. proporciona un modo diferencial. Por ello no es posible diferenciar qué defecto existia antes de lo que ha sido añadido por los cambios.

Análisis de EjecuciOn Local (Local)

Por defecto Sonar Eclipse se encarga de recopilar

automáticamente Ia informaciOn desde el servidor Web Sonar. Este

modo predeterminado es bastante Util, ya que no consume CPU 0 159

Ia memoria en el ordenador del desarrollador mientras rápidamente

mostrar informaciOn de valiosa calidad tan pronto como un nuevo

archivo fuente se crea.

Pero si un montOn de código fuente ha sido mod ificado a nivel local,

Ia informaciOn de calidad disponible de forma remota puede estar

muy desincronizado después de un tiempo. En ese caso, un

anâlisis local se puede ejecutar antes de cualquier cambio en el

repositorio de cod igo fuente y con el perfil de calidad que se utilizO

para analizar el proyecto de forma remota.

Para ejecutar un anâlisis local, se necesita cambiar al modo local.

Tan pronto como se selecciona este modo se pone en marcha un

anâlisis local para actualizar las evidencias y vistas de las métricas.

Maven i. 1. - - Sonar Open in Sonar server Soura& - Mode - 0 Remote Configure'% **un Local Analysis Local

Properties Alt.E - Remove Sonar Nature

Posteriormente, en cualquier momento, se puede ejecutar un

nuevo análisis local, haga clic en Sonar> Ejecutar Análisis Local.

, djTengacuidado Incluso en el modo local, los puntos de acceso y puntos de vista Web siguen mostrando datos remotos. 160

CONCLUSIONES

Se ejecuto un estudio detallado para Ia respectiva certificaciôn de

codigo Java, donde se detectan vulnerabilildades en las aplicaciones

webs que deben ser corregidas. En primera instancia se realiza una

revisiOn general del codigo fuente, asimismo se describe el uso de Ia

técnica para ejecutar el respectivo análisis, en cumplimiento de los

estándares de calidad.

Existe un grado de asociaciOn significativa entre las variables

dependiente e independiente, tomando como referencia el

cuestionario dirigido al equipo que elaboran proyectos de software de

Ia consultora Ever, mediante el valor calculado o funciOn prueba

(Tc= 2.8466) y el valor de Ia tabla "T" student (T= 1.8125), aceptando

Ia hipOtesis alterna.

Se evaluo las métricas del Sonarqube 4.0 por: tamaño, pruebas,

duplicidad, diseño, complejidad, reglas y SCM, para Ia verificaciOn Si

los cOdigos cumplen con los requisitos establecidos y asi el anãlisis

sea eficiente. 161

SUG ERENCIAS

El encargado de los proyectos informáticos, debe realizar una

propuesta para el análisis del codigo Java, dentro del ciclo de vida de

desarrollo de los sistemas informaticos, con mayor énfasis en las

metodologias agiles, ya que se alinean mejor a las métricas de

evaluaciOn del Sunarqube 4.0.

Los analistas de los proyectos informáticos, deben solicitar Ia

aplicaciôn del Sunarqube 4.0 en cada modulo implementado, para Ia

respectiva fiabialidad en Ia certificación del codigo Java, asi evitar

errores de cod ificaciOn en Ia entrega del proyecto.

Los desarrolladores de los proyectos informáticos, deben realizar el

análisis del codigo Java de manera continua, mediante Ia herramienta

Jenkins, dado que realiza Ia integraciOn automática y detecta fallos,

siendo necesario para determinar las vulnerabilidades. 162

REFERENCIAS BIBLIOGRAFICAS

Aguilera DIaz, R. (2014). Analizando Ia calidad de/ código Java con Sonar.

Obtenido de https://www.adictosaltrabajo.com/tutoriales/utilizando-sonar/

Alba Castro, M. (2008). CertificaciOn automática de propiedades de seguridad de

cOdigo fuente Java en logica de reescritura. Valencia - España:

Universidad Politécnico de Valencia.

Alegsa, L. (05 de 12 de 2010). DefiniciOn de codigo fuente. Obtenido de

http://www.alegsa.com.ar/Dic/codigo_fuente.php

Alvarez, M. (18 de 07 de 2001). DescripciOn y caracterIsticas de este potente y

moderno lenguaje de programación. Obtenido de

http://www.desarrolloweb.com/articulos/497.php

Bavera, F. (2006). CompilaciOn y certificación de cOdigo mediante anal/s/s

estático de flujo decontrol y de datos. Montevideo - Uruguay: Universidad

de Pa Repüblica.

Bernal Bermüdez, J. (2012). Programacion Orientada a Objetos con Java.

Madrid - España: Universidad Politécnica de Madrid.

Cambel!, A. (2016). Documentación SonarQube. Obtenido de

http://docs.sonarqube.org/dispIay/SONAR/Documentation

Caro, F. (16 de 09 de 2010). Sonar: Medida de Ia calidadde tu código. Obtenido

de https:Ilwww. paradigmadigital .com/dev/sonar-medida-de-Ia-calidad-de-

tu-codigo/ 163

Casañas, M. (2014). Qué es software libre. Obtenido de

http:Ilwww. casa nas. corn. ar/attachments/Que_es_-_A_-

_Conc_tecnicos.pdf

Cruz Vilchez, F. (2012). Pro gramaciOn en Java. España: Universitaria Andaluza

Inca Garcilaso.

Dávila Murillo, P. (2010). Software para controlar Ia calidad en el desarrollo de

software SONAR. Guayaquil - Ecuador: Universidad de Guayaquil.

Diccionario informático. (09 de 2011). Diccionario para informáticos. Obtenido de

http://files.sld .cu/redenfermeria/files/20 11 /09/diccionario-inforrnatico.pdf

Garcia Oterino, A. (09 de 05 de 2014). 6 Qu6 es Jenkins? Obtenido de

hftp://www.javiergarzas.com/2014/05/jenkins-en-menos-de-1 0-rnin .html

Garcia, L. (03 de 12 de 2013). 6 Qu6 es SonarQube? Obtenido de

https://unpocodejava.wordpress.com/201 3/1 2/03/q ue-es-sona rq u be/

Gaudin, 0. (29 de 11 de 2016). Requisitos para SonarQube. Obtenido de

http://docs.sonarqube.org/dispIay/SONAR/Requirements

Gigleux, A. (15 de 04 de 2016). Arquitectura e Integracion. Obtenido de

http://docs.sonarqube.org/display/S0NAR/Architecture+and+Integrat ion

Hernández Sampieri, R., Fernández Collado, C., & Baptista Lucio, M. (2014).

Metodologia de Ia Inve.stigacion. Mexico D.F: McGRAW - HILL.

IBM. (2015). SPSS Statistics Base. Obtenido de hftp://www-

03.ibm.com/software/products/es/spss-stats-base 164

JavaSun. (2014). CaracterIsticas de Java. Obtenido de

hftp://www.oracle.com/technetwork/J*ava/index.html

Jenkins. (2014). Jenkins: Construir grandes cosas a cualquier escala. Obtenido

de https://jenkins.io/

Kawaguchi Kohsuke. (30 de 01 de 2011). Use Hudson. License. Obtenido de

http://hudson.gotdns.com/

Ospina Delgado, J. (2015). Análisis de seguridad y calidad de aplicaciones

(Sonarqube). Manizales, Colombia: Universidad Obterta de Cataluyna.

Párraga Garcia, I. (02 de 2003). Curso de Java. Obtenido de

http://dis.um.es/-bmoros/privado/bibliografia/cursoJava.pdf

Perez Porto, J., & Gardey, A. (2012). DefiniciOn de cOdigo. Obtenido de

http:Ildefinicion.delcodigo/

Zamora Herrera, J. (2012). Conceptos basicos. Obtenido de

https://mind42.com/mindmap/1 c2 1 44bd-2 I 2d-4 1 69-92fc-

21 44e7c954b7?rel=pmb ANEXOS - 0 a) a) U) a) U) 8 ca — U) '0 C 0 '9 U) 3 0 o co oo C/) co2' 0 -8' N - - - N o 0 0 .0 - U) 0 .2' :2 .L ID .2 " w - - o L. () -J (1) C 0 0 U) a. 20 U) > 0 a) w - -J w C 0 cc z Cl) '0 o Ca) V. 0 z :-w 0 'i- U) 0 F- Lu U) 0 - U) 0 z 2a 0. w Z '0 U) a R a) > 2 w U) I- a a - w N 2 a) a) I- U) C C C V a) U) 0 0 E5 a) U) CU U) 4 - " 09) U) a) C cu 0 EU) 0 o I— C a)3 30 x Z (1) C 0U) 'U V .2. cn .2' z Fn - 0 :9 U) U) a) a) a) V U) a) C - 0 - U) '8 U) 0 U) C 0 -a)> U) 0

o (N z Q Q U, C U) U) '—O (U)p 0 0003 o ° oc DC!) . - - 0

Cl) a) o . . CCo Cl) a) 00 w E 0 —J 0 ct 0 2 —J w 0 F- I— Cl) CD D z w w— 0 —) zCl) I a. N 0 Lu z 0 Cl) c C V 0wc', cu VC', C z -o c..) C3 M 0 C', C - 5 Q . m C', L. 0 D 0 U) L 0 w . —LL0DWUJ CL

U) >0 C', U) — — — — — a :2 . 2 V O Cl) D (I) U- a cn ci Va, E .2 0 a) 0 - U) 0 z co 2 O > C) wCca) cn I— U) LU z o __- > '0 Z z wO CE U) 'WC () 0 LU LU I—w o 3S2 p > > M JC1) W OW > 06 WO- (#)C 0 U) 8 a)'C C 01 V 0 - C Oc zZa) W- - C.) Wo WF U..Q 'W 0co X U) p< ZO 0C a...— U)UJ —— 0 z (W)aj Ccca) OcCa) a)o VV _> u-i 8 CC F- >a) C -) (I) (I) z U) C) 0 o'O 0 LU oil $ C V _ w 01 _0.) . 0 01 Wc:Q (I) N Ir'xOC' I I'Cao. a) Of 01 Ei3° >' — CUC2LOWQC 0 ' C - CLU C) 0 () . (I) .0 0 0) C - W I , : O0)CaU) Wa)u 75 a) WECCW 000C0W V C 0 V -00 C •C - > V 0 C WC .o . >s €0>uc0 0 Co U ' 2 w ° . 2o38 z 0 ) ot 0 >— C'-ot w .i Q) 10 w (I)V _cC'2 ol -' '-0 0•000 0)0Cao L. ol a) W wC0E >' CL a)6u,oE'.2oCt J 2 . SC2 I ) ) 0 ca Cl) 0 0) 0. W (I) .0 0 0) 0. QIaE'8 wi .- WCaU(I)W a)WWCOCI) 000a) . V V > V 0 V V .0 •C C 0 C o E - cu O_' >1 cO E' 0 . Z "0) °E Q)C0C0C ' C) o 0 0 . c

a) VOo CC U) a) () ("Ca caa)) 01 a)CaC • iEo 01 ca'2icaV EoQ 'I _0. Ca>O a) WIE2 wi j '0 0) (1)1 '0a) _ 0. a) Ca O O .,)U)Oa)Q. øLOV WI 169

ANEXO 4. CUESTIONARIO DIRIGIDO AL EQUIPO QUE ELABORAN

PROYECTOS DE SOFTWARE DE LA CONSULTORA EVERIS

"La aplicaciOn de Ia encuesta busca determinar Ia influencia del SonarQube 4.0

en Ia mejora Ia certificaciOn de cOdigo Java en una consultora de proyectos

informáticos".

Numero de cuestionario:

Fecha:

Codigo de encuestador:

Señores a continuaciOn se presenta un cuestionario para su desarrollo. Usted

debe señalar con un ASPA (X) que tanto está de acuerdo con las preguntas,

marcando correctamente dentro del recuadro.

PREGUNTAS ESPECIFICAS

1 2 3 4 5 Muy malo Malo Regular Adecuado Bueno

N° PREGUNTAS ALTERNATIVAS

SONARQUBE4.O.

,Cômo califica Ia funcionalidad del SonarQube 4.0 en Ia P01 2 certificaciOn de cOdigo Java?

,COmo califica Ia confiabilidad del SonarQube 4.0 en Ia 1 P02 2 3 4 5 certificaciOn de cOdigo Java?

,Cômo califica Ia usabilidad del SonarQube 4.0 en Ia P03 2 3 4 5 certificaciOn de cOdigo Java? 170

,COmo califica Ia eficiencia del SonarQube 4.0 en Ia PO4 certificaciOn de cOdigo Java? 2 3 4 5

P05 ,COmo califica Ia eficacia del SonarQube 4.0 en Ia certificaciOn de codigo Java? 1 2 3 4 5

COmo califica Ia portabilidad del SonarQube 4.0 en Ia certificaciOn de cOdigo Java? 1 2 3 4 5

CERTIFICACION DE CODIGO JAVA - - - -

P07 ,COmo califica los reportes emitidos del SonarQube 4.0 en Ia certificaciôn de cOdigo Java? 2 3 4 5

,Cômo califica Ia verificación del SonarQube 4.0 en Ia P08 certificaciOn de côdigo Java? 5

,Cómo califica los procesos del SonarQube 4.0 en Ia P09 certificaciOn de cOdigo Java? 2 3 4 5

4C6mo califica los recursos del SonarQube 4.0 en Ia c certificaciOn de cOdigo Java? 2 3 4 5

,COmo califica Ia satisfacciOn del SonarQube 4.0 en Ia P11 certificaciôn de codigo Java? 2 3 4 5

Gracias por su colaboración 171

ANEXO 5. VALIDACION DEL INSTRUMENTO

CONFIABILIDAD Y VALIDEZ DEL INSTRUMENTO DE MEDIDA.

El Alfa de Cronbach, evalüa Ia fiabilidad consistente de los datos. Dicho coeficiente examina Ia uniformidad, es decir, Ia cantidad de datos ingresados que se compone mediante una escala. Asimismo conocemos que el valor se encuentra entre 0 y 1 para considerar que los datos no se encuentren dispersos y exista correlaciOn el Alfa de Cronbach debe ser como mInimo mayor o igual a

0.7, es importante señalar que a medida que mejore el coeficiente, existe mayor confiabilidad de los datos.

ANALISIS DE FIABILIDAD.

Resumen del procesamiento de los casos

N % Válidos 16 100,0 Casos Excluidosa 0 Total 16 100,0 a. Eliminación por lista basada en todas las variables del procedimiento.

Estadisticos de fiabilidad

Alfa de N de Prueba Cronbach elementos PreTest 0,844 11 Post Test 0,822 11 172

ESTADISTICOS TOTAL DE ELEMENTOS (PRE - TEST)

Varianza Media de Correlaci Alfa de de a Ia escala On Cronbach • escalasu No su se elemento Si se se elimina eI -total elimina el elimina el elemento corregida elemento elemento P01 18,6875 22,363 671 ,819 P02 18,8750 25,317 ,327 ,846 P03 18,9375 25,263 ,399 ,840 PO4 18,4375 22,929 ,589 ,826 P05 18,6875 22,096 710 815 P06 18,5000 22,800 564 828 P07 18,8125 22,296 ,715 ,815 P08 18,5625 26,396 ,127 ,864 P09 18,6875 23,563 580 ,827 P10 18,8125 22,296 631 ,822 P11 18,6250 24,383 ,489 ,834

ESTADiSTICOS TOTAL DE ELEMENTOS (POST - TEST)

Varianza Media de Correlacu Alfa de d e a Ia escala On Cronbach • escalasu No si se elemento su se se elimina el -total elimina el elimina el elemento corregida elemento elemento P01 42,6250 20,117 406 ,819 P02 42,5000 20,267 ,523 ,805 P03 42,3125 17,829 ,864 768 PO4 42,3750 21,183 ,508 807

P05 42,7500 20,333 1493 807 P06 42,5000 18,800 599 796 P07 42,1875 20,563 593 ,800 P08 42,5625 20,929 443 ,812 P09 42,3750 20,650 503 807 P10 42,3750 22,517 356 ,819 P11 42,3125 22,229 ,195 ,836 173

ANEXO 6. MANUAL DE USUARIO JENKINS

1. ,Como acceder a Jenkins?

Para acceder a Jenkins lo primero será acceder a Ia siguiente direcciOn URL:

http://1 0227.8.15:8080/

Una vez ingresado a esta direcciOn URL aparecerá Ia siguiente ventana:

ia,caXka, ,,_ a

S

( *MrnMWa-,U,ot, 92*.'a,a.ar',. a-. fldI. G - M* ta-Lai 92.-fl a at CD *2 0

at *aau*.,a,.aa,a,,aau ii a..

- - WJ.'299 aa'L £14 a **s924.fl a a-c

0 92L*tafl flat.,. .14 tao'... an ao..a-.

La-aLit.., MU itt La.

2 ILLLLOZ92.' a. a-a *4 a a..ld, La nit

, a-'. iatd*O'*L . La £SL*iU* 14 " %*4t

tic 1al a-a,

1.1. Nuevatarea

Para crear una nueva tarea el usuario deberá dar clic en Ia opciOn

"Nueva Tarea" tal como se muestra en Ia imagen posterior. 174

wrr6ior

j5033

is nwb," i,jsn UIun,aesuo proreen, H00OOOdt T6,Tw, Q , I Moo 26 dioo' 002 va I Mi. 275% priasr sTore oroosco, TOd5 we 1 01 217 .- Cocarthor6rr, Is OTIOTOS

1r1cu 2 Me, 29 dl.,. A. 2 Mn 29 do, 77 0 MIr 075%

0919o,vJ,r, Cr45616 dl,,' 2? 000 Hir 30 Sos 10 Tr.bo7000nI060Io 6 Tr,yrroboj I Q too' .orr..a er. 3 Mn 19 dia, 3 o19710 65% 5Modod5Isent4 6Mrnld 66. j Q 77.21 FN .21 5655 I 96 00555 0 Q . Pp415r7rçH lMe,I2dl- 600 160335%

r..', 0I00~200006 20dCoo.77 257142007 3Mc3ISss 0

Luego de haber dado clic en Ia opcion "Nueva Tarea" aparecerá Ia

siguiente ventana:

T0d0 NsonbredeIaTarva['

C Crear un proyecto de estilo libre 00020617 taOs es ta caradedstica pnnap& do Jeatros In de eososnr d proyeato cornbiraMo cualper tipo de repoutono de software (SCan) can alnIquer rsodo de HdoanaItrdoaios casutrucoar, oejscuciao (make ant. TWO rnkeoscrr ..,), Par torts us podrd tanto corrotaryemmpaus or software, sonic ejeotar 2051770$ pr515so 725 05721970 mondoozeIbo. R000n 000175010670003, C Crear on proyecto maven

.LCusoorobnrSr0rcde nrthvor EjecLita roason. Onobmu 55 CIPaz de aprcv€thar cWO7Urao3o presents am Its tctrros POM reduciendo drdsticarnonte In camfiguraödn.

17dm 7rlrO?JlnIOnr ', C Crear on proyecto multi-conlIqurocide / 2.decuado pars proysatos qur reowerar. un 71cr, nLrnsro de cart ipurnoosos trfererteu, conic teatear er mutipdes ertonros, ejsar sabre plotatormas OOT5t95 SIC. C Monitsrtaor una tarea externa

Trabajooenlacota . ...... Outs 17po de areas In perr07e reqiutrar In ejeouciom de un praceso eXier700 Jodosu, atciuso en una mequorra remain. Esta doemHdo parS UsSr Jerkes 00171027 No boy trobapss an Is cola panel do control dotu uiaceorn de adlorrrotoacidr. Para mar nformaci6n corruta sale 2ja.

totadodelorcutor de C Copiar 091 Tarea euisteste cOenteUccisres Coprardesde1 — I Olnadova

Aydanosatrstuar eats adorra. Ptqero panror320: lti'IC2?01404O0010PTT 00010001 )arkbsover. 1.049

Para iniciar una nueva tarea debemos registrar el nombre de Ia tarea y

seleccionar el tipo de proyecto a emplear (Crear un proyecto de estilo

fibre, Crear un proyecto maven, Crear un proyecto multi — configuraciOn,

Monitorear una tarea externa, Copiar una tarea existente). Para este 175

caso seleccionar Ia opcion "Crear un proyecto de estilo libre" y dar clic

en "OK"

terurko iodnt

books 0. Ia rssIiE PotUEB 4 st C,.., on peoyedo d, easilo libm Estee,, oerea,rtottoe prtr,dp,I de Jenstra, tote ejeoutorel orotesto combmo,dn tuattutenopo 6e rn000ltono 0, ,0.were (SCM) con ousiqui,r modE 0a Hist~W de conotruoston a ejeojoEr (make, art, my; note, script .,J, Pot trios, podri tarot oompilar y ,mpeqoeten00000are, mono ejeo,tar cuelguter pro0000 toe

S4_tisuairuozptt Cre t peonotm en !Jktjo'- Ejeouta on otoyC010 ntaVetr. iekrno IS cepe, de eprovoottar 11 oonl(ora000 preponte en ba totem, Pont, redoojedo drddkemenp. I. contu;oneotn.

'u"rrrt.r ' C' clear on trotted, munto-csnflgu,aontn - - , Adeocado pore prOyedoa gun reguieren Ott QTbt ndnnerod, cordpereoonea tiferenu,,, Corny testren en nnutcpiee enoorno,, aje0000r Sabre ptetetormo, cEd1) Concrete; Sty,

- 0 MorItoelsa, one tare, ante,., Ito j .n0c -- -. .0 Eats tOo 0, torect in tempt. regttnor I. eotcuodr de ur protean notemoa )er,ic,ns, indun en one mabu,na remote. paid disetedo per, user tensors Contour Ore. 0 -1dl comet 0. Par. mi, ntonnr no ocn(uoyro btintic)_uti-. 0 Ce.ie, cc,. Is,.. outatente

Copier deed - - - J

Luego de haber dado clic en Ia opciOn anterior se abrirá Ia siguiente

ventana donde se realizaran los siguientes pasos:

htecmnucucmni ...... : I '- 2

0.onOeSec. tO 0.t utcastoor - )0.suc.t5ee -tnOnnoa

otoMormo4nmocMsagianr,,c,m.._.._.._ - Ou.

L'1 toed.. u otmonuotem ° 4 ______

o OeseoO,u. — oernO.'t,,cnn.s - i-,. .3.sM.ce

OI,...ce. ,.n,uton.Oa.toi

/ 1

-

8 uoot-rJ

WAnnee.aa MoauOtau tOoeoe. oj.,,o u.,, — oo-anojrn *oyuo..onr.ueoo 176

En esta secciOn el usuaro registrara el nombre del proyecto tal como

se muestra en Ia figura siguiente (1).

Ingresara Ia descripciOn del proyecto (2).

En Ia secciOn Configurar el origen del codigo fuente, marcar Ia opciOn

Subversion (3).

Ingresar Ia URL del repositorio, esta es Ia ruta de origen donde se encuentra el proyecto, ejemplo (4). https://1 0.227.8.1 5/svn/BCP/01 INICIO/Ol .02. Metodologia/Ol .02.01.

Metodologia BCP/02. Internet Physical Banking/Ol.

Telecredito/1 . Documentacion/Archivos Class Sonar/TB I E/TLC

Seleccionar Ia credencial del proyecto (5).

En Ia opciOn ejecutar en Ia opciOn añadir un nuevo paso, seleccionar

Ia opciOn "Invoke Standalone Sonar Analisys"

Ariatfir un nuo ipeso

Build a Visual Studio projed or solution using MSBuild Ejecur un comando de Windows Ejecuthr linea de cornandos (shell) FxCop exec.

ndalone Sc..

Eecuthr th raven de nivel supenor

Una vez seleccionada esta opciOn ingresar el JDK del proyecto, para este caso Ia versiOn a utilizar será el Jdk 1.7 (6).

En Ia secciOn Project properties copiar el siguiente cOdigo: 177

I/Texto a colocar

# Required metadata sonar. projectKey=java2-sonar-runner-si mple sonar. projectName=TBI E-CLI ENTE sonar. projectVersion= 1.0

# Comma-separated paths to directories with sources (required) sonar.sources=API-Pabe/src,API-

PabeTO/src,Broads/src, Frameworklsrc,TlcBackOfficeEJ B/src,TlcBac kOfficeWeb/srcTIcBO/src,TlcClient/src,TlcEjbProj/src,ticTO/src,TId

Web/src

# Language

sonar.language= Java

It

Las Ilneas marcadas son editables por ejemplo el projectKey es el key

del proyecto cada key es ünico e irrepetible si se coloca un key

repetido eSto generaria que se reemplace el key anterior y se altere

en los resultados.

El projectName es el nombre del proyecto este campo también serã editado y aparecera en Ia vista de resultados con el nombre que se le

indique.

Ejemplo 178

sonar.projectName=TB!E-CLIENTE

J 11rl41 11 Mts 17 As 1/1 62/0 I Mia 30 S TrabaJalcallcoIa .) Epo1avaanaoar 3Mes202/as2/ 2Haa20daafl 36Sa

Estedo del cletutor de - - - - 9 6 M. I 2/a. L24 6 Has 6 2/as ifi I H/all Sa

eo/0diQl IHaa2dias2/3 1610 1611750317

9 20dtas1 20das/0 3I1m3ISa

PAGM 14d/as2/2 110 2IH/205a

19 f2/9iI 27 dial 2/fl 21 dla - 2/fl 3 H/n 43 SI 0 9 O PAG/0/0100/T I 13dias-!1 46'O 2Hin455a2 0 9 0 E0Q/0L3 24diaa-/j /00 24/n515eQ 9 mum 302/las-fl 002/lao-fl IlHnS5a3 0 9 2 Ills 22 2/so. 32 61/0 0 (sn I 319 9 asdarnas oanaos 0 pieoias - ij /03 0 Min ;Se

I1fl5A1Qi 31ds- E 61/0 oN/n 22Sa9 0'I I , 2260a-sJ /03 13 K.

TOIl P1/275.2 /00 N'D 1/0

Y por Ultimo se edita el "sonar.sources" indicando el paquete de

fuentes

Nota: Empaquetar los elementos de fuentes Si es que no contiene el

directorio source o Ia carpeta src, para empaquetar los elementos

deberá generar una carpeta con el nombre "srcl" e copiar todos los

elementos del proyecto dentro de Ia carpeta src/ tal como se muestra

a continuaciOn:

AMML VISUALSVNSERVER

BC!- Fuentes - Revision 4335: /Empresas/PGNT/Fuentes/CommonCtases

JsrcI - L sonar-project.properties . 179

8. Para finalizar dar clic en el botOn "Guardar".

Luego de haber realizado los pasos para Ia configuraciOn en el punto

anterior, usted podrá visualizar Ia lista de proyectos a ejecutar entre

los cuales visualizara el proyecto generado tal como se muestra a

continuaciôn en Ia siguiente imagen:

27dIas-6 1Mes4das•1 10Mm

Una vez localizado el proyecto generado dar clic en el botOn

"Programar una coristrucciOn" (.

Y a continuaciOn en el panel izquierdo en Ia secciôn "Estado del

ejecutor de construcciones" se observara en el estado que se estã

ejecutando Ia barra de tareas del proyecto.

Trabajos en la cola No hay irabajos enla cota

Estado delejecutor de construcciones Estado

Tfjecuthn dose TBE CLIENTE

Cuando Ia tarea se ejecutO correctamente al costado de Ia tarea se

observa el icono de color azul ( ) esto nos indica que Ia

configuraciOn se realizô de forma correcta es decir Ia salida de consola

estâ en estado correcto tal como se muestra en Ia imagen siguiente: 180

Historia de tareasTendencia)

) 2 14/10/2014 10:44:40AM

14/10/2014 10:32:05AM RSS Para Todos R11 RSS para los tj crrecto> Salida de Qnsola error!J

De no ser asI el icono que aparecerá será de color rojo ( 0 ) esto nos indica que hubieron fallas en Ia configuracion, es decir se detectaron fallas en Ia salida de Ia consola, de ser asi se deberá revisar Ia consola de error para acceder a Ia consola usted deberá dar clic en el icono (

) tal como se muestra en Ia siguiente imagen:

Historia de tareas (Tendencia)

O #6 16/09/201404441:22 PM #5 15/09/2014 04:50:12 PM

#4 11109/2014 04:10:43 PM

#3 10/09/2014 07:08:52 PM

#2 09/09/2014 06:06:12 PM

1 0W09/20 14 06:00:44 PM

RC Pars Todos 0 RSS pars los FeIlithSaIidadeCcnsob

Una vez dado clic se mostrara Ia ventana salida de consola tal como se muestra a continuaciOn en Ia siguiente imagen, es en esta ventana

donde se muestran los errores por los que Ia consola de Jenkins no

puede ejecutar de forma correcta. 181

SaI

fl0001ItO cr10 •I.&A0 4 sd do Co cr0. hior)

At0rW,00t0oop\t,n.\cr*t,o100AAO_DAEL70002100IO_1010_Oi.AUO rS r0z A tW,b\s0oop0o..o.0roo0.or\RtSCArt_t0o0*jo1A.!rMt or

r Ito AltO P00000000000.,01no!_010_rticroo_rtA_co 01000 A tA.A\.0o,n,0000y\!0100_IAC00100_000FQ_Ot.0100 A:000S01000000000000000000Y\OAOO_0ZThA3_W7.1JA.IcrL A IA.b\o0o,.p\..n,\o.010T0000000_0$tLAC000_OO1A.011C A tI.00001oop\toor, 000n,o100A00_000001005_IOt0_02l.0001 A i0oO,00oL00\o..o.flro,,.oyOtAAfl_LU0000A, 001A_03.0100 000,Oolo0000000000000000,00V00100_01000101_10T0_Oi.flt A ?OoO.bOrop0.o,.t,Ioo.ocry\flhi! 110 OA00000 10 rorocoror 010 Ii 0100 A00oW,A\I..fl\otooy0ZO0C0O0t5INIO_OO 0100 A t00000000p0000100oor0000100or00101_10000I0i_crTA_01.0100 A cOoA*000,'o.fl.,0,oy000AI100_01001rOO_0010_*O.lrt A:oo0*oAop\c,o;o0.oy1)A0S_i0P_IAOflA_OOlO_OO .0100 A :oow.A\o0o..p\o.n.\000.0oo7tflNS_Lo0A10_?CjtA0CIA%_i0!O_Oi.ilAL 010oWoS\cOoopto..o.\000rO.oy000001_000AIJ10CUO_il10_04 .11000 A 10o0.A\o0op\.t.\±'oo.c,oy\O100ItiW_10IiO)011.t00 A100A0000000p000.00000?oOcr \000ccoc n0oowoMc 00)0.0100 A OAo0.A\o0p\o..t.0,o*ocry01RASi0AA0_TtACAO0_I0tA_00 .0100 A 00:Ao0001cr.p'o.flo0000.000001000100_01000000WI_1011_Ol .01000 A I0oAth000oop\o.aoIorort.oy\OAAO_IAMISA100Z7110_0100_O0.fli A 1000,b\,00oc000.t,O000*t,o,\flAfl_IQ.j100200_TOL000001AOO_0010_0l .01010 A 10004b000000000fl,000000AoJdIfl000U_AX010I_Z1F0)A .01000 A 10o0.00000oop\0o.0, 0000.ocr001M!!_100_tii1110_0OF0_04 0100 0 S0o0.A\tLo.p\t.*t.\o.0..y\tAASS_t0CA00i_001A)0.itW- A lOoO.b001oop\b.flo\o.0.oy001000_tLfl0!j000_OA.0100 A 1i1.A\2cro\o..\oo,.A.oV\!lC!0O0 000cR 0010 04.0100

Una vez que se haya ejecutado correctamente Ia tarea se procedera

a ingresar al Sonar para continuar con los pasos siguientes a esta

configuraciôn.

1.2. Editar tarea

Para editar una tarea acceder a Ia lista de proyectos para ello dar clic en

Ia pestaña AcJenkinsoo y se mostrara Ia siguiente ventana:

Oftima00000dOn profress S w NrO UIthnoxIto LiltImoFalto detr1o)00 9 . ATOK IMes26cfasj N/I) tMnVSeQ

______N/I) )NWI210LOO/I/I 11404950Q CornoroNas mode asclwco Seg Adrnas/cr*ins 9 8C, PW. 2Meo29das/I/I 2Meo29d000-/Ih CrcdAal 9 j DCcrrocrwJji $ Moo 17 of 00 07 N/I) 114n 33 SeQ T;bijos en Ia cob or —H 9 EJero7d03100010or0000roaso 3Mcs20daS.09 3Mcs20605-i3 O6Seç

(tado dcl elecutor de fiU/I/II)/ Moo 1 dos- #29 6 Mos6 dos 29 94011 Seg - 9 a! fotodo 9 IMes2ofas-#3 N/I) IlinSoSeg 182

Dar clic en el nombre del proyecto a configurar y desplegar el icono (

) y seleccionar Ia opciOn "Configurar"

ZondeTrabjo construir ahora

Borrar Proyeo

jo,, Configurar Soaar

Una vez dado clic en Ia opciOn "Configurar" se mostrara Ia siguiente

ventana, donde se podrá realizar las configuraciones y cambios

respectivos.

• -•-• 1 a -----i 2 [-' -

C - a

Qp%t,&flrpfl,pfl,t, _ ...... -- — a 1jt$tWuas.,otj C cn

5 r -

---"— -_-----:::::.------.

a

3 C.

.1

1kTT:::J

- 183

1.3. Eliminar tarea

Para eliminar una tarea acceder a Ia lista de proyectos para ello dar clic

en Ia pestaña "Jenkins" y se mostrara Pa siguiente ventana:

todo[.

W - Nombr - 61tnoE,1to UItinioFIIo 610maIjrad6n Prçrs

9les26das.. J 8/0 1InVSeg Oxion 10 brnos 8/8) 2 Ms 21 jas. 4 I 8* 48 589 Cuthasfjmadeasdw cs Ath*9r )atn 0 2 MeS 29 ks- /8/8 2 #Ms 29das I Mn 41 Seg ,) DistaW~Wqf 1pi 8Mesl76as-/8 8/0 1Mn 30 Seg 0 Trabsjosen*scots £jisIn)asaasasnn'# 3Mes20das.t9 3Mes20das-3 0os enla da I f 16Se2

! Edeeieaflorde PCtty. SR 6Mes2das-/82/8 6Mes6das./8j 9Mn11SeQ

atado - IMOS2jas-j2 t5t SInOIIOO - o) 9LQJ -

Una vez localizado el proyecto dar clic en el icono ( ) y seleccionar Ia

opciOn "Borrar Proyecto" una vez hecho el paso anterior aparecerá una

ventana con el siguiente mensaje "Borrar Proyecto, are you sure", para

eliminar el proyecto dar clic en el botôn "Aceptar" de to contrario dar clic

en "Cancelar".

I Ib LLIbNI t= I-'KUUJA Mensaje de página web Cam bios

Zona de Trabajo

Con struir a hora Borrar Proyecto: are you sure? 0)

BorrarProyectó -

Configurar

Sonar Aceptar Cancelar

TLC

184

ANEXO 7. MANUAL DE USUARIO SONARQUBE

,COmo acceder a SonarQube?

Para acceder a SonarQube lo primero será acceder a Ia siguiente

direcciOn URL:

http://1 0.227.8.15:9000/

Una vez ingresado a esta direcciOn URL aparecerá Ia siguiente ventana:

- 110*IM I •IV-1100 I 4404000 14 tlOoO' 0*1,400 tilt. 1,011ils Loll 14. * e400Sut100t 10 $1572 4110 130(00044 0 0 00 ,o no, I,,.. 1,010014 * 2 0 771177101$ 71401100,4 00 1.0(Cl0.4_&oLN I 014074 0404 0140011(0 - J00140X0U, 10 12420 440,100000,4 .. OP 004002 0 41405 00 001102014 0230d0$0n 151.4*4200100 31420O loll.. 1-4400,20,. II 04127400100 7002! 0 tkL 1 14 214240 1020 1*1410204, tO.Q : U4 0 10 070102 20202 44010014 40 241704 2.0400 122l200l I I 00 it* Il 162,2*1*101 170141 42 040500,4 14(0 I. 211*2. 100(14 .0 4 IklOfltl_ -. -- 4000001400 - / 721,- l44,-.S24041 1472 Il*.004fl444072fl%--00014 7•200 0014424 *04027• - all

Cq'201407 11 242 _._,.- - l•- - -

4IlI*2444024$.014 0014 22014 ,-- - - 40 20

11 T------ -• 14 -

-- --- - -- 14 - * 002214t0102 7144000220 0 J01OOOL002 20002010 185

Una vez visualizado Ia siguiente pantalla en Ia secciOn "Projects" se observa una lista de proyectos desplegados en el sonar, entre ellos buscar el nombre del proyecto generado en el Jenkins tal como se muestra a continuaciOn en Ia siguiente imagen:

COMM

R4flTNG A TATTO' OTTTIOO bC. 1osAo ooi P.Ad TA.. o4". •;o J I - 10 03003 4000 03033014 *4F eaac 10 nc. ibis ,r.,o,, IP- IQOTOTI TO9 201W2014 - eeotcJoLN 10 738*1 WI. M0330I4 I ( TO 70.429 4492 1303001' 4T•IT. . . TO 00420 00 02033014 TAos 0I03C.403 TO *.0040PA401 211401. Till.. 349713334 L!i 170 I ID 30111,2 2.0132 3000 4 1CIA2W TO 34.440 3030 IWOMI, Ca.'-. U i 10ICIUE3UA IQ 301771 1.0132 1300)3014 A •..,. - I 101O.pRTJD0A 10 )n ,000, ,os32ois 10 ', a a lb tJc'—" I j l2.T03301101 33,001 C34 00 000033014 ll'.aS 13,2014

As Lh,T.4i..4I (43. O00.saa.o$7%I78O%

0.010 14492 _- 1*44'. 133 73.170 C*7T92497l5b 33 337 _.- 000001440*3103 - 41814 0* -0*.. (92 - 70% 320% - 3.1 i,lo4,4_.." - -- hI' • 03 3% .-

4 00*44*444*403

O 9*7* 0*44444,448103

A 0'.i

* 73ICSLL9731

SosS44'.88,*,407*rt041 030*91*4*39 800444 .flM%l. 3,100Sfr4_01- 03*0 186

Para tener mas informacion precisa sobre el estado del projecto se dara clic en el nombre del projecto y aparecera Ia siguiente ventana(Dashboard):

T*t.k.,fl,*r',,.Sd C,fl* 14*l I,.,. LI "" 42,862 CAM 1133 I MAX 241n - 2,023.2., 123* 13W - 3* 2?? — 12 ml - l2 lll ol1 1 LILt 14412 944% ., 32.1% .lrLl 2111 39213 I..., ILl 12

442% 338712 2,871 121212 In. Ill 12d,c,, - l2gllIaaarn,n., 31 '41 .I€ SIc

--' ..- 143122312 - 2O,912 21.5 2l2l1t 3 ,-

-;,- 411223*412 't14941 •14*,

Technical Debt Pyramid

En esta secciôn se muestra un reporte del estado en el que se encuentra el proyecto segün Ia evaluaciOn realizada por el Sonar, entre ellos tenemos el grafico de Ia deuda técnica (Technical Debt Pyramid) con los siguientes caracteristicas:

Reusability: En este grafico de barras se muestra un análisis realizado

por sonar donde se observa Ia capacidad que tiene el programa para

reutilizar su codigo de manera eficiente, rápida y sencilla adaptable a

cambios sin que estos afecten a otras clases ni ponga en peligro Ia

estabilidad del sistema 187

Portability: En este grafico de barras se observa Ia capacidad del programa para ser transferido desde una plataforma a otra permitiendo Ia comunicaciôn entre estas.

Maintainability: En este grafico de barras se muestra los atributos que tienen facilidad de extender, modificar o corregir errores del sistema.

Security: este grafico de barras tiene como finalidad mostrar los atributos que tiene el programa respecto en cuanto a Ia seguridad para prevenir el acceso a personas no autorizadas (permisos, accesos, etc.) al sistema y ni el acceso a datos e informaciOn confidencial.

Efficiency: este grafico tiene como finalidad medir el desempeño del software y Ia cantidad de recursos necesitados bajo las condiciones establecidas, respetando ciertos estándares.

Changeability: este grafico tiene como finalidad medir Ia facilidad que presenta el aplicativo en cuanto sea sujeto a modificaciones en las lineas de cod igo.

Reliability: el grafico mostrado indica el nivel de confiabilidad que presenta el aplicativo en cuanto al entomb de desarrollo es decir Ia tolerancia a fallos y su capacidad de recuperaciOn.

Testability: en el siguiente grafico se muestra si el sistema se está aplicando el usa de las herramientas de testeo tales como Junit, Xunit, entre otros. 188

Issues

En esta sección se muestra Ia cantidad de errores de todo el aplicativo.

Issues '? Blocker 418 42,862 Critical 2134 I £ Technical Debt 24571 V Minor 13867 - 2,023.2 days V Info 1272 I

Para visualizar los errores de programaciOn detectados por el Sonar se

debe ir a Ia lista de clasificaciOn de errores donde se clasificaran los

errores de acuerdo at tipo de priorizaciOn mostrados a continuaciôn en

Ia siguiente imagen:

CS Blocker 418 I : Critical 2,734 Major 24,5711 'W' Minor 13,867 'u" info 1,272 I

Para visualizar los errores de programacion se deberá dar clic en uno de

los elementos de Ia lista de priorizacion

I A Mi2r 24571

Una vez realizado el punto anterior se muestra Ia ventana siguiente. 189

3441, -. - 3g34 414 - LJ341V4UI38VI3!4343 7.161 — ?3 I .73fr t4L. 7 l31J 31 - I 1O4 .rozo,i - D'kIIV34I8,I 77 VIII — O0332l0 430jt o4 570 4.272 *

- C33 343VI*I1% 00,3*33 0* 083*34.IiI - 2,30* - - C4 I ,, Il OI4I, 3330 c3*Uwd.lontiLOPiIjW*1 1403 8 (0 Qtc*o.j 0.433 CO j 2,004 0* ...3.00 £.pop3 341 all 4,033 & CB 3 44 0.277 - lb 1,341 dl (0 343 V CO 0&003,o. III I0* 0**I03*.V7,.33 03*34V'*VP.4 A3*VI... 4I OP. Mo(04 u 4 7.3401IJI3l 034 4.44..L49000 'DV

OPII ..,0034oJ .3* 3-34

Op s_ui 000J33413* 1034 11'.OII 40i3*i1I3*34. 44IIN30.534030 coon, - yv._avy100nhJn. 004

C*p.. 54 33*(0VI3007,G43(o. - 13*I3*0/I3*D34 *034 344*104 - 39n R4ce OVI3* J3& *3*'VI.P.34r43* 0034

Cpw StttLftlIl010jjftSII, 'S Jan19 0JQ,x3. 034 04flnl 434 dII. 0 193*sloAO - Oo. 134c1dlm0,p3*331. 7034

-op. IOU 34 d.T.To3*dl. dl34VAO 3VI0,34o34I01..lon 17,4347140411 I2L)L4 134jLn3

Para visualizar el error de lineas de cOd igo se debe dar clic en el campo

de Ia descripciôn del error tal como se muestra en Ia imagen siguiente.

£ Open Rename this constant name to matth The regutar eaawesn'A.Z1A.Z0-9r(JA-Z0.9I4l'. i_cunsine_c'noces 1034 cnbcp.aç.dao.charge.Paymee4FIeDA0

Luego se abrirá Ia una ventana donde se muestra las lineas de cOdigo

que el Sonar detecto con observaciOn o presencia de error y las posibles

recomendaciones a manera de ayuda. 190

I v

tt.,u ku u.tu..n f flnt n.,o,4psa,.aa, kg uknnIno u.n

Corn plexity

En esta secciOn se puede observar el promedio de Ia complejidad de las

clases o también conocida como Ia complejidad ciclomática con este

resultado podemos indicar cuanta complejidad se presenta en Ia

codificaciOn del aplicativo por ejemplo que un aplicativo tenga

demasiadas estructuras de control (if, else, while, etc) que el cOdigo no

sea reutilizado es decir que utilice codigo repetido pudiendo heredar

clases o reutilizar controles entre otros.

Corn pie xity 30000 ffuncijion I 7 20000 2O9i 10000 21,5 0 Total: 59931 191

2. ,Cômo cambiar una regla en el SonarQube?

Para cambiar una regla en el SonarQube primero debes de logearte

como administrador del sistema para eso dar clic en Ia opción "Log in"

Seanh - -

Una vez realizado el paso anterior el sistema solicitara que ingrese su

usuario y password.

Login

Password

E Remember me on this computer

Login

Usuario: admin

(*) Password: admin

Una vez accedido con el perfil de administrador el sistema mostrara Ia

siguiente ventana dar clic en Ia opcion "Quality Profiles" 192

U-Weywi wowdas1oa loots 1401 !i81ilLilU04.

TBIE A Name, I It CT4r4 P& Ieem v Cimte PA8E.aIEN7E 1,0 61.979 478.0 230920'

* ff0I .0 72.429 .104.4 l6O' Cs1 PANET Ml tO 71811 1,.9 • axe- 29.2O 1,lx PAG4ET MI 9 10 11,011 446.4 3390220

1.0 7Z429 449.2 19t1O S2e 10 Sw 4429 H 02110302 Encs lll.68840$HOI 27,4.4 147.1, 24071201

I ' JBE CIIENTE F91IJEBA 1.0 320,112 20.2 19 OAAIWO I TDIE-MTEN 1.0 34,440 163.0 19oo201 I IOECIJENTE 70 320,772 2023.2 7640120

TBIE-PRUEBA 1.0320,7222,02321211 1Cl2 74,me i11,lx 12SNI44SHOT 11,036 00 24007102 Urxeolc40e L1e' 10114/14

Una vez realizado el paso anterior el sistema mostrara Ia siguiente

ventana donde se observan las opciones a las que se tendrá acceso

para crear, editar, seleccionar y eliminar reglas para los diferentes

lenguajes de programaciOn(C# Profiles, COBOL Profiles, Esql Profiles,

Java Profiles).

Of 316 0 LV jj tcaI

C0f40t. p'.fAft . a cieme £N.b fl.cii 0.4,14

EsgiPromes - Afro. p,,

414148 P10424114 0 cxex 8888 14141,, ANn, p410n, E,., Ill 0 ITEJc cs ,20188 n14r*8,ron24,1, 1 0 0 o Ew

vn,.i 148 1

193

3. ,COmo crear una regla?

Para crear una regla lo primero que se tiene que hacer es haberse

logeado con el usuario administrador (Usuario: admin (*) Password:

admin) una vez realizado este paso ingresar a Ia pestaña "Quality

Profiles" donde se abrirã Ia siguiente ventana:

C# Proliles

RWs Alerts

316 0

COBOl. ProIes UUM

Ples Alerts Pree DeleAl

46 0

am Rules Aleets Projects DefeAt 0erotioes

2 0

Java PooMes

Roles Alerts Projects DefeAt ct

141 0

Sand 0

524 0 0

194

En esta ventana se habilitan las opciones de Set as default, Back up,

Create, Rename, Copy y Delete tal como se muestra en Ia siguiente

imagen a continuaciOn:

ROOM

C#PTofOe

A OeI

sc 316

COBOL ProIes 0C2 et NNne - - Roles ts P* Dthul

46 0

EsqI ProBes

Nine Rules Alerts Pos RuIau Oatiors

SAW 2 0

JavaProMes

Reese Rules has *c Deleuft

Suway III 0

7 0 o 524 0 0 'Saas- M 64 Bao

Create) y Para crear una nueva regla dar clic en el botôn "Create' (

se abrirá Ia siguiente ventana modal.

195

Donde se registrara el nombre el nombre de Ia regla y seleccionar el

Checkstyle dando clic en el botOn "Examinar".

Create Java Profile

Name Ii 1

Ctteckstyle — j Eainiñar:. Optional configuration file

Findbugs [_____ ] Examiriar.. Optional configuration file

PMD fl _Lamtnar. 1 Optional configuration file

I c—reate Juci

Después de haber dado clic en el botOn "Examinar" se abrirá el

explorador de objetos de Windows y luego seleccionar Ia regla generada

en Pa ubicaciOn donde se encuentre. Si se tiene instalado el svn en Ia PC

de escritorlo indicar Ia ruta donde se encuentre y seleccionarla, en el

ejemplo se encuentra en Pa siguiente direcciOn del svn: 196

https://7.227.8.1 1/svn/QC-Everjs/01. INICIO/Ol .02.

Herram ientas/01 .02.01 Validadores de codicio/CheckStyle/Codjgo

Fuente

Para este ejemplo se seteccionara el archivo sun_checks.xml

44 CheckStyle i, Codigo Fuente Buscor Codigo Fuente

Organizar • Nueva carpeta 0 Descargas Nombre Fecha de modifica... Tipo Escritorio - checkstyle.BCP 06/10/2014 10:39 a... Carpets de archivos ' Sitios recientes j) checkstyle-BCP.rar 06/10/201410:40 a... Archivo RAR rwiun_hecks 13/101201403:42.., Documento XML Bibliotecas - - - " Documentos j lm4genes Msica

( Subversion Videos

Equipo

- 'JSLJISK - Disco(E) I- --

Nombre .j [Todos los archivos (,')

Irir H [9ncelar I

Nota: las reglas generadas deben estar guardadas con extension ".txt" o

extensiOn ".xml" de to contrario no serán reconocidas como reglas por el

Checkstyle. Una vez seleccionada Ia regla dar clic en el botOn "Create" (

Create ) para generar Ia regla, Ia misma que será visualizada en Ia

siguiente ventana:

197

CPro5es

Name Rnles Aka Pmmta DelauN omwom

sow co - 316 0

COBOL ProDles

ne RnIe, ANOn Pm4ecls DelmN - Opoalko, SOW .46 0

EsqI ProBes

Name - Ruim A4l, Peofacla 1I,4eu0 0 D 0

0 0 0 qd&Lvd WAR &am War 2 0

J500 Plofiles ___

Name - --.- - --- DuNn Al" Pro3ecto DehA Opeeaolona 0

4 141 0 V Bro B0oe1l C5 7 5 0 S1O24flFkWS 524 0 0 SMJ5244 O0J41 8524ff

aoa Profiles

HM Reo Aso Pmed3 QoDuft Operoioos

I 8 0 0 0 --

1 0 0

524 0 0 Sel n d6M

Para seleccionar Ia regla generada como predeterminada dar clic en el

opciOn "Set as default" ( Set as defauft ), una vez dado clic en esta opcion

se mostrara Ia siguiente ventana: 198

Set as default

0 Are you sure that you want to set the profile "Regla pnieba" as delault?

Para determinar Ia regla como predeterminada dar clic en el botôn 'Set

as default'

(1fl1)Rpm. A continuaciôn se muestra Ia ventana "Quality

Profiles", en esta ventana se visualizara el icono check ( l ) al lado de

Ia regla a predeterminar, esto nos indica que los cambios fueron

realizados con éxito.

th -- -

C#P6oh

Rk, W. 1oo,1, 06,0 316 1) V' mm

COBOL Pro6les 0 owl N,e - AlIft Pro3cs Dtht - - ism 46 0

Esqi Profi'es

- Alen, N*,m 0t.6 0p,i6ons low 0 0 0 - 0 0 0 0o Bis' B i sm 2 0 v =A BMW& c

Java PratTles

Rul,s 41,es Pcts 0,4e

-

Seay1 OaQatvle 1 0 0 sdxdft =mom SavwaaeesFn3tess 524 0 0 Tlejira0 W= Beavv C 199

Nota: no se puede seleccionar como regla predetermiriada más de una

regla por cada tipo de tecnologia(C# Profiles, COBOL Profiles, Esqi

Profiles, Java Profiles).

4. ,COmo eliminar una regla?

Para eliminar una regla lo primero que se debe hacer es ir a Ia ventana

"Quality Profiles" una vez ingresado se visualizaran una lista de reglas

ya sean propias del SonarQube o en algunos casos reglas generadas

por el usuario a conveniencia, Si desea eliminar una regla lo primero que

se deberá realizar es seleccionar Ia regla a eliminar y dar clic en Ia opcion

"Delete" (Delete) tal como se muestra a continuaciOn en Ia siguiente

ventana:

TW'7' th

0 0 ffl ~jffi Hen wi

Pro Ws

R. OM.,, R-om O.f Op.

0 - goc,o,

N. RO. P 0 0 0 tit004 Mw FAft 0 0 0 &L&L#W 0j 0 'fj

Java P,ofiIo p.0, 00. P,*v,, 0,4 - [RM 0 (1 0' 0 0 7'00 80* b$' ca,8 0 0 aiaaskw am= 0 vuao&v Cvn DAV

Si esta opción no se encuentra visible, lo primero que deberá realizar es

dejar de utilizar Ia regla como regla predeterminada, acto siguiente se

200

habilitara Ia opciôn "Delete' de no ser este el caso dar clic en Ia opciôn

delete tat como se muestra a continuaciOn en Ia siguiente imagen:

Java fofiIes Rules ,dens Poeas Delau1 Oithi

Recla 6 0

SmWay 141 0 0 1 0 0 SO as. 0oQ 524 0 0 MasI01

JavaProes

Name - -- Rthes &lets P4*cn DeIuft Opmtioes __ 6 0 0 Sd as &M BOup Rmw c j

ill 0

S5s1 1 0 0

oFrs 524 0 0 Sd as W up Rot

Una vez dado clic en Ia opción "Delete" se visualizara Ia siguiente

ventana popup, para eliminar Ia regla se deberá dar clic en el botOn

Delete ( ) de lo contrarlo dar clic en el boton Cancel

Delete Profile

0 Are you sure that you want to delete the pnrI6e "Regla prueba"? I

I..Incooi

JavaProftes

Name Rnls 4cts PTojeds

Sm 141 0 V" 1 0 0 000.aSatOO! D&M gom M Q616 ahFfleas 524 0 0 0sas.lesI Jisp 0ees M. 616