SonarQube es una herramienta de análisis estático de código. Extrae métricas con las que se puede obtener una percepción objetiva de la calidad del código que hemos desarrollado. Es capaz de detectar vulnerabilidades, agujeros de seguridad, código "smell", antipatrones etc...
Es una herramienta de software libre que requiere la preinstalación de una serie de requisitos, y cuyo proceso completo de configuración puede parecer algo engorroso. Te pondré aquí los pasos a seguir para su instalación en SO Debian. Todos los pasos aquí indicados presumen que la ejecución se está llevando a cabo como usuario root
. En caso contrario, las tareas administrativas deberán precederse de sudo
.
Pre-Requisito 1 - Instalación de Java
Para instalar el JDK de la última versión de Java ejecutaremos:
apt-get install default-jdk
Pre-Requisito 2 - Instalación de Sql Server
En primer lugar, debemos instalar los repositorios de Microsoft en Debian:
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl https://packages.microsoft.com/config/ubuntu/18.04/mssql-server-2019.list | tee /etc/apt/sources.list.d/mssql-server.list
apt-get update
apt-get install -y mssql-server
Posteriormente ejecutaremos el script de instalación y configuración de SQL Server
/opt/mssql/bin/mssql-conf setup
Seleccionar las siguientes opciones:
- Tipo de licencia: 3 (Express). En caso de tener alguna licencia de pago, usar licencia de pago
- Aceptar contrato: Yes
- Introducir la contraseña de administrador
Reiniciamos el servicio mediente:
systemctl restart mssql-server.service
Posteriormente instalaremos las herramientas de línea de comandos de SQL Server. Añadiremos además estas herramientas al PATH para que estén accesibles desde cualquier carpeta:
curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list
apt-get update
apt-get install mssql-tools unixodbc-dev
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc
Abriremos la sesión de SQL Server. Usaremos la contraseña de administrador indicada en la ejecución del proceso de configuración.
sqlcmd -S localhost -U SA -P <contraseña_administrador>
Ejecutaremos los siguientes comandos para crear la configuración necesaria para Sonar
EXEC sp_configure 'CONTAINED DATABASE AUTHENTICATION',1
GO
RECONFIGURE
GO
CREATE DATABASE sonar COLLATE SQL_Latin1_General_CP1_CS_AS
GO
USE sonar
GO
CREATE LOGIN sonarqube WITH PASSWORD = '<contraseña_usuario_sonarqube>'
GO
CREATE USER sonarqube FOR LOGIN sonarqube
GO
CREATE SCHEMA sonar AUTHORIZATION sonarqube
GO
GRANT SELECT,INSERT,UPDATE,DELETE,ALTER ON SCHEMA ::dbo TO sonarqube
GO
ALTER DATABASE sonar SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE
GO
Instalación de SonarQube
En primer lugar deberemos obtener el ZIP con el software. Debemos tener en cuenta que la versión 8.2.0.32929 es la disponible en el momento de redacción de este artículo. Se deberá revisar la versión disponible en el momento de la lectura para descargar la versión más reciente.
wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.2.0.32929.zip
Creación de un usuario (usr_sonar
) y grupo (grp_sonar
) Linux específico para Sonar
groupadd grp_sonar
mkdir /home/sonar
useradd -c "Sonar user" -d /home/sonar/ -g grp_sonar -s /bin/bash usr_sonar
Movemos el fichero descargado a la carpeta del usuario usr_sonar,
lo descomprimimos y asignamos todos los archivos al usuario Sonar
mv ~/sonarqube-8.2.0.32929.zip /home/sonar
cd /home/sonar
unzip sonarqube-8.2.0.32929.zip
chown -R usr_sonar:grp_sonar /home/sonar
Modificaremos el fichero conf/sonar.properties
.
El dato <contraseña_usuario_sonarqube>
es la contraseña especificada en la configuración de SQL Server para Sonar. El dato <puerto>
nos permite definir un puerto para acceder a la aplicación desde el navegador. Por defecto es 9000. El dato <sub_ruta_a_aplicacion>
permite establecer una ruta para añadir a la ruta base en la URL para llamar a SonarQube desde el navegador.
Es posible que se deban descomentar algunas de las opciones quitando #
sonar.jdbc.username=sonarqube
sonar.jdbc.password=<contraseña_usuario_sonarqube>
sonar.jdbc.url=jdbc:sqlserver://localhost;databaseName=sonar
sonar.web.port=<puerto>
sonar.web.context=<sub_ruta_a_aplicacion>
Posteriormente modificaremos el fichero bin/linux-x86-64/sonar.sh
.
Es posible que se deban descomentar algunas de las opciones quitando #
RUN_AS_USER=usr_sonar
Copiaremos el fichero sonar.sh
a /etc/init.d/sonar
cp bin/linux-x86-64/sonar.sh /etc/init.d/sonar
Crearemos la carpeta del daemon
mkdir /var/run/sonardaemon
chown usr_sonar:grp_sonar /var/run/sonardaemon
Modificaremos el fichero /etc/init.d/sonar
.
SONAR_HOME="/home/sonar/sonar"
PLATFORM="linux-x86-64"
WRAPPER_CMD="${SONAR_HOME}/bin/${PLATFORM}/wrapper"
WRAPPER_CONF="${SONAR_HOME}/conf/wrapper.conf"
PIDDIR="/var/run/sonardaemon"
Finalmente, eliminamos los startup links, ajustamos permisos y reiniciamos
update-rc.d -f sonar remove
chmod 755 /etc/init.d/sonar
update-rc.d sonar defaults
Arrancamos SonarQube
/etc/init.d/sonar start
Esta ejecución debería dar los siguientes mensajes:
Starting SonarQube...
Started SonarQube.
En caso de que no aparezca el mensaje Started SonarQube
, se deberán revisar los logs sonar.log
, es.log
y web.log
.
Se puede consultar el estado de SonarQube mediante el comando:
/etc/init.d/sonar status
Esto debería devolver un mensaje similar al siguiente:
SonarQube is running (13268).
Ya podremos acceder a nuestro SonarQube mediante un navegador de Internet, usando el puerto y ruta indicados en el fichero de configuración. Imaginemos que sonar.web.port
tenga el valor 10000
y sonar.web.context
tenga el valor /sonarqube
. Suponiendo que estemos trabajando en localhost
, accederemos mediante:
http://localhost:10000/sonarqube