Sunteți pe pagina 1din 222

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 jr,.,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 software....................................................31

labia 3. instrumentos de recolecciOn de datos.............................................32

labia 4. Pre - Test ,COmo califica Ia furicionaiidad del cOdigo Java 9 ......... 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 Java 9 .............. 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. 6 C6mo 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

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

hernamiantas de Java
Java

Bylecode 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

I Commentsl
E chitecture & besign
J
I i - . -.

buplicatrons
ces
12 ding rui
l 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

CAKI
-p GOMH

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 bit
C ft
Tm

In ecdon
Co.Jrsojs

Son,rQe Ser
;—i

Jj 0 OBamboo - TI i.
DE K*q~w -

-.a Stek
EdVK 1..W~
- -

F
m-;~ _----

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 Apache Tomcat. Soporta herramieritas de control de versiones como

CVS, Subversion, Git, Mercurial, Perforce y Clearcase y puede ejecutar

proyectos basados en Apache Ant y Apache Maven, 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

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

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
Muy malo
-, I
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

CL

131 ,25%I 131 ,25%I

10-

0- I
Muy malo
I
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
o 137,5%I
a.
131 25% 131 .25%

10

I
Muy malo
I
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
Muy malo
- I
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
IL
156,25% 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-
Regular
- Bueno
I - 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

1O

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

0
- 168 75%j
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

-
05
,COmo califica Ia eficacia del SonarQube 4.0 en Ia
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

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

-
10
COmo califica los recursos del SonarQube 4.0 en Ia
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)

o '-.- C) 0 0) It CO 0 to U); 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

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

N- 0 (N (00 CO 0 0 CO CO CO —
) (N U) CO
00 0 0) CO N- 0) 1, U) 00 CC) '- M m M o0 N- co (0
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 (000 CO ('4 (0 N- (N 0) 0) U)
0 CO 0 (N — ,- CO 0) (N 0 N- 0) CO ('4 CO 0 CC CC 0) — CO

(Ne— U)0)-0)U)0) N-(N(N(00)0)COQU)—


ON- U)00N-(NCO'
I -

— CO U): 0 U) 0 — U) 0_
, — U)
N- CO 0 CO 0) CO V 0) N N- 0 0 (N CO 0) çr) C) N- (0 (0 0
,-
0.- -

a- CO — O) OCU)OO'O
>a)
E ~
—C
(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
0) 0) a) 0) 0) a) 0)
(G) a- a- a- Q Q a-
a)
o
a)
a-
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- N C) N U) CO 0 b C) . - C), .. N
(0 O C') 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,- 0)N-O)N-0 (O N-b.- N0


0 0 N 0) (0 o N 0 N U) C') CO ø CO
a-U) 0

N CS) ,- CO N- 0) C') N N- '- N N- CO 0 (N N CU


0 U) (N 0 0 N U) 0 U) aD N N- ') CO N CO CO ci

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 0
co
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 Ver informaciOn sobre
Analizador
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 Ver informaciôn sobre
Servidor
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
Codificacton resultados de las
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
Metricas Ver NavegaciOn por
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
N-Ce U)
m U) . a)
a) 0
C a)
I ' a) C
I '0 a)
2 E t
0
Ela) C 0
U) -cu 0,C -0.0 > co
I ,'
C,C C C
CDQ) +
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 CL
.2 U) =3 0C cU) U)
Q)
CQC I Cc1'C-
C1 Ec 'o
w0o
C' .2' a) C '0
C0 •c U)
E
WC co 0
0 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) a)) a)
) '0 c 2
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
>
0
C 0
C 0000
CCCC 0
C
(4
0

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

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

co

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

W ô
'- N Cl) LU to N. (0 C)
Q- N LU ID N.
--- (I) - N Ce) LU CD N- (0 C) - - N- c)- - LU
- (C- N.
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,
OQØQ)tO
0-2 -
Ea)o0C 0 -- o 0
V '0L = C0
.9 .9 U) t' 2 ç
1) co
0.. C:

Dd
oo(> a) JC U
.-QU) 0 wjc2 Ca)
C 0) U)
0 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 -o
a) a) 0- . Va) 2 V -. _ CU
V qT -
°B 0Gj00
- 0- . II II s.-. c-o
a) Ca 0 E '- E. • Q

0 0 U) (0
C C

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

- (/)
(U CV< - a)

V ._CV0C
.2 CL
- CU
0. _OCF) 0 0
< 0. 00 0 U)
<VW V C
Cu
c
a, Cu a,

(5 0
D (O
o
a, co
• 9- 0
a, = a,a,a,
(5
.0
U) t
cu
a, QU)
0
a, 0 ..
0. Cl 0 0
0 >
Cl) 0 0 c5a, II
0 . - U) IL
0
- U •._ +
o '- U)C
a,>a, I
to c = 0 cI

cu
0 - 0
0 - cu :2

2 - 2 uI
m tn U) CuU).0 :.-..

U) Q) 8 a,20. - - 4 :. I.
8
cu , cr Qi
-0 0 Cu . -0 C
U) U) Cu .0
-
0. a a,Cu Cu
(5(5>
!- -
Cu . CU 0 a, OCu ol
0. • a.) cu - CC
(1)
c a, - 0 (U 22C
C Cu a, ) 0.0 (U Cu
U) a,
C.') U) Cl)
I
111
CU
.0
Cu Cu
C)) C-ICu
.0
Q. 0)
t_ t a,Cu >>>
0 .0 .0 • Cu C)) a, a c E 0
0
-8 V0.
Cu 0. 0. 2 >'-
a, a, a, ..
Cu
-' - (l)U)
o
0.
0 0
U)
(U
0 t Cu a E Cu a, 0.
CuDa,i
Cu Cu
0 CU
a, C I
a,
C C
E E E E E 0 ..0 - 0 0. 75 0.0
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
a,- ww .0
Z .0 Cu.0 .0
w
Cu ' .0 0 t
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

.0 CE
42° • 0
0 I CoCo c
-Co C (1) 0 = .
a) (I) C
(0 I
CoE
U)
0) (0 Co 4- .
I
0 - c .0 0 CL
- 4-
0) (1) .2' (0
a)
(C OCo 0 cu
I > .9'
I- 00) - 0)0) V a) 0 0
I (1)
0) - Co C 0 V 4- .2
, C).C'-i a)C0
t) - 8
° : Nj- a)V 0. 5
>
0_ 0Co 0) 0)>
O (0 > 5) 0o o 0
0 a) .- 0
0 Co - cI Co 0 1Co05 . U 0
0 V CC — 0
.2.90co C
U CoV (I) C - 0
2 (0 E (0 U) Q) -0
C .9 CCOU)
0 '- a) U) (]) -0
V.c09_ c C .2 0
.2 5) C 2 8 . a
(I)
V2CoEI EEiU)oaQ 0
C 0) II)
0 0 NU)IW (0C Ofloo 0
0 C 0
)0 a)
a) In EI+ - 0 cul CC . - C C In
SI o. II 0 a 0
U)0 Co
Co00 ' .2Co all 0 C
C U) 0. 0)F 5 0 6
cli E -.ja) U) -0 C -0
2 U)VCIQ
WCoCoOLJ CC0) 020) 11) 0) 0) 0
(0 U)(00)C a) C 0) 0
22 Co0)00 C V .2 C V
E o OCol (0Co- E.5 0 U) 0 0
2 2 WILL . .2 U) C
C 5' 0 0
U) 22 -6 : Co V 0 Co
Co
0)V0 C Co C -5 0) Co
V t .0o(0+ >>t C .2 a
OVOIF- 0)0)9 0 — C 0 0 — C
co (1) 0 Q) 0 =
- -8 Q 0 C Q)i, (1) 0) -0
— O V 0
0)
V
0)
V In
2 .2
U)U)U)
Co 0-:2 (0 CD CO Co a) - Co Co Co € 3 Co
CO 0 -U)ti- I-r-Q) U) U) U)Co U)
E Co CCoa)a)1 CCC E.Co3 (0
0 0) 22_i -C.a) .
Co Co 2 CoN2
C V 0)
EC0,.0 I CI 15 E
C 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- VI ;
0 O > 0
01 2 C 0 1 0
CO 0)0-° . 0 0)CV
> 0)
a) o-a >. U) >
C > CCC
2 0 U) C -a
0 : 0
C = c
CC 1 - 8
0 0)
(I)
C 0 C C C 0)
C 0)
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
Co
E
(0 0)
.0 .CO0 O.000CC
0
.00 (0 0) (5) 0 CO (00 CoO
(I) 0
.0 0VV6
0 0C J
o ( Z Z -J
cl a, U) U) a, U) U)
C> -o a,
U)
a,
U)
- 0 0
-
Cu Cu <a N U)
Cu 0 0
0
- ; 0
C
5)

Cu Cu
-Cu "

cu o V -
a,
C
U) - 0 a.
Cu
V V
a, - CC C
-a o2Ea, Cu - .-
Cu Cu Cu
C -o a- C
-o 0a,0 a, - E Cu <a
0 a.vit —
Cu <00 0 C
0 C 0. Cu 0) a. .9 <a Cu 0 a,
CO
C <
E.6E0
a,C Cu)CO Cu
- U) U) -Oa,a. CL
C-, ca 0-aU)
0Cu)OOV 00a, 0
O)U) a,
0 (0 a- ç) -
a, Cua,Q a,CCu - 'Cu Cu Cl)
o 0
-a C 0
-0Ca,C 0 OCU) .U)
V _a,C a, (aa,
E U)
Cu
c • gVU)a,CO
øa)o a, 0 — 0 $3 C
CC E.9 Ca)Ca,
- -CuW.9t Caa)a.Cu a, a,G)c
w°a aco.! -U)VCDCa,
Cu Ca, 0 '— ,U)0? .9CCuCCuV
o (OC 0 U)a, WCu 0 0 a,C
-a 0 = VCuVU) CuWa,C
CuU) a, a,ao
U) o.9CO0- V U)
CuOCu 6W<a a,°
's-Cu Ed.9cu$3 01 O co 22o
c
a, -a CL a--a I
- a 2 s-CuCua,
<0QCa,a,C._C
EEOE2E
o 0 a, - a,
EV>:-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,
C > 0 (0 a, E '0
cn .rn 0 0 0 a,
a,
U) -0 U) a,
C)
a, V .2
.9 -0 S_I -Cu a,
()
C-
Q) o a
a. Cu Cu
-<a
CL -0
= 0 <0
(0 0
a.
Cl
-a -
- a_
U)
-a a, <a Cu $3
V CO a,
U) 0) a
0 -e —
a,a, CL
U) U) - Cl) -Cu 0 7E5 - a- o
Co s C
.0 - 0 a, a, Cu -0U) a-
Cu . a,CUWCu
U) . E- -0C. a,
- - -a a, Cu E 0 Cu C C 2 a-' U) EU)V
-0 Cu . 0
CC VCu V= 0 Z
0
-9
U) a, 0 0) V <a
0 E -
0 - -a, o - C E a,
CL Cu < a, 0 C C
Cu U) . -
0 - a) V a,
a,c oU) Z 0 -a 0)
0 C C a
a, CL
a.
-J a,
0
W> co- a)a)
'- 0(a(D
a a)E
(OC
cu 'ii; DQ)
U)C ' E 0(a>
ii; C (/)Q
a) . a)
(0 (a_
D) Q OC.2 V1
a) co
C U)Q a):,
t, a(a
W0
70(a 0 0 V '02 >
a. a) a.(a
U)' o a3
U)C '0
(I)
0 oE E'
09 0.20 0
w 2 00 a.0C
a) a)
5 C'J o'a5.3 ' E a) 02
U) (a •. X C
'0 U) o(3a) :2
C —'o 000 I..--..----.-- --
E'
C Co
ECU)
a)U)a)t(
U)

C
0
'0
o>
a) V 0) E : 0
0
(a
< a. C-E .o 0 C
- a)
t) .2 .Eco-.2
c. 0.
°'
ci)
a-0
a).
E,
e(a Hffi U) C
'CC'13 -0
CU E 0Qa) 0
VW C U) 0
V I
0 o >U) .0 E.—

9W 0 E0cc
QEC -0 CU
Ca.U) E
Ca)_(a22'.U) V •-CQ .2 o a.
(0—
CO
a) C_ E
>'a),
CE.
QC

0 a.a).2CCQC U)
> a)
O 0 CC 0
Qa)a) 0 (a
.0 (1) 0 C(a (a a)
- E
o • (1) U) (a a) )
_Ca)cZ&)D9Ez ('J WCWEU)a)U)
E2a.E CVE C'
a)a)Cl
a. C(aO
a) a)
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 '
a) Q, 0) X

0
: (a
Ca 2 o E
a. 0
0

U)
U)
o
-; ,,
0 (Oca•0
0 U) a)U)
cc '0oo
a)--0U)
'00
-o
a) o (a
-C
U)
fi ~CV
Cc,) Oa)W(a
:2
0 0)0 E a.
'CU) o E
C z 0
Q. 0
<i
a E
z.a)
ow>
.2w°
cu°
> 0i
+
ow
V
ca
LC)
a)
- V 0

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

flb U)C •
:
0 Cu 0
-
Cu
CL
0
w " -
Cu
Q) C/) .cu -
a)
0
V
E E
cu 2 .2
— 8 .~ — V ~ U) - .2
ow I2 2 -Cl)
U) CT -
0) •.~ V
a)0 ._ .
(1) V
E - - - -
- E 2 2
(Cl ' . 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 °I .2 8
o E
0 0
u E w
=1 9 0
0 0i
0 U)
U)
0 Cu
C
9-

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

= 0 E Cl) = cx °-E
V 2 C :2 -0 -0 0
V
CO E 0 V (02 0 (Cl (Cl cu

2O:a) 928
0C c1)a U)C 0-

o 0o 0 0
- co
V
Co
a)
- Co -0
(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)
o C V- C
a)> >Oo (0 0
-oU) 0 )
U)U)
.9.2 CE.2 Va) .2
000 U) 9> >
:Lh
> >
a) x
0 *0 x
CL
-
o
a) a)V•->(0 ''- 0)
co m °'E 0) .9 .
0 Q
2222i0 O
W(O
0 0 a)00)CO(oV
EEEOE.E 6 E2 -
ZZZ.C2ZQ(/)c2. Q> (
U,

Ca
>
U) (I) Cl) Cl)
(0
0

U)
U) .2 C
U)
g .9
U).2
C 5 ( 0
0)
>2—
.9 m
5
0 I >
0'
a)
C
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
Z >< > a)
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
en el archivo AY,moduIe?
1
de
propiedades 11 :t Lista de los identificadores
son::ropee.
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 iVmodue1 9 'sonar.sources=src
] tr
Ajuste la I J J HeIIo.J4va 10:
configuracion I I J sonar-project.propertles
de los e2 ,modu :# Llsta de los identificadores
rc de módulo
mLItipIes
archivos de J Hetlo.Java
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:

<build>
<pluginManagement>
<plugins>
<plugin>.
<groupld>org.codehaus.mojo</groupld>
<artifactld>sonar-maven-plugin</artifactld>
<version>1 .0</version>
</plugin>
<plugins>
</pluginManagement>
</build>

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

Proyectos analizados con Maven 3 solamente.

<build>
<pluginManagement>
<plugins>
<plugin>
<groupld>org.codehaus.mojo</groupld>
<artifactld>sonar-maven-plugin</artifactld>
<version>2.0</version>
</plugin>
<plugins>
</pluginManagement>
</build>
87

Proyectos analizados con Maven 2 Y Maven 3

<build>
<pluginManagement>
<plug ins>
<plugin>
<groupld>org.codehaus.mojo</groupld>
<artifactld>sonar-maven-plugin</artifactld>
<version>${sonarVersion}cz/version>
</plugin>
<plugins>
</pluginManagement>
</build>

<profile>
<id>maven-2</id>
<activation>
<file>
<!-- basedir expresiOn que solamente es
reconocida por el Maven 3.x (ver MNG-2363) -->
<missing>${basedir}</missing>
</file>
</activation>
<properties>
<sonarVersion>1 .0</sonarVersion>
</properties>
</profile>
<profile>
<id>maven-3</id>
<activation>
<file>
<! basedir expresion que solamente es reconocida
por el Maven 3.x (ver MNG-2363) -->
<exists>${basedir}</exists>
</file>
</activation>
<properties>
<sonarVersion>2.0</sonarVersion>
</properties>
</profile>
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 globales de Sonar -->

<property name="sonar.jdbc.url'
I>
EE
----------------------------------------------------------------------
<property name=sonar.jdbc.username" value='sonar' I>

<property name='sonar.jdbc.password" value='sonar" I>

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

:<property name='sonar.projectKey" value="org.codehaus.sonar:example-java-ant' I>

<property name="sonar.projectName" value="Proyecto Simple de Java Project analizado con


Sonar Ant Task' I>

<property name&sonar.projectVersion' value="l .0/>

<property name='sonar.language" value=java' I>

<property name="sonar.sources' value"src' I>

<property name='sonar.binaries' value='build" I>

<I-- Definicion del objeto Sonar ->

<target name='sonar">

<taskdef uri="antlib:org.sonar.ant' resource="org/sonar/ant/antlib.xml">

<I Actualizar Pa siguiente linea, o poner el archive sonarant_task*.jar en el directorio


'$HOME/.ant/lib' ->

<classpath path=path/to/sonar/ant/task/lib/sonaranttask*.jarfl I>

</taskdef>

<!-- Ejecutar Sonar ->

<sonar:sonar />

</target>

Ejecute el siguiente comando desde el directorio raiz del proyecto

para iniciar el análisis Sonar:

ant sonar
Se puede consultar o descargar más información en github.

Proyecto Multi MOdulo

La configuracion Sonar para el raiz y los môdulos se debe hacer en

el archivo build.xml raiz:

RaIz build.xml

z!— Establecer los IDs de los mOdulos -->

:<property name='sonar.modules' value='module-one,module-two/>

-<I- Para los mOdulos, las propiedades se heredan de los padres. Pueden sustituirse como se
:mUeStra a continuaciôn:

:<property name=module-one.sonar.projectName" value='Module One I>

:<property name=module-one.sonar.sources" value=sources/java° I>

<property name="module-one.sonar.binaries" value=target" I>

<i-- Por defecto, el directorio base de los môdulos es <curent_directory>/<module_ID>. Se


puede modificar 51 es necesario

:<property name='module-one.sonar.projectBaseDir" value="Module 1'!>

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----------------------------------------------
:<property name=modulel .sonar.Ianguage" value=java/>:

2<property name=module2.sonar.Ianguage value='js'/>

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
sonar.jdbc.url URL del
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
<groupld>:<artifactld> al utilizer
Maven.
Nombre del proyecto que se
mostrará en el interfaz web.
sonar. projectName
Establecer mediante <name> al
utilizer_Maven.
VersiOn del proyecto.
sonar.projectVersion Establecer mediante <version> 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 <description>
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
origen. Por ejemplo: UTF-8, sistema de
sonar.sourceEncoding
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
ramas de un rnismo proyecto se desde
sonar.branch
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
a un determinado proyecto. desde 1.6
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 to analysis, this desde
sonar.phase
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

Clave DescripciOn Valor por


Version
defecto
El análisis dinámico de las pruebas I
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. Soo l se utiliza si
es sonar.dynamicAnalysis desde 11
reuseReports.
La ruta absoluta o relativa del archivo
sonar.jacoco.reportPath de informe jacoco. SOlo se utiliza Si es desde
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

Clave Valor por


Descripción VersiOn
defecto
El aumento de los tiempos de
espera HTTP de las peticiones al
servidor Sonar. El plugin de Maven
sonar.host.connectTimeout ejecuta algunas peticiones HTTP al
servidor Sonar. Dos tiempos de respectivame
Ms and desde
espera hace que Ia Ilamada fallará nte 30 i 60
sonar.host.readTimeoutMs 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

Clave Valor por


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

L Perfiles 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 &cL
]— ecL
t~ 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:

Components
E on 19 Jul 201013:02
II Lines of code Classes
Violations dnlldown
Time machine 448,695 7,386
j ,agi lines 683 packages
clOUds
1 211,719 statements 37,110 methods
Design 1 5,902 files -5,834 accessors
4

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
A
A 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 Apache Abdera 49,460
t Apache Amr 5,064 A 33.1%
,4 l Apache Archiva 33,488k 56,7% !
O [fP Apache Aries 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
Ca Sons:: Ph,oin API 10,952(4 (-53) -53 2% (+01%)
_
6 (+)

c? $fl1 Cambios y 160(-3) -39 Sololos


3 _

So Piialns : valor actual de 30(2) 12 cam bios


Q6 9on: Otth 50 (.1%) -11 1% (+3.1%) 127 (.32)
a métrica
Ca
.,l1Q) 227
71 (.13) -13 (+0.0%) 7
83 (~)
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 ootcaod, no irer wiI apy
j
:~O
Favourftoa A 0days
fli*o.jr90 keyIi - -
- so the dwactec I to malch
Rosource 'name like:
] use me dnrncter to MOtCh
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'
1,434 IflOI
3
'Pu..
-
63ttS8Ot40flL0 40 IV1.on. 4' 6iicite C
':cm:. 69 1I1'G8J 0

Cornn on!. OupIIc.4Ion.


- 909'/' •• L'0O
30
24
26.8% 0.0%
262 On.. 0 2 knott
0 144.ck. P t.nl, nd..
1000cc do. API
et..un, API 0 1401 0.0
3 COmfllmcItILOCO

Coc4p sulty
3.7
'j---- ] 1.0
0.0% 055
• nIt3
4 in.

48.7
48.7,qo
ToP' 146
M'.POOi, (jCi.,ss.o

Cod. covenga
84.8%
Tool success
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
Cornpl*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
1 34.3% doci. API (.0.1%)
783 undocu, AP (*0)
10 blocks (+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

(Crzt diIbO*td]
S4uuod dshboardz
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. oreb Nrts lI j


1

I 111111] Li II 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- fi.n~cl~hbw 6 EdW- 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
aJ

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.

- *ø
fØ) • E41 CWACW

C7OA2t
Aø#t
At R ;
G'*o EAt
0 EAt
*
OtZ2V1O l.i-'
41lc Ct
EAt -
o
m
Edt

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

2 Licensed to the tpChe Soft,,aze FOunddt4Sp) uOder one or wxe


f 3 ce rib or Zicezsse dqre seats, See the NC - ''' bvted with
1 this work for additic,nx2 inf rziaticei recant Cabecera e2hip.
Recurso .i 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 .Qfuente coloreado or piiea.
14 Se he Lense
ic the specific iangnaqe qng
overni
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
Linesofcode: Statements: 318
620 Comments: 41.7%
Methods: 33 CoIIY PubilcI: 27
Comploxitylmethod: 6.7 Comment lines: 443
Acoessors: 0

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 Apache License,
(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 (per@ntc2.ae 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'
o, Unacoverage: 71.4% Branch coverage: 58.1%
"5" ' Uncovered lines: 88 / 308 Uncovered . -.
Unes to cover
C Ful sirco I 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
LInens: 3,180 Llneas dupticadas: 596 Bloques duplicados: 11
L187
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</code>. 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.- 6
1
, 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

P
T~w--'-
tkiotc1 Qiai1t4 81i
__

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

t 0%h9P405i9W.4300k23 30 0.30. 0.0% 161040011 4.9 24


Ubodes
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
SuDd --
compliance Coverage
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 :
38 0.0% 0.0% 0.0% 19100/3011 46 37
una columna
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.
i bt, +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

v,p04fir)
04Cr,
- -00
__, ----4
* • o — *. — s

a _* •' a —
--- 7-'-
-_-
-- —
71 4.Vao ...a — 0'4*000

2.3- —
4
--
- 17-

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.' '''
(i.'
12betweenpackages
, 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.

iP shboar eoenderes Desla

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
2
ET3Ii
a
La

-J
ov.apaoh000nwyons.00jIoc,1cnsjaa
*_ aPOh4 a' on ooIio2000Ileoton
—F 2 1 0. 0
4 4 4 4 -
J h .00a'a'on.aoa.otoa*.jt n_j
r...j QtOSPSCheOCflnOflS.OoJecOofl41uflcin,$ tt 5 8 4 -
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
adornâs dopendo do cornParato_j
1 L°2

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
J orgapachrnmonsco)lec1ion4.bufler - 4
- *- - + .-.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>


-IAbnctMsjSnt.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-SNAP
k 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)

RadIator Commons Collections 3.2.1 (compi


Aqul podrias ver
Tmltna t)th asm.aarn-aJl 3.2 (compile)
quien utliza este
SetOngs
f (T Commons Lang 2.5 (compile)
(1 Commons 101.4 (compile)
proyecto

I org.slf4(:s04(.api 15.6 (compile)


Arbol do C3 PicoContainor Core 2,10.2 (compile)
dependencias de ThJevax,annjs26o.pi 10 (compile)
las librerlas Dependencias con
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

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

flthjd*WOfd
[ Comentar!o obligatorio
j I.I
bold bo

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 =•_ L ___
v- -
II ur 1 dyM4 yUh1
_ii 4440 jj MWdl*ø
sar
I A,tV.. A

/ 4 low
f _I CF7— VW koomot)os kId
I -- .
low .
how

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<V* 441


.octCycLo.4 YO2txS AYty14stv> 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-

IUOdlI
h A

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...
ProprtIrs Convert to P!s.g-In Projects...
- 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.,,
Run Local Analysis
popertes xi
- - 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 h
Tasks
Hotspotsf 1VoIatons

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 k
ILA OpotRapctltoyl.*_
- A5.9i4I2
Bm
Is SynaiwotiyrAilT.cia
UEapitoq
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

- V
E. L C.ocol -

Los comentarios deben aparecer ahora en Ia vista Lista de tareas:

LL. -
I Al
Ally Ro.4ows Ltol Scoot, Ti,t P.opooAo.pI
0 3 1873 M11hdo,goo., 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 -

Configure P
Mode
urr Local Analysis
f Remote
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
L Bad practice - CIa'Codefluffer.Java
d 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 \>g 10 cecu
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 riHots pots flVIolatIons


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

2t ove surrounding if Otatemant


block to statement

o
157

RSVw 4I
Loxal Son., Task Ropogltoey 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 tests to roach the minimum threshold of 65.0% branch cage.
over
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:

I
tDt6on.r.oh1gwsncud.aprw.,nrscc,aamsnoc.war.,ol.,r. iv - . -- -
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.

, dj
Tengacuidado
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— U) '0 C
ca
0 '9 U)
3 0 o co oo
C/)
o 8'
- co2'
N -
0 - - N
0 0 .0
w
-0
-
U) .2'
-0
:2
o
.L
ID
L.
.2
()
"
-J (1) C 0 U)
a. 20 >
0 U)
a)
w -
-J
w C cc
0 Cl)
z
'0 o Ca) V.
0 z :-w
0
'i- Lu 0 0
F- U)
U)
2a
- U) 0
z Z '0 0.
w U)
a R a) > 2
w U) I-
a a - w
N
I- U) 2
C C a)
C
a)
V
a) U) 0 0
-cu " E5 a) U) CU U)
4 0 09) U) a) C
EU)
0 o
x I— C a)3 30
'U Z (1) .2. C 0U) .2'
z Fn V - 0 :9 U) U) a) a)
cn
a)V
U) - 0 - '8
C a) U) C U)
U) 0 a)> U) 0
0 -

o
z (N
Q Q
U, C
'O
— U)
(p 0 0003 U) U)

o °
oc DC!)
. - - 0

Cl)
a)
o
. .
a) CCo
Cl) 00
w
—J
E 0
0
ct

0
—J
2
w
0 F-
I— Cl)
CD D
w
z

w
0
—) Cl)
z
I
a.
N
0
Lu
z
0
c C
Cl)
V
C',
0wc', cu V
M C
0 z -o c..) C3
C', Q .C m -C',
5
L.
0 D 0 U) L 0
w . —LL0DWUJ CL
>0 U) C', U) — ————a
:2 .
O Cl)
2 V
D (I)
U-
cn
a ci
Va,
E .2
0
a)
- 0
U)

0
z co
O >
2
C) wCca)
cn
I—
U) o -
LU
> '0z __
z
wO
Z
CE
U)
0 'WC
() LU LU I—w o
3S2 p > > M
JC1) W 06
OW >
0 U)
WO-
01
8 (#)C
a)'C C
V
0 - C

Oc zZa) W- - C.)
Wo WF U..Q
'W U)
0co X
p< ZO 0C a...— U)UJ ——
0 (W)aj Ccca) OcCa)
z
u-i
a)o 8
VV _>
CC
F- >a) C -)
(I)
(I)
z U) C)
0 o'O
0 LU

w oil
01
$ C V _
_0.)
Wc:Q
.
0 01 (I)
N Ir'xOC' I
Of I'Cao. Ei3° a)
01 >'
— CUC2LOWQC
0 ' C - CL
U C) 0 () . (I) .0 0 0) C
- WI ,:
O0)CaU) Wa)u 75 a) WECCW 000C0W
VC0 V -00 C •C - >V
0 WC
C
.o . >s €0>uc0 0 Co U
w °
' 2 . 2o38
z 0 )
ot > C'- 0
— ot w .i Q)
(I)V 10
w
ol _cC'2
-' '-0 0•000 0)0Cao
L.
ol wC0E a)
W a)6u,oE'.2oCt >'
CL
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 > 0V V .0 •C C 0
C V o E - cu
O_' >1 cO
" 0 .
0) °E
Z E' ' C) o
Q)C0C0C .
0 0 c

a)
CC ("Ca VOo
caa))
U) a) () a)CaC •
01
iEo 01
ca'2ica
V 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 2 3 4 5
certificaciOn de cOdigo Java?

,COmo califica Ia eficacia del SonarQube 4.0 en Ia


P05 1 2 3 4 5
certificaciOn de codigo Java?

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 5
certificaciOn de côdigo Java?

,Cómo califica los procesos del SonarQube 4.0 en Ia


P09 2 3 4 5
certificaciOn de cOdigo Java?

4C6mo califica los recursos del SonarQube 4.0 en Ia


c 2 3 4 5
certificaciOn de cOdigo Java?

,COmo califica Ia satisfacciOn del SonarQube 4.0 en Ia


P11 2 3 4 5
certificaciôn de codigo Java?

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
dea
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

( *MrnMWa-,U,ot, G 92*.'a,a.ar',. a-. fldI. - 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
,

priasr sTore oroosco,


Q , I Moo 26 dioo' 002 va I Mi. 275%

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
j Q 77.21 FN 6Mrnld .21 66. 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['

00020617
C Crear un proyecto de estilo libre
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

st C,.., on peoyedo d, easilo libm


4 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 peonotm en


t !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,

Ito .n0c --
- 0 MorItoelsa, one tare, ante,.,
j
-. .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:

I htecmnucucmni ....................:
'-
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

I ,
0'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
Tfjecuthndose 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_LU 0000A, 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:

w NrO UIthnoxIto LiltImoFalto Oftima00000dOn profress


S
detr1o)00
9 . ATOK IMes26cfasj N/I) tMnVSeQ

________ N/I) )NWI210LOO/I/I 11404950Q


CornoroNas mode asclwco

Adrnas/cr*ins 9 8C, PW. 2Meo29das/I/I 2Meo29d000-/Ih Seg

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


- 9 fiU/I/II)/ Moo 1 dos- #29 6 Mos6 dos 29 94011 Seg

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
2 [-' - -----i
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
I f £jisIn)asaasasnn'# 3Mes20das.t9 3Mes20das-3 16Se2
0os enla da

! Edeeieaflorde PCtty. SR 6Mes2das-/82/8 6Mes6das./8j 9Mn11SeQ

atado
SInOIIOO - o) - 9LQJ IMOS2jas-j2 t5t
-

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

14(0
I
I. I 00 it*
211*2.
40 241704
Il 162,2*1*101 170141
2.0400 122l200l
42 040500,4

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 •..,.
10 ', a a -
tJc'—"
I 101O.pRTJD0A 10 )n ,000, ,os32ois
lb I
j l2.T03301101 33,001 00 000033014
C34
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 -

- 12 ml
l2 lll
3* 2??

ol1
1 LILt 14412 944% ., 32.1%
.lrLl 2111 39213 I...,

ILl 12

338712
121212 In.
2,871
Ill 12d,c,,
- 442%

l2gllIaaarn,n., 31 '41 .I€ SIc

--' ..-
2O,912
143122312 -
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 24571
Mi2r

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
VIII 77 — 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
CO 0&003,o. III I0* V
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
I 7 ffuncijion 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'

Cs1
* ff0I .0 72.429 .104.4 l6O'

• axe-
PANET Ml tO 71811 1,.9 29.2O
1,lx
PAG4ET MI 9 10 11,011 446.4 3390220

1.0 7Z429 449.2 19t1O


S2e
10 4429 H 02110302
Sw
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 0 C2et


NNne Roles ts Dthul
- - P*

46 0

EsqI ProBes

Nine Rules Alerts Pos RuIau Oatiors

SAW 2 0

JavaProMes

Reese Rules has Deleuft


*c
Suway III 0

7 0 o
524 0 0 'Saas- M 64 Bao

Para crear una nueva regla dar clic en el botôn "Create' ( Create) y

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

reate Juci
I c—

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
' Sitios recientes
j) checkstyle-BCP.rar
06/10/2014 10:39 a... Carpets de archivos
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'

Rpm.
(1fl1)
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 ffll
~jffi Hen wi

ProWs
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

S-ar putea să vă placă și