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.



4 respuestas hasta el momento ↓
chuidiang // 2 Febrero 2009 a 11:13 am |
Hola:
Yo he tenido problemas con esta configuración porque había que añadir además el dialecto de base de datos y la clase para dicho dialecto en el perfil de maven, algo como esto
mysql
org.sonar.commons.database.dialect.MySqlWithDecimalDialect
¿Te ha pasado a tí también o hay alguna forma de evitarlo?
Se bueno.
Antonio Manuel Muñiz Martín // 2 Febrero 2009 a 11:34 am |
Hola.
Nunca he necesitado incluir el dialecto en las propiedades del perfil, con riesgo a equivocarme (porque no conozco tu proyecto) te diría que estoy seguro que no hace falta.
Un saludo.
chuidiang // 2 Febrero 2009 a 3:30 pm |
Gracias. Quizás sea por la versión de sonar, vero que este post es de Julio del año pasado y yo las pruebas las estoy haciendo ahora, con la versión 1.5.1
Se bueno.
Antonio Manuel Muñiz Martín // 3 Febrero 2009 a 12:18 am |
Hola. En la versión 1.5.1 tampoco hace falta, acabo de comprobarlo.
¿Se bueno? :)