Instalación SonarQube
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