SonarQube es una herramienta que permite analizar el código fuente. Entre otras cosas, nos informa sobre código duplicado, estándares de codificación, pruebas unitarias, cobertura de código, complejidad ciclomática y más cosas.
Sonar nació para ser utilizada en desarrollos Java, pero actualmente soporta más de 20 lenguajes incluyendo Javascript, PHP, Cobol, PL, C#, … Además, puede extenderse a través de plugins, tanto para soportar más lenguajes como para soportar nuevos lenguajes.
Se integra con Maven, Ant y herramientas de integración continua como Atlassian Bamboo y Jenkins.
Si no estás seguro de si esta herramienta es para ti, o si antes de hacer esta instalación básica, quieres verlo en acción, accede a Nemo, una demo pública de SonarQube. Las medidas que podrás ver están tomadas de proyectos reales de código abierto como Apache, JBoss, Sourceforge, Codehaus, OW2, GoogleCode, SpringSource, OPS4J y otros.
Instalar sonar es relativamente sencillo. Sigue los siguientes pasos:
1.- Descarga y descomprime SonarQube (por ejemplo en “C:\sonarqube” o “/etc/sonarqube”)
2.- Arranca el servidor SonarQube:
# On Windows, ejecuta: C:\sonarqube\bin\windows-x86-xx\StartSonar.bat # En Linux y Mac, ejecuta: /etc/sonarqube/bin/[OS]/sonar.sh console
3.- Descarga y descomprime SonarQube Runner (por ejemplo en “C:\sonar-runner” o “/etc/sonar-runner”)
4.- Descarga y descomprime algunos proyectos de ejemplo (por ejemplo en “C:\sonar-examples” o “/etc/sonar-examples”
5.- Analiza un proyecto:
# En Windows: cd C:\sonar-examples\projects\languages\java\sonar-runner\java-sonar-runner-simple C:\sonar-runner\bin\sonar-runner.bat # En Linux y Mac: cd /etc/sonar-examples/projects/languages/java/sonar-runner/java-sonar-runner-simple /etc/sonar-runner/bin/sonar-runner
6.- Navega por los resultados a través de la URL: http://localhost:9000 (las credenciales por defecto de System administrator son admin/admin).
Una vez que tengamos instalado y funcionando la herramienta, tendremos que habituarnos a ella, y a su funcionamiento.
Por ejemplo, en relación a la complejidad ciclomática, SonarQube considera que un método tiene por defecto una complejidad de 1 (excepto los getters y setters que no se consideran para este cálculo), y suma +1 cada vez que aparece alguna de las siguientes instrucciones (if, for, while, case, catch, throw, return, &&, ||, ?), no haciendo distinción sobre las mismas. Esta es la forma en que la calcula esta herramienta, por lo que los cálculos serán diferentes de los que nos dé otra herramienta.
Creo que a este artículo le falta comentar los cambios que se deben realizar el fichero de configuración sonar.properties y wraper.conf para hacerlo funcionar.
Aun así, muchas gracias por todos sus artículos.
Hola Javier,
Muchas gracias por tu comentario. En principio, para lo que proponíamos en el artículo, que era la instalación básica, y un primer análisis de los ejemplos que proporciona la gente de Sonarqube, con seguir los pasos indicados es suficiente. Acabo de repetirlo, para asegurarme, y tal y como lo descomprimes, yendo por línea de comandos a la ruta dónde está el archivo StartSonar.bat correspondiente a nuestro sistema operativo, arranca a la primera.
Eso si, vamos a utilizar la base de datos embebida, y nos aparecerá este mensaje: “Embedded database should be used for evaluation purpose only”, pero el server es completamente funcional, aunque no tiene la configuración adecuada para un entorno más allá de un laboratorio.
En cualquier caso, creo que sería muy interesante que nos comentes los cambios que has realizado tú en sonar.properties y wraper.conf, y qué errores te aparecían antes de hacer esos cambios.
De nuevo muchas gracias por tu comentario y un cordial saludo.
Siguiendo los pasos, este es el error que me aparece: El nombre de archivo, el nombre de directorio o la sintaxis de la etiqueta del volumen no son correctos.
Un saludo,
Gracias por el tutorial de instalación. Muy útil y sencillo.
Felicidades por el blog.
Hola, al realizar los pasos de arriba me da el siguiente error WrapperSimpleApp:Unable to locate the class org.sonar.application.App: java.lang.UnsupportedClassVersionError.
esperando que me puedan ayudar
PD: tomé la imagen del error pero aquí no tengo la posibilidad de subirla
Hola Marelis,
Este error es por que no tienes el Jdk 8 instalado en tu equipo.
Saludos.
Buen artículo. No he tenido la oportunidad de usarlo. Se puede hacer análisis de repositorios de código fuente en diferentes lenguajes?
O cada corrida de análisis se hace para un lenguaje de programación en específico?
Esto soporta sql (para usarse com código de sql Server)
Puedes analizar diferentes lenguajes pero tendrás que hacerlo con diferentes jobs.
Sobre el soporte para SQL te dejo un par de enlaces:
https://docs.sonarqube.org/display/PLUG/SonarPLSQL
http://qualilogy.com/es/analisis-plsql-con-sonarqube-el-quality-profile-plsql/
Hola, muy buen articulo.
Me queda la duda el uso comercial de SonarQube. Hay varias versiones, pero no me queda claro si la versión “Community Edition” se puede utilizar para uso comercial.
Las demás versiones “Developer Edition”, “Enterprise Edition” y “Data Center Edition” agregan soporte para mas lenguajes y topes en la cantidad de lineas de código a analizar.
Saludos.