BLOG

Configurar SonarQube en un entorno de integración continua
DevOps-Tecnología

SonarQube es la herramienta que usaremos para revisar código fuente y analizar la calidad del software que estamos desarrollando. En este post veremos como instalarla y configurarla.

Antes de comenzar con la instalación de SonarQube, es importante saber que esta herramienta requiere de una base de datos para poder funcionar. Por defecto viene configurada para trabajar con H2, una base de datos embebida que sólo se recomienda utilizar para pruebas. SonarQube es compatible con MySQL 5.x, Oracle 10g/11g, PostgreSQL 8.x/9.x y SQLServer 2008/2012. Para nuestro ejemplo, utilizaremos MySQL 5.6, pero si tienes otro gestor de base de datos instalado, puedes utilizarlo igualmente sin problemas.

Instalación de MySQL

MySQL dispone de una versión community que puedes descargarte en el siguiente link:

Selecciona la plataforma sobre la que vas a instalar MySQL y descarga el ejecutable de instalación que corresponda. Para poder realizar la descarga, necesitaras disponer de una cuenta web Oracle. Si aun no tienes creada una, puedes hacerlo en este link.

Una vez has descargado el instalador, sólo tendrás que ejecutarlo y seguir los pasos que te indique el asistente. Veras que el proceso de instalación es muy sencillo.

Instalación MySQL

Una vez finalizado el proceso de instalación, te recomiendo añadir una nueva variable de entorno al PATH de tu equipo que apunte a la ruta donde instalaste MySQL. En mi caso, que la prueba la estoy haciendo en OS X, escribiría en un terminal el siguiente comando para editar las variables de entorno:

touch ~/.bash_profile; open ~/.bash_profile

Y configuramos el PATH de la siguiente manera:

#MYSQL PATH
export MYSQL_PATH=/usr/local/mysql
#MAIN PATH
export PATH=$MYSQL_PATH/bin:$MYSQL_PATH/support-files:$PATH

Si el PATH lo estás editando en Mac OS X, una vez actualizado y guardado los cambios, recuerda escribir el siguiente comando para cargar en memoria la nueva configuración sin necesidad de reiniciar tu equipo:

source ~/.bash_profile

Ya sólo queda levantar el servidor de MySQL y probar que todo funciona correctamente. Para ello, el script que utilizaremos se llama mysql.server que está ubicado en la carpeta /support_files.

Para iniciar o parar el servidor de MySQL, es necesario que seas administrador de tu equipo. Abre un terminal y escribe el comando sudo ./mysql.server start. Si te pide contraseña, introduce la del administrador de tu equipo . Si todo fue bien, deberías ver un mensaje como el que muestra la imagen siguiente:

Bash MySQL Server levantado

Para acceder a la consola de MySQL, es tan sencillo como escribir en el terminal mysql y si quieres acceder con permisos de administrador, teclea mysql -u root -p


Shell consola MySQL en Mac
Para detener el servidor, simplemente introduce el comando:

sudo mysql.server stop

Es necesario crear un esquema y asignarle un usuario que permita crear, modificar y eliminar datos en dicho esquema. Recuerda que el charset de la base de datos debe ser UTF-8. El script SQL para crear el esquema y el usuario es el siguiente:

CREATE DATABASE sonarqube CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE USER 'sonarqube' IDENTIFIED BY 'sonarqube';
GRANT ALL ON sonarqube.* TO 'sonarqube'@'%' IDENTIFIED BY 'sonarqube';
GRANT ALL ON sonarqube.* TO 'sonarqube'@'localhost' IDENTIFIED BY 'sonarqube';
FLUSH PRIVILEGES;

Llegados a este punto, si has conseguido crear el esquema y usuario sin problemas, estamos preparados para comenzar con la instalación de SonarQube.

Instalación de SonarQube

La instalación de esta herramienta es muy sencilla. Simplemente sigue los siguientes pasos:

  1. Descarga aquí la última versión del servidor desde la página oficial (Actualmente SonarQube 5.1.2)
  2. Descomprime el fichero zip que acabas de descargar en la carpeta donde quieras instalar Sonar
  3. Accede a la carpeta de instalación y localiza la carpeta ./bin. Aquí encontrarás una subcarpeta por cada uno de los distintos sistemas operativos. Estas carpetas contienen el ejecutable que levanta el servidor de Sonar. Localiza la tuya. Por ejemplo en mi caso el SO sería OS X y el ejecutable shSonar_Instalación
  4. Para levantar el servidor, puedes hacerlo desde un terminal introduciendo el comando
    ./sonar.sh console
  5. Antes de levantar el servidor, localiza el fichero sonar.properties ubicado en sonarqube-5.1.2/conf/ y ábrelo con un editor. Asegúrate que las siguientes líneas están no estén comentadas:
    sonar.web.host=localhost
    sonar.web.port=9000
    
  6. Ahora sí, inicia el servidor y si todo ha ido bien podrás acceder a SonarQube en la URL https://localhost:9000/
  7. Para logarte en SonarQube como administrador, introduce admin / admin
  8. Si quieres obtener más información de SonarQube, puedes consultar la documentación oficial

Con estos pasos, hemos finalizado la instalación básica de SonarQube.

Por último, si utilizas Eclipse, informarte que existe un plugin para trabajar con Sonar. Jose Manuel Sánchez Suarez explica muy bien en este post como instalarlo y utilizarlo.

Configura SonarQube para trabajar con MySQL

SonarQube está configurado por defecto para trabajar con H2. Lo que vamos a hacer a continuación es modificar esa configuración para integrarlo con MySQL.

  1. Abre de nuevo el fichero properties y comenta la siguiente línea para indicar que SonarQube no utilice H2 como base de datos:
    #sonar.jdbc.url=jdbc:h2:tcp://localhost:9092/sonar
  2. A continuación quita el comentario de las siguientes líneas que también encontrarás en el fichero, para indicar tanto la base de datos que utilizaremos como el usuario y contraseña de acceso:
    # User credentials
    sonar.jdbc.username=sonar
    sonar.jdbc.password=sonar
    
    # MySQL
    sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
    
  3. Guarda los cambios realizados en el fichero sonar.properties y vuelve a levantar el servidor de SonarQube. Si todo ha ido bien, deberías ver un mensaje parecido a este: Sonar_Server copia
  4. Abre un navegador, accede a la URL https://localhost:9000/ y comprueba que SonarQube esta disponible y tienes acceso. Deberías poder visualizar una pantalla como la siguiente:Apariencia SonarQube
  5. Por último, y si te resulta de interés, aquí te dejo un link de un post de Jose Alberto Ruiz que explica como configurar Maven de forma sencilla para analizar un proyecto con SonarQube

Instalación y configuración de SonarQube Runner

Sonar-Runner es el cliente oficial para analizar proyectos con SonarQube. Para instalarlo y configurarlo sigue los siguientes pasos:

  1. Lo primero de todo es descargar aquí la última versión del software disponible
  2. Descomprime el fichero zip que acabas de descargar en la carpeta que donde quieras instalar el programa
  3. Localizada el fichero sonar-runner.properties, ubicado en la carpeta sonar-runner-2.4/conf/ y ábrelo con un editor de textos para modificarlo.
  4. Asegúrate que las siguientes líneas dentro del fichero no aparezcan comentadas y que contengan la siguiente información:
    #----- Default SonarQube server
    sonar.host.url=https://localhost:9000
    
    #----- MySQL
    sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8
    
    #----- Global database settings
    sonar.jdbc.username=sonar
    sonar.jdbc.password=sonar
    
  5. Añadir al PATH una nueva variable de entorno que apunte al directorio de instalación de Sonar-Runner. En mi caso quedaría de la siguiente manera:
    #SONAR_RUNNER
    export SONAR_RUNNER_HOME=/Users/robertocrespo/Documents/Programming/sonar-runner-2.4
    
    #MAIN PATH
    export PATH=$MYSQL_PATH/bin:$MYSQL_PATH/support-files:$SONAR_RUNNER_HOME/bin:$PATH
    
  6. Puedes comprobar que la configuración del PATH es correcta abriendo un nuevo terminal e introduciendo el comando sonar-runner –h. Deberías tener que ver el siguiente mensajeSonar Runner help
  7. Con estos pasos ya tendríamos configurado tanto el cliente como el servidor de SonarQube.
  8. Si ahora quisieras analizar un proyecto java con Sonar-Runner, tendrías que crear en la carpeta raíz del proyecto un fichero llamado sonar-project.properties que estuviera configurado de la siguiente manera:Sonar-project-properties
    # Equivalente al groupId de Maven
    sonar.projectKey=net.robertocrespo
    
    # Equivalente al artifactId de Maven
    sonar.projectName=web
    
    # Equivalente a la versión de Maven
    sonar.projectVersion=0.0.1
    
    # Directorio donde resida el código fuente a analizar
    sonar.sources=src
    
    # Lenguaje que a analizar (Java por defecto)
    sonar.language=java
    
    # Encoding de código fuente
    sonar.sourceEncoding=UTF-8
    
  9. Por último, ya sólo queda ejecutar Sonar Runner. Sitúate con un terminal en la carpeta raíz del proyecto java que quieres analizar y teclea el comando sonar-runner. Una vez finalizado el análisis, podrás consultar los resultados en https://localhost:9000

Instalación de plugins en SonarQube  para analizar nuevos lenguajes

Cuando instalas por primera vez SonarQube, la herramienta incluye por defecto el plugin de java. Si tu objetivo es analizar otros lenguajes de programación, será necesario instalar nuevos plugins. Imaginemos, por ejemplo, que nos interesa analizar código escrito en python. Los pasos que seguiremos para instalar el plugin correspondiente serían:

1 – Autenticación: asegúrate que te has logado en Sonar con el usuario administrador (por defecto admin/admin)

2 -Localización plugin: Accede a Setting –> System –> Update Center 

Instalación plugins SonarQube - Update Center

3- Seleciona la pestaña Available Plugins

Instalación plugins SonarQube - available plugins

 4 – En el apartado Languages encontrarás los plugins de los todos lenguajes que puedes analizar con SonarQube. Para nuestro ejemplo seleccionaremos el de Python y haremos click en el botón instalar

Instalación plugins SonarQube - Install Python Plugin

5 – Reiniciar el servidor de Sonar para aplicar los cambios. Si todo ha ido bien, en la pestaña Installed plugins de Update Center deberá aparecer el nuevo plugin que acabamos de instalar

Sólo tendrás que seleccionarlo para instalarlo y reiniciar Sonar para que los cambios apliquen - plugin python installed

Para utilizar el nuevo plugin, sólo tendremos que indicar en el fichero de propiedades sonar-project.properties el lenguaje de programación que queremos analizar.  En nuestro ejemplo sería py (python)

# Lenguaje que a analizar 
sonar.language=py

Finalizada la configuración de MysSQL y SonarQube, continua este tutorial con la instalación de Nexus OSS.

Comparte este artículo si te gustó:

5 Responses

  1. Un apunte, en la versión que me he descargado yo, ya venían muchos lenguajes de programación, no me ha hecho falta instalar ningún plugin.

    Saludos.

  2. Me parece que te falta crear el usuario de mysql con acceso de localhost.

    CREATE USER ‘sonarqube’@’localhost’ IDENTIFIED BY ‘sonarqube’;

    Sino no me dejaba hacer el segundo GRANT.

  3. Hola Roberto,

    Nosotros estamos testeando sonar para PLSQL, me queda una duda, que guarda en la base de datos esta herramienta, guarda algo en alguna tabla?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

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