Analiza el código de tu aplicación Android con SonarQube

0
10938

Analiza el código de tu aplicación Android con SonarQube

0. Índice de contenidos.

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

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.

sonarqube

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.

success

Resultados del análisis

Accediendo a la URL que nos ha mostrado podremos ver el resumen del análisis:

resumenanalisis

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.

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).

Perfiles de Calidad

Accedemos al perfil de Android y en la sección de Herencia(inheretance) seleccionamos como padre al perfil «Sonar way» que contiene las normas que ellos consideran más importantes.

herencia perfil

Si volvemos a lanzar el Sonar Runner podremos ver como el numero de incidencias ha aumentado, ya que ahora no solo se estará fijando en las incidencias propias de Android si no en las de Java también.

incidencias

Conclusiones

Hemos podido comprobar lo fácil que es introducir Sonar en nuestro proyecto Android.

Usar Sonar puede ser uno de los primeros pasos a la hora de intentar mejorar el código de nuestra Aplicación, y descubrir zonas en las que seguramente haga falta refactorizar.

Y de paso podemos encontrarnos cosas curiosas en el código como esta 🙂

oom

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad