Sunteți pe pagina 1din 12

25/8/2015

SonarQube:analizandounproyectoJava|Enrikus'Blog

Enrikus'Blog
{Blogdeuninformtico}

SonarQube: analizando un proyecto Java


Aqu est la segunda parte del tutorial de SonarQube donde voy a explicar cmo
analizar un proyecto Java mediante Sonar Runner, cliente de SonarQube. La
primera parte del tutorial la podis encontrar aqu
Lo primero que hay que hacer antes de poder empezar a analizar nuestro cdigo
es crear un fichero con algunas propiedades dentro del proyecto que queramos
analizar. Este fichero es necesario para informar a Sonar Runner acerca de
algunas propiedades que necesita. Para ello vamos a la raz del proyecto, en mi
caso C:\Users\Enrique\workspace\proyectoFinalISW0.3, creamos un nuevo
fichero llamado sonar-project.properties y aadimos la informacin bsica
acerca de nuestro proyecto:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

#Requiredmetadata
sonar.projectKey=proyectoB7
sonar.projectName=proyectoFinalISW0.3
sonar.projectVersion=1.0

#Pathstosourcedirectories.
#Donotputthe"sonarproject.properties"fileinthesamedirectorywith
#(i.e.neversetthe"sonar.sources"propertyto".")
sonar.sources=src

#Thevalueofthepropertymustbethekeyofthelanguage.
sonar.language=java

#Encodingofthesourcecode
sonar.sourceEncoding=UTF8

#Additionalparameters
sonar.my.property=value

Una vez creado el fichero con las propiedades bsicas de nuestro proyecto vamos
hasta la raz del proyecto a travs de la lnea de comandos y ejecutamos el
http://enrikusblog.com/sonarqubeanalizandounproyectojava/

1/12

25/8/2015

SonarQube:analizandounproyectoJava|Enrikus'Blog

comando sonar-runner. Tras unos segundos el proyecto entero habr sido


analizado y podremos consultar toda la informacin referente al anlisis en
http://localhost:9000/, donde podremos ver todos los proyectos que hayamos ido
analizando a lo largo del tiempo y seleccionar el que queramos consultar.

El proyecto analizado es proyectoFinalISW0.3 y la zona amarilla en la grfica


indica que los proyectos que hemos analizado hasta ahora solo cumplen un 50%
de las reglas de calidad que propone SonarQube y que ms adelante veremos.
Hacemos click sobre el proyecto que queramos consultar en el cuadro Projects
(en mi caso proyectoFinalISW0.3) y seremos redireccionados a la ventana con los
resultados del anlisis:

http://enrikusblog.com/sonarqubeanalizandounproyectojava/

2/12

25/8/2015

SonarQube:analizandounproyectoJava|Enrikus'Blog

En esta ventana SonarQube nos muestra datos, mtricas y estadsticas acerca


del proyecto analizado.
Como se puede comprobar a simple vista, el desarrollo de esta aplicacin deja
mucho que desear. Segn los datos obtenidos casi un 10% del cdigo est
duplicado, no tiene prcticamente ningn tipo de documentacin y se han
encontrado 535 problemas, de los cuales 272 son de carcter grave y 87 crticos.
Adems de errores y datos estadsticos sobre el cdigo, SonarQube tambin nos
ofrece mtricas y estadsticas referentes a la complejidad. Segn el campo
Technical Debt, para arreglar todos los problemas de la aplicacin tendramos
que dedicar 23,5 das de esfuerzo. Evidentemente este dato es subjetivo, ya que va
a depender de la habilidad y experiencia del equipo de trabajo.
Otro dato interesante son los datos referentes a las mtricas de la complejidad del
http://enrikusblog.com/sonarqubeanalizandounproyectojava/

3/12

25/8/2015

SonarQube:analizandounproyectoJava|Enrikus'Blog

proyecto. Los datos mostrados se corresponden con la media de la complejidad


ciclomtica por mtodo, clase y fichero.
Haciendo click en cada uno de los resultados obtenidos podemos ver ms
detalladamente de donde han salido estos valores y que paquetes/clases son los
afectados y a partir de los cuales se obtienen dichos resultados.
Como ver todas las opciones de SonarQube me llevara unos cuantos posts
dedicados al tema, voy a mostrar solo un par de ejemplos de los errores que se
han encontrado.
Si hacemos click sobre los problemas crticos nos llevar a la siguiente ventana:

http://enrikusblog.com/sonarqubeanalizandounproyectojava/

4/12

25/8/2015

SonarQube:analizandounproyectoJava|Enrikus'Blog

Si hacemos click sobre uno de los errores obtendremos informacin acerca de en


qu paquete, clase y lnea de cdigo se encuentra el error y un comentario acerca
de cmo resolver el problema (en ocasiones tambin se muestran ejemplos con el
tipo de refactoring a realizar). En la siguiente captura se muestra uno de los
errores encontrados y catalogado como crtico:

http://enrikusblog.com/sonarqubeanalizandounproyectojava/

5/12

25/8/2015

SonarQube:analizandounproyectoJava|Enrikus'Blog

En este caso SonarQube nos est avisando de que la instruccin System.exit(0)


debe ser eliminada o que nos aseguremos de que realmente la necesitamos. El
error ha sido catalogado como crtico porque dicha instruccin aborta la
ejecucin del programa sin previo aviso. Si poner esta instruccin ha sido un
error del programador, esto hara que el programa al llegar a un determinado
punto de su ejecucin se cierre sin previo aviso, haciendo que el programa no se
comporte como debiera.
Otro error sera el siguiente:

En este caso SonarQube nos est avisando de que la sentencia if no contiene las
llaves de apertura y cierre. Este error lo ha catalogado como grave porque si el
programador no se da cuenta e introduce ms de una lnea de cdigo dentro de la
sentencia if, slo la primera lnea estara dentro del if quedando el resto fuera y
haciendo que el programa no se comporte como debera de hacerlo.
Adems de errores, SonarQube tambin ofrece informacin acerca de buenas
prcticas, refactoring y consejos para mejorar la estructuracin de nuestro
http://enrikusblog.com/sonarqubeanalizandounproyectojava/

6/12

25/8/2015

SonarQube:analizandounproyectoJava|Enrikus'Blog

cdigo.
Como curiosidad, SonarQube tambin nos muestra en forma de nube de
etiquetas las clases de nuestro proyecto y el cumplimiento de reglas de calidad
por las mismas. Cuanto ms grande es una etiqueta, mayor nmero de lneas de
cdigo tiene. Los colores indican el porcentaje de reglas de calidad que cumple
cada clase, siendo el azul un buen indicador y el rojo un indicador de poco
cumplimiento.

Tambin podemos ver el riesgo de cada clase de nuestro proyecto. El riesgo de


cada clase depende de la complejidad de la misma y del porcentaje de
cumplimiento de las reglas de calidad propuestas por SonarQube. Cuanto ms
grande es una etiqueta, mayor es la complejidad que tiene. El color azul indica
que cumple un alto porcentaje de las reglas de calidad y el rojo todo lo contrario.

http://enrikusblog.com/sonarqubeanalizandounproyectojava/

7/12

25/8/2015

SonarQube:analizandounproyectoJava|Enrikus'Blog

Y hasta aqu todo lo referente al anlisis de un proyecto mediante sonar-runner


y su visualizacin en el servidor.
Ms informacin en la web de SonarQube y en la documentacin
COMPRTELO:

Ms

5enero,2014 Enrikus Software,Tutoriales SonarQube

10 comentarios sobre SonarQube: analizando un proyecto


Java

Javier
15abril,2014alas14:11

http://enrikusblog.com/sonarqubeanalizandounproyectojava/

8/12

25/8/2015

SonarQube:analizandounproyectoJava|Enrikus'Blog

Gracias Enrikus, me ha sido de gran ayuda tu documentacin.


La pongo en mi blog y te referencio como gur.
Me gustara que pudieras comentar algn plugin interesante de SonarQube con el
que hayas trabajado.
UN SALUDO

Enrikus
15abril,2014alas16:37

Hola Javier,
Me alegro de que te resulte til el post

Tengo pensado escribir algn post ms adelante sobre SonarQube, pero antes
tengo pendientes de terminar varios que tengo empezados.
Te agradezco que me referencies en tu blog si vas a utilizar material de aqu o si
simplemente quieres proporcionar algo ms de informacin a tus lectores, pero
no es necesario que me referencies como gur ya que no soy ningn experto.
Solo comparto lo que s por si a alguien le sirve de ayuda.
Saludos.

FrankCc
10julio,2014alas03:03

hola realice todos los pasos pero me sale el siguiente error: Caused by: You must
define the following mandatory properties for Unknown': sonar.projectKey,
sonar.projectName, sonar.projectVersion, sonar.sources

Enrikus
10julio,2014alas10:48

http://enrikusblog.com/sonarqubeanalizandounproyectojava/

9/12

25/8/2015

SonarQube:analizandounproyectoJava|Enrikus'Blog

Hola FrankCc,
Has creado el fichero sonar-project.properties en la raz del proyecto a
analizar como se indica al inicio del post? El mensaje del error parece indicar
que te falta definir dichas propiedades en dicho fichero o que no lo has creado
donde debes y Sonar Runner no lo encuentra.
En las propiedades projectKey y projectVersion puedes poner lo que
quieras, pero en projectName debes poner el nombre de tu proyecto y en
sources indicar la ruta al cdigo fuente, que en java se encuentra dentro del
directorio src.
Si ests analizando un proyecto que no sea Java busca por internet un ejemplo
del fichero sonar-project.properties porque puede que cambie algo y el mo no
te sirva.

Paola
2noviembre,2014alas16:14

Hola! me result muy til tu post, instal SonarQube con PostgreSQL y hasta la
parte de analizar el proyecto me funcion bien Pero no s por qu no analiza
mi proyecto

estoy trabajando con Java Empresarial (Java EE) en Netbeans 8,

tal vez es porque usa Maven?, tendr que instalar algo adicional?. Te
agradecera mucho si pudieses responderme. Saludos!

Enrikus
3noviembre,2014alas17:52

Hola Paola,
Hasta ahora no he realizado ningn anlisis de un proyecto Maven, por lo que
desconozco como analizar este tipo de proyectos.
He investigado un poco y he encontrado en la documentacin de SonarQube el
siguiente enlace donde se explica cmo analizar un proyecto con Maven
http://docs.codehaus.org/display/SONAR/Analyzing+with+Maven
Espero que la informacin te sea de ayuda y ya me contars que tal te ha ido.
http://enrikusblog.com/sonarqubeanalizandounproyectojava/

10/12

25/8/2015

SonarQube:analizandounproyectoJava|Enrikus'Blog

Saludos.

Paola
5noviembre,2014alas18:17

Al final, al instalar Maven arrojaba muchos errores y no me sirvi tampoco,


as que volv a Sonar-Runner Al final, mi error fue que tena mal
configurado el archivo de propiedades de sonar que se pega en la carpeta del
proyecto, ahora me funciona todo ok. Saludos y gracias por responder!

Nicolas Retamales
27noviembre,2014alas19:34

Buenas,
Excelente post, me resulto sumamente til, ya tengo sonar funcionando.
Adems lo agregue como plugin en eclipse y estoy probando la integracin.
Saludos y muchas gracias!

Edwin Palomino
9julio,2015alas23:05

felicitaciones, excelente aporte funciona correctamente saludos

RAU
13agosto,2015alas19:39

Hola. Q. Tal. Quisiera. Saber. Los. Pasos detallados para. Publicar. Un proyecto.
Baje los. De. Ejemplo. Ya. Tengo. Funcionando sonsaque en. Linux. Y. Quiero.
Correr. Desde. Mi. Pc.los. Proyectos. Ah. Instale . Sonarruner pero. Tengo.
Windows. Ya. Llego. Va. Ip.

http://enrikusblog.com/sonarqubeanalizandounproyectojava/

11/12

25/8/2015

SonarQube:analizandounproyectoJava|Enrikus'Blog

Como. Corro. Los. Proyectos. Saludos

Creado con WordPress

http://enrikusblog.com/sonarqubeanalizandounproyectojava/

12/12

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