SonarQube. Instalación básica y primeros análisis

SonarqubeSonarQube 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 MavenAnt 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.

SonarQube Nemo

 

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

Ejecutando SonarQube

6.- Navega por los resultados a través de la URL: http://localhost:9000 (las credenciales por defecto de System administrator son admin/admin).

Sonar Home Sonar Metrics

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.

SonarQube. Instalación básica y primeros análisis

12 comentarios en «SonarQube. Instalación básica y primeros análisis»

  1. 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.

  2. 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

  3. 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)

  4. 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.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para fines de afiliación y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad