En esta entrada vamos a ver cómo utilizar SonarQube, una herramienta que analiza la calidad y seguridad de nuestro código fuente, la cual es una pieza más dentro de un entorno SecDevOps realizando una Inspección Continua (CI) de nuestros proyectos.
Vamos a ver cómo podemos desplegar SonarQube dentro de un contenedor Docker.
La manera más sencilla es levantar el contenedor usando la última versión disponible en dockerhub, ejecutando el siguiente comando:
$ docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube
Una vez levantado el contenedor, no tenemos más que acceder a nuestro localhost al puerto 9000. El usuario/password por defecto es admin/admin.

Una vez hemos hecho login, entramos en el panel principal donde podremos ver nuestros proyectos, las issues, las reglas configuradas por defecto…

Ahora vamos a proceder a crear un nuevo proyecto para analizar. Le damos al botón «Create new project» y nos pedirá que indiquemos un project-key, que será una clave para identificar a nuestro proyecto.

A continuación nos pedirá que generemos un token, el cual servirá para identificarnos cuando hagamos un análisis.

Una vez le damos a Generate, se nos generará un token.

A continuación nos preguntará por el lenguaje de programación (en este caso elegiré Java) y por la tecnología de construcción del proyecto (Maven en mi caso).

Y como vemos, nos da el comando a ejecutar con maven para analizar nuestro código a partir del projectKey y del token generado.
Una vez lanzado el comando anterior dentro de nuestro proyecto maven, podremos ver el resultado del análisis dentro de nuestro sonarQube.

En este caso, era un ejemplo muy sencillo donde tan solo se aprecia un bug, pero como vemos ha pasado las condiciones necesarias para tener un código de calidad. Ahora, nuestra misión sería mejorar todos los bugs, issues, fallos de seguridad, etc. que tuviera nuestro código.
Debemos notar que este contenedor guarda todos los análisis realizados en una base de datos embebida, como podemos apreciar en la siguiente advertencia que nos muestra sonarQube.

Lo interesante es tener una base de datos aparte que nos almacene esta información si estamos en un entorno diferente al de prueba. En la siguiente entrada veremos cómo hacer esto con docker-compose y una base de datos PostgreSQL.