SonarQube, gestionando la calidad del código.

Equipo Sofka
19 octubre, 2022
Comparte
Autor: Ángela Espinosa Granada.

El mundo del Desarrollo de Software está en constante cambio, siempre en la búsqueda de mejorar  los tiempos de ejecución de un código y la calidad del mismo dando origen a nuevos lenguajes, frameworks y herramientas, y junto con ellas, el desacoplamiento del rol del desarrollador, permitiéndole enfocarse en lo que hoy en día se conoce como Frontend y Backend, logrando tal éxito, que se empezó a implementar más allá del equipo de desarrollo y es así como nació DevOps, como un puente entre el equipo de desarrollo y el equipo de infraestructura. 

DevOps trajo consigo muchas herramientas que permiten la detección temprana a muchos problemas que se daban al interior del desarrollo de un proyecto, entre ellas, SONARQUBE, permitiendo realizar una gestión continua de la calidad del software.

SonarQube nos ofrece una vista instantánea de la calidad del código en un momento dado, así como un histórico de la evolución de esta calidad a lo largo del tiempo. Con indicadores cuantitativos como por ejemplo la cantidad del código que es cubierto por las pruebas unitarias, la complejidad ciclomática de ese código o la duplicación; con esto podemos medir que tan bueno es el proyecto y la calidad de los desarrolladores que lo mantienen. Hoy en día permite integrarse con los IDE de desarrollo y con las herramientas de Integración continua como Jenkins. También soporta una gran cantidad de lenguajes, entre ellos JAVA, PYTHON, C# y muchos más. (Adaptado de BD Tech.2022)

El poder detectar un error de código antes de que salga a producción es una de las ventajas que ofrece DevOps. Así como la interpretación de las diferentes métricas de SonarQube, permitiendo entrar a solucionar casi de forma inmediata aquellos errores que representan un gran riesgo para la funcionalidad de todo el proyecto. 

El poder integrar SonarQube con cualquiera de las herramientas actuales de un equipo de desarrollo para poder escanear en tiempo real el código, nos da la facilidad de detectar  código duplicado sin importar que se encuentre en ramas distintas dentro de un mismo repositorio, al igual que nos permite enviar los reportes del análisis  del mismo a los distintos canales de comunicación del equipo, canales  como slack, justo después de realizar un commit al repositorio del proyecto.

Toda esta información, nos brinda la oportunidad de corregir y mejorar nuestro código antes de salir a producción, lo que representa un ahorro en tiempo y dinero, al igual que permite a cada uno de los miembros del equipo de desarrollo recibir una retroalimentación temprana ayudando a mejorar su desempeño y el de todo su equipo de trabajo, permitiendo su alineación con todas y cada una de las políticas de trabajo que hacen que Sofka marque siempre la diferencia.

Quieres conocer más sobre DevOps e implementación de SonarQube, ¡contáctanos!

Sofka, siempre haciendo la diferencia. 

Implementando SonarQube de manera local

A continuación, les mostraré como podemos instalar de forma local SonarQube en nuestro sistema operativo Ubuntu y como lograr cargar la interfaz gŕafica a través del localhost de nuestro equipo.

Para poder realizar la instalación de SonarQube, debemos contar con JDK y el JRE ya instalado.

También es necesario la instalación de un motor de Base de Datos para que SonarQube tenga donde guardar los reportes y análisis realizados, para ello debemos contar PostgreSql instalado:

Con nuestro servicio de Postgres ya instalado e iniciado, vamos a configurarlo, para ello primero vamos a crear un nuevo usuario para acceder a postgresql y este será el usuario que SonarQube usará para acceder a una base de datos específica:

Ahora, para cambiar la contraseña del usuario que acabamos de crear es necesario ir a la SHELL de postgresql, para ello colocamos el comando PSQL:

Una vez allí, ejecutamos el siguiente comando para establecer la nueva contraseña de nuestro usuario:

Al igual creamos una base de datos exclusivamente para SonarQube y de una vez le damos privilegios de propietario a nuestro usuario sobre la misma: 

Ahora, solo nos falta reiniciar el servicio de Postgresql y verificar su status:

Por defecto postgres se ejecuta por el puerto 5432, podemos confirmar ejecutando el siguiente comando:

Muy bien, ya tenemos Java y postgresql instalado y configurado. Ahora procedemos a instalar SonarQube.

Antes de empezar, vamos a realizar los siguientes pasos de configuración para que nuestra aplicación funcione correctamente:

Muy bien, ahora, vamos a ingresar a la ruta /tmp y desde allí ejecutamos el siguiente comando que nos permitirá descargar el archivo binario de sonarqube:

Ahora descomprimimos el archivo dentro del directorio /OPT:

Movemos los archivos al directorio /opt/sonarqube:


Para evitar que se nos detenga de forma automática la aplicación debido a ejecutarla con un usuario root, vamos a crear un grupo nuevo:

Ahora asociamos nuestro usuario a este grupo junto con el usuario que creamos en postgres al igual que le asociamos el directorio donde estan los archivos de sonarqube:

No olvidar relacionar tanto el usuario como su contraseña

Ahora, vamos a ejecutar el siguiente comando para modificar el archivo sonar.properties con el editor de texto nano:

Una vez dentro, vamos a agregar el usuario, contraseña y la url de acceso a la base de datos que creamos exclusivamente para sonarqube:

guardamos con CTRL + O y luego salimos con CTRL + X.

Ahora vamos a configurar el usuario con el que vamos a estar trabajando, para ello ejecutamos el siguiente comando para que se nos habilite el archivo sonar.sh con el editor de texto nano:

Una vez dentro, editamos el archivo de secuencia de comandos y establecemos el usuario:

Guardamos y salimos.

Ahora, nos movemos al directorio /opt/sonarqube/bin/linux-x86-64/ e iniciamos sonar:

Confirmamos que sonarqube no se haya detenido automáticamente verificando su estado:

Ahora vamos a consultar el log de sonar para confirmar que si nos haya subido el servicio, para ello ingresamos a la ruta /opt/sonarqube/logs/ y ejecutamos el archivo cuyo nombre diga sonar.fecha.log:

Con esto podemos comprobar en las últimas líneas que SonarQube está arriba.

Ahora, vamos a configurarlo para que nuestro servicio inicie de una forma más sencilla, para ello detenemos el servicio:

Ahora vamos a crear un script de inicio para que levante el servicio de sonarqube con el sistema, para ello creamos un archivo con el siguiente contenido:

Guardamos con CTRL+O y salimos con CTRL+X.

Una vez creado, para poderlo utilizar vamos a habilitarlo para su ejecución:

Ahora validamos el estado

SonarQube, corre por defecto a través del puerto 9000, por eso es importante desde nuestra consola habilitar el UFW y agregarle las reglas 9000/tcp para que nos permita acceder de forma local a la interfaz gráfica de Sonarqube:

Por último, vamos al navegador y al colocar la url http://localhost:9000, nos dará acceso:

Muy bien para ingresar la primera vez, el trae por defecto el usuario admin – contraseña admin, una vez dentro nos pide por seguridad cambiar la contraseña:

Una vez ya estemos dentro podremos acceder a la interfaz gráfica de SonarQube:

Muy bien hasta ahora, logramos instalar Sonarqube y configurarlo, pero para poder usarlo en nuestros proyectos, debemos instalar el Sonar Scanner y configurarlo para su funcionamiento global:

Primero vamos de nuevo a nuestro directorio /tmp:

Ahora, directamente desde la página oficial de SonarQube https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/  buscamos SonarScanner y escogemos nuestro sistema operativo que en este caso es ubuntu, y sobre el enlace de descarga, le damos clic derecho y copiamos el enlace:

Ahora volvemos a nuestra terminal y ejecutamos el siguiente comando agregando la dirección del enlace que acabamos de copiar:

Una vez terminamos la descarga, la descomprimimos:

Ahora vamos a mover esta carpeta al directorio /opt/sonarqube/

Nos dirigimos al directorio donde acabamos de mover nuestro archivo de sonar-scanner:

En nuestra terminal, con ayuda del editor de texto nano, abrimos el sonar.properties para su configuración el cual se encuentra en la ruta  /sonar-scanner/conf/sonar-scanner.properties/

Una vez allí dentro, descomentamos las siguientes líneas:

Ahora, agregamos la ruta del directorio BIN del sonar-scanner a nuestro PATH:

Ahora confirmamos que si quedó en el path ejecutando el comando ENV | GREP PATH

Por último, confirmamos que si está correctamente instalado el sonar scanner validando la versión:

REFERENCIAS:

BD Tech.[https://www.udemy.com].2022.Gestión Continua de la Calidad del Software con SonarQube.https://www.udemy.com/course/gestion-continua-de-la-calidad-del-software-con-sonarqube/#overview

https://docs.sonarqube.org/latest/

Más artículos