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

En este tutorial, aprendemos como analizar el código de nuestras aplicaciones android con SonarQube

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

Text
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

Text
extensions/plugins/

Arrancamos Sonar desde el ejecutable asociado a nuestro Sistema Operativo, en el caso de OSX podemos encontrarlo en `

Text
sonarqube-5.0/bin/macosx-universal-64

.

Y por ultimo accedemos a

Text
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

Text
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

Text
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

Text
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

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

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

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

  • Responsable: IZERTIS S.A.
  • Finalidad: Envío información de carácter administrativa, técnica, organizativa y/o comercial sobre los productos y servicios sobre los que se nos consulta.
  • Legitimación: Consentimiento del interesado
  • Destinatarios: Otras empresas del Grupo IZERTIS. Encargados del tratamiento.
  • Derechos: Acceso, rectificación, supresión, cancelación, limitación y portabilidad de los datos.
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad

Desarrollador Web y Experto en Android.

¿Quieres publicar en Adictos al trabajo?

Te puede interesar

Aprende cómo migrar tu sitio Joomla 3 a Joomla 5 de forma segura, manteniendo el diseño, la funcionalidad y compatibilidad con extensiones. Una guía paso a paso con recomendaciones, imágenes y buenas prácticas para actualizar sin sorpresas.
Descubre qué es Yocto Project, sus ventajas, usos reales en Izertis y cómo crear tu propia distribución Linux para Raspberry Pi paso a paso, de forma sencilla y flexible.
¿Trabajas con Drupal y SonarQube 9.9? En este artículo exploramos cómo adaptar el análisis estático para evitar falsos positivos, desactivar reglas conflictivas del Quality Profile y delegar el estilo a PHP CodeSniffer. Una guía práctica para mejorar la integración sin depender aún de SonarQube 10.