Instalación SonarQube

Author
By Darío Rivera
Posted on 2020-01-03 in Static Code Analysis
Tags   SonarQube 8

SonarQube es una herramienta de calidad de código y seguridad (code quality and security) GNU que permite analizar el código fuente de manera automatizada. Permite mediante una serie de reglas analizar la calidad del código utilizando análisis estático en más de 20 lenguajes de programación distintos, para encontrar bugs, hediondez en código (code smell), y vulnerabilidades de seguridad. Las características más importantes de SonarQube incluyen:

- Detectar bugs y vulnerabilidades
- Revisión de Security Hotspots
- Detectar y arreglar la deuda técnica
- Análisis de métricas de código (código duplicado, standards, coverage)
- Integración CI/CD
- +60 plugins de la comunidad

Además de esto, guarda registro de cada análisis y determina métricas para el nuevo código, es decir, puede determinar el coverage solamente de las líneas agregadas en el último cambio. Con esta funcionalidad, llamada Quality Gate, se pretende sentar un lineamiento o política de calidad en el proceso de desarrollo e integración continua.

Instalación

Lo primero que debes hacer es ingresar a la página de descargas de SonarQube y descargar la versión Community Edition. Debes descomprimir el archivo ZIP y copiarlo en alguna carpeta como /opt, /usr/local/opt o C: (windows).

sudo cp -R ~/Downloads/sonarqube-8.1.0.31237 /usr/local/opt/

Enseguida, es recomendable configurar el acceso al SonarQube en el archivo conf/sonar.properties. Debes buscar las siguientes variables y configurarlas con los valores deseados.

sonar.web.host=127.0.0.1
sonar.web.port=9000

Después de esto debes ejecutar una de las siguientes líneas dependiendo de tu sistema operativo.

# On Windows, execute:
C:\sonarqube8\bin\windows-x86-xx\StartSonar.bat

# On other operating systems, as a non-root user execute:
/opt/sonarqube8/bin/[OS]/sonar.sh console

En mi caso, con MacOS el comando para la versión que 8.1 sería el siguiente:

./bin/macosx-universal-64/sonar.sh console

Debes tener cuidado de no ejecutar el anterior comando con el usuario root ya que el componente ElasticSearch no permite ejecución con este usuario. Si no tienes java instalado (jre o jwk) obtendrás una salida como la siguiente:

Running SonarQube...
wrapper  | --> Wrapper Started as Console
wrapper  | Launching a JVM...
wrapper  | JVM exited while loading the application.
jvm 1    | No Java runtime present, requesting install.
wrapper  | JVM Restarts disabled.  Shutting down.
wrapper  | <-- Wrapper Stopped

Si ejecutaste sonar.sh con root podrías tener el siguiente error.

Running SonarQube...
wrapper  | --> Wrapper Started as Console
wrapper  | Launching a JVM...
jvm 1    | Wrapper (Version 3.2.3) http://wrapper.tanukisoftware.org
jvm 1    |   Copyright 1999-2006 Tanuki Software, Inc.  All Rights Reserved.
jvm 1    | 
jvm 1    | 2020.01.03 23:04:55 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /usr/local/opt/sonarqube8/temp
jvm 1    | 2020.01.03 23:04:55 INFO  app[][o.s.a.es.EsSettings] Elasticsearch listening on /127.0.0.1:9001
jvm 1    | 2020.01.03 23:04:55 INFO  app[][o.s.a.ProcessLauncherImpl] Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [/usr/local/opt/sonarqube8/elasticsearch]: /usr/local/opt/sonarqube8/elasticsearch/bin/elasticsearch
jvm 1    | 2020.01.03 23:04:55 INFO  app[][o.s.a.SchedulerImpl] Waiting for Elasticsearch to be up and running
jvm 1    | OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
jvm 1    | 2020.01.03 23:04:56 INFO  app[][o.e.p.PluginsService] no modules loaded
jvm 1    | 2020.01.03 23:04:56 INFO  app[][o.e.p.PluginsService] loaded plugin [org.elasticsearch.transport.Netty4Plugin]
jvm 1    | 2020.01.03 23:05:04 WARN  app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [es]: 1
jvm 1    | 2020.01.03 23:05:04 INFO  app[][o.s.a.SchedulerImpl] Process[es] is stopped
jvm 1    | 2020.01.03 23:05:04 INFO  app[][o.s.a.SchedulerImpl] SonarQube is stopped
wrapper  | <-- Wrapper Stopped

Si todo ha salido bien, debes ver la última línea de ejecución similar a la siguiente.

jvm 1 | 2020.01.03 23:22:25 INFO  app[][o.s.a.SchedulerImpl] SonarQube is up

Finalmente podrás ingresar al SonarQube a dirección http://127.0.0.1:9000 o a la que hayas configurado. Debes tener en cuenta que la base de datos con la que se ha instalado es una base de datos embebida y con propósitos de evaluación. Si deseas tener una base de datos dedicada deberás configurarla de manera manual. Para ingresar al sistema deberás utilizar las credenciales admin/admin.

Después de haber realizado esto, tal vez te interese seguir con cualquiera de los siguientes posts

- Configurar PostgreSQL en SonarQube
- Configurar SonarQube para que inicie como servicio en Linux
- Configurar SonarQube con Apache en Linux


Si te ha gustado este artículo puedes invitarme a tomar una taza de café

Acerca de Darío Rivera

Author

Ingeniero de desarrollo en PlacetoPay , Medellín. Darío ha trabajado por más de 6 años en lenguajes de programación web especialmente en PHP. Creador del microframework DronePHP basado en Zend y Laravel.

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.