Analiza el código de tu aplicación Android con SonarQube
0. Índice de contenidos.
- 1.- Introducción
- 2.- Entorno y versiones
- 3.- Descargas
- 4.- Instalación
- 5.- Análisis estático del proyecto
- 6.- Lanzar también el perfil de calidad Java genérico
- 7.- Conclusiones
Introducción
En este tutorial vamos a ver como configurar SonarQube(anteriormente Sonar a secas) para poder analizar aplicaciones Android, independientemente del sistema de construcción que se esté usando.
Entorno y versiones
- OSX Yosemite 10.10.1
- SonarQube 5.0
- Sonar Runner 2.4
- PostgreSQL 9.4
- Java 1.7
Descargas
- SonarQube
- Android Plugin
- SonarQube Runner
Instalación
Arrancamos la base de datos que queramos usar, en este caso voy a utilizar PostgreSQL 9.4, y modificamos el fichero de configuración de SonarQube para que se conecte a la Base de Datos, el fichero a modificar es conf/sonar.properties
.
En mi caso he modificado las siguientes lineas(previamente habiendo creado el usuario en la BD para Sonar):
sonar.jdbc.username=sonarqube sonar.jdbc.password=sonarqube sonar.jdbc.url=jdbc:postgresql://localhost/sonar
Descomprimimos y copiamos los plugin que hemos descargado a la carpeta extensions/plugins/
Arrancamos Sonar desde el ejecutable asociado a nuestro Sistema Operativo, en el caso de OSX podemos encontrarlo en `sonarqube-5.0/bin/macosx-universal-64
.
Y por ultimo accedemos a http://localhost:9000/
para comprobar que todo está correctamente instalado.
Análisis estático del proyecto
Vamos a lanzar el proyecto a través del Sonnar Runner, descomprimimos el Sonar Runner y lo configuramos en conf/sonar-runner.properties
, en este fichero tienen que ir las configuraciones generales de Sonar Runner, en mi caso he descomentado y completado las siguientes claves:
#----- Global database settings sonar.jdbc.username=sonarqube sonar.jdbc.password=sonarqube #----- Default SonarQube server sonar.host.url=http://localhost:9000 #----- PostgreSQL sonar.jdbc.url=jdbc:postgresql://localhost/sonar
Añadimos tanto el directorio donde se encuentra Sonar como el directorio donde se encuentran Sonar Runner a nuestro PATH para que nos sea posible lanzar los ejecutables desde cualquier fichero.
Para probar, me he descargado de GitHub un aplicación Android OpenSource llamado OwnCloud.
El siguiente paso es crear un fichero de configuración en la raiz del proyecto, la parte más importante es en en la que le indicamos que el perfil a utilizar será Android Lint
# Required metadata sonar.projectKey=my:project sonar.projectName=My project sonar.projectVersion=1.0 # Path to the parent source code directory. # Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows. # Since SonarQube 4.2, this property is optional if sonar.modules is set. # If not set, SonarQube starts looking for source code from the directory containing # the sonar-project.properties file. sonar.sources=src # Encoding of the source code sonar.sourceEncoding=UTF-8 # Additional parameters sonar.profile=Android Lint
Por ultimo, desde la raíz del proyecto lanzamos sonar-runner
, lo cual lanzará la tarea sobre el proyecto, tras un tiempo (que depende del tamaño del proyecto) podremos ver el mensaje de éxito y ya podremos ver los resultados en la URL que nos muestra unas lineas más arriba, en mi caso es http://localhost:9000/dashboard/index/owncloud-android
.
Resultados del análisis
Accediendo a la URL que nos ha mostrado podremos ver el resumen del análisis:
El plugin de Android busca errores en las partes especificas de Android, como la gestión de recursos. En este caso parece que es uno de los principales puntos de errores.
Lanzar también el perfil de calidad Java genérico
Aún así es posible que queramos seguir controlando la calidad de nuestro código Java y no solo de la parte especifica de Android, para ello vamos a hacer que el Perfil de Calidad de Android extienda las reglas del Perfil de Calidad de Java.
Para ello tenemos que logarnos como admin en Sonarqube (admin/admin por defecto) y accedemos a la sección de Perfiles de Calidad (Quality Profiles).