Hace algún tiempo comentaba cómo Sonar proporciona una serie de medidas de calidad del software. Integrar esta herramienta en el proceso de integración continua modelado con Apache Continuum no ha sido tan fácil como esperaba, sin embargo el resultado merece la pena.
En primer lugar tenemos que instalar y configurar Sonar 1.4RC1. La configuración por defecto hace que la aplicación use una base de datos en ficheros (derby). Dada la restricción impuesta para la configuración con derby haremos que Sonar utilice una base de datos MySQL, esta configuración será necesaria si Sonar y Continuum están en hosts distintos. Debemos comentar en el fichero sonar.properties las lineas:
#sonar.jdbc.url: jdbc:derby://localhost:1527/sonar;create=true
#sonar.jdbc.driver: org.apache.derby.jdbc.ClientDriver
y descomentar (sustituyendo <host> y <port> por el host y el puerto de la base de datos):
sonar.jdbc.url: jdbc:mysql://<host>:<port>/sonar?autoReconnect=true&useUnicode=true&characterEncoding=utf8
sonar.jdbc.driver: com.mysql.jdbc.Driver
En el fichero sonar.properties también podemos configurar el puerto y el path de la aplicación:
sonar.web.port: 80
sonar.web.context: /sonar
Para terminar con la configuración debemos crear una base de datos llamada «sonar» y un usuario con permisos que pueda conectarse desde cualquier host.
Ahora debemos configurar nuestro proyecto Maven para ser desplegado en Sonar. Para ello incluiremos un perfil en el fichero POM:
<profile>
<id>sonar</id>
<activation>
<property>
<name>env</name>
<value>sonar</value>
</property>
</activation>
<properties>
<!-- URL de la instancia de Sonar -->
<sonar.host.url>http://<sonar_host>:<port>/<path></sonar.host.url>
<!-- URL de la base de datos -->
<sonar.jdbc.url>jdbc:mysql://<db_host>:<port>/sonar</sonar.jdbc.url>
<!-- Driver para MySQL -->
<sonar.jdbc.driver>com.mysql.jdbc.Driver</sonar.jdbc.driver>
<!-- Usuario de base de datos con permisos sobre la BD "sonar" -->
<sonar.jdbc.username>username</sonar.jdbc.username>
<!-- Password el usuario anterior -->
<sonar.jdbc.password>password</sonar.jdbc.password>
</properties>
</profile>
Para desplegar el proyecto en Sonar ejecutaremos:
mvn -Psonar org.codehaus.sonar:sonar-maven-plugin:1.4RC1:sonar
En este se ha usado el plugin para la versión 1.4RC1 de Sonar, la versión del plugin debe ser la misma que la del servidor.
Si incluimos esta tarea en Continuum para que se ejecute cada noche entonces cada mañana tendremos un reciente análisis estático del código de nuestro proyecto.
Incluir tarea en Continuum