Ultimamente he estado viendo varias herramientas para ver las métricas y estadísticas del codigo fuente de algun proyecto; pero de entre todas estas herramientas destaca SonarQube, por una sencilla razon: es open source.
SonarQube es una plataforma de código abierto para el análisis de la calidad de nuestro código y para obtener métricas que pueden ayudar a mejorar la calidad del código de cualquiera de nuestros programas.
Es una herramienta que nos sirve para auditar el código dentro de nuestro ciclo de desarrollo de nuestra aplicación. Existen distintos tipos de problemas que se pueden encontrar en un código, éstos pueden clasificarse en 5 grupos según su severidad: Bloqueador, crítico, grave, menor e informativo.
Instalando y configurando SonarQube
Primero que necesitamos descargar algunas cosas desde SonarQube:
-
El servidor desde su respectiva página.
-
El Scanner para el MsBuild desde aqui.
-
El SonarQubeScanner desde aqui.
Una vez se descargue, descomprimimos todo. Yo tengo esta estructura:
Despues agregamos dos variables de entorno a nuestro PATH:
-
La ruta al directorio sonar-scanner-msbuild
-
La ruta al directorio bin de sonar-scanner
En mi caso, sería:
Ahora podemos configurar la conexión a la BD. Yo voy a utilizar un servidor PostgreSql (SonarQube también soporta otros tipos de Bases de Datos), por lo que tengo que encontrar el siguiente archivo:
/PATH_SONARQUBE_SERVER/conf/sonar.properties
Editando ese archivo, colocamos el nombre de usuario y la contraseña de conexión al servidor:
# User credentials.
# Permissions to create tables, indices and triggers must be granted to JDBC user.
# The schema must be created first.
sonar.jdbc.username=USUARIO_BD
sonar.jdbc.password=PASSWORD_BD
Nuevamente, como yo voy a utilizar PostgreSql, descomento la sección correspondiente e introduzco la URL JDBC de conexion:
#----- PostgreSQL 8.x/9.x
# If you don't use the schema named "public", please refer to http://jira.sonarsource.com/browse/SONAR-5000
sonar.jdbc.url=jdbc:postgresql://IP_SERVIDOR/sonarqube
Esto quiere decir que debo crear una nueva Base de Datos en mi servidor con el nombre sonarqube
Por ultimo, se debe configurar los Scanners descargados. Para ello se busca el archivo sonar-scanner.properties en cada uno de los scaners (normalmente se encuentran en la carpeta conf) y se especifica el servidor SonarQube donde enviarán todas las estadísticas. Por defecto, SonarQube escucha en el puerto 9000 (aunque esto se puede cambiar):
#----- Default SonarQube server
sonar.host.url=http://localhost:9000
Este cambio debe realizarse en todos los Scanners que tengamos descargados
Ahora si, podemos iniciar el Servidor SonarQube. Para ello nos vamos a la carpeta bin del directorio donde está el SONARQUBE. Veremos varias carpetas:
Dependiendo del Sistema OPerativo que tengamos, se accede a su respectiva carpeta y se inicia el servicio con el archivo StartSonar.bat.
Si quisiéramos instalar SonarQube como servicio, podemos ejecutar InstallNTService.bat, y para desinstalarlo: UninstallNTService.bat
Accedemos a la direccion http://localhost:9000/ y podremos ver nuestro servidor SonarQube ejecutándose:
El usuario y contraseña por defecto son admin/admin
Creando el Proyecto en SonarQube y ejecutando el análisis con MsBuild
Antes de ejecutar el scanner sobre nuestro proyecto, es necesario crearlo. Para ello ingresamos a nuestro servidor de SonarQube (http://localhost:9000/), y nos vamos a “Management Projects”:
Ahi podemos crear un proyecto especificando el nombre y una palabra clave para identificarlo:
Este nombre y palabra clave será utilizados al momento de realizar el escaneo con sonar-scanner-msbuild o con cualquier otro escanner.
Ahora nos dirigimos al directorio raiz de la solución de VisualStudio que deseamos analizar y ejecutamos las siguientes instrucciones:
MSBuild.SonarQube.Runner begin /key:"SANEAMIENTO" /name:"Segip.Licencias.Saneamiento" /version:1
MsBuild
MSBuild.SonarQube.Runner end
Para que estos comandos funcionen, la carpeta de sonar-scanner-msbuild debe estar en la variable de entorno PATH.
A mi me pasó que ejecutando el comando MsBuild, se ejecutó la versión del .NetFramework 4, y no la del VisualStudio 14.0 Esto hacia que la instruccion me diera errores, por lo que para ejecutar el MSBuild le di todo el PATH:
C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe
Una vez termine el analisis (el tiempo variará dependiendo del tamño del proyecto), podemos acceder al servidor SonarQube y verificar el procesamiento del escaneo:
Cuando la tarea en Background termine, podremos ver las estadisticas del proyecto