Sonar Runner: Analizar proyectos sin Maven en cualquier lenguaje

3
22607

Sonar Runner: Analizar proyectos sin Maven en cualquier lenguaje

0. Índice de
contenidos.

1. Entorno

Este tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil Mac Book Pro 17″ (2,6 Ghz Intel Core i7, 8 GB DDR3)
  • Sistema Operativo: Mac OS X Snow Leopard 10.6.4
  • Sonar 3.2
  • Sonar Runner 1.4
  • Javascript Plugin 1.0

2. Introducción

En adictos tenemos numerosos tutoriales que hablan de Sonar. Una magnífica herramienta que nos da una idea de la calidad de nuestra aplicación haciendo un análisis estático del código Java para proyecto con Maven. Hasta ahora si querías analizar el código Java de un proyecto sin Maven, tenías que «mavenizar» el proyecto como se mostraba en este tutorial.

Ahora con Sonar Runner no solo podemos analizar el código de proyecto sin Maven si no que además podemos analizar código que no sea exclusivamente Java, como por ejemplo, código Javascript e incluso Cobol.

Aquí podéis encontrar el listado completo de lenguajes soporta actualmente en forma de plugins, alguno de ellos comerciales.

3. Configuración inicial

Este tutorial vamos a ver los pasos que hay que dar para poder analizar el código Javascript y Java de un proyecto sin Maven. Lo primero que tenemos que hacer es arrancar una instancia de sonar. En este tutorial os explicamos como hacerlo.

Una vez arrancada la instancia de Sonar en local, que por defecto será accesible desde la URL http://localhost:9000, es momento de descargar Sonar Runner de esta URL donde también se os muestra como instalarlo y configurarlo.

Los pasos a seguir son sencillo. Descomprimimos el .zip en algún directorio de nuestro sistema de archivos y establecemos la variable de sistema SONAR_RUNNER_HOME apuntando a este directorio. Luego actualizamos el PATH del sistema añadiendo SONAR_RUNNER_HOME/bin.

En caso de no tener la configuración por defecto de Sonar, deberemos editar el fichero SONAR_RUNNER_HOME/conf/sonar-runner.properties y modificar las variables en función de nuestra instalación de Sonar. Para el caso de un Sonar que este instalado en un servidor llamado «preproduccion» con una base de datos MySQL y corriendo en el puerto 9000 esta sería la configuración de las variables.

#----- Default Sonar server
sonar.host.url=http://preproduccion:9000

#----- PostgreSQL
#sonar.jdbc.url=jdbc:postgresql://localhost/sonar
#sonar.jdbc.driver=org.postgresql.Driver

#----- MySQL
sonar.jdbc.url=jdbc:mysql://preproduccion:3306/sonar?useUnicode=true&characterEncoding=utf8
sonar.jdbc.driver=com.mysql.jdbc.Driver

#----- Oracle
#sonar.jdbc.url=jdbc:oracle:thin:@localhost/XE
#sonar.jdbc.driver=oracle.jdbc.driver.OracleDriver

#----- Global database settings
sonar.jdbc.username=root
sonar.jdbc.password=admin

#----- Default directory layout
#sources=src/main/java
#tests=src/test/java
#binaries=target/classes

sonar.sourceEncoding=UTF-8
	

4. Analizando el código Java de la aplicación

Con la configuración anterior ya estamos en disposición de poder analizar código Java de proyectos que no tienen porque estar gestionados con Maven. Para ello, en el raíz del proyecto vamos a crear un fichero que obligatoriamente se tiene que llamar sonar-project.properties con el siguiente contenido:

#Se puede equiparar con el groupId de Maven (Obligatorio)
sonar.projectKey=my:project
#Se puede equiparar con el artifactId de Maven. Es el nombre que se va a mostrar el dashboard de Sonar. (Obligatorio)
sonar.projectName=My project
#Se puede equiparar a la versión de Maven. (Obligatorio)
sonar.projectVersion=1.0
 
#Indicamos todos los directorios donde haya código Java. (Obligatorio)
sources=srcDir1,srcDir2
 
#Indicamos todos los directorios donde haya tests (Opcional)
tests=testDir1,testDir2
 
#Indicamos los directorios donde se almacenan los binarios del proyecto (Opcional)
binaries=binDir
 
#Indicamos la ruta de las librerías y directorios que contengan .class (Opcional)
libraries=path/to/library.jar,path/to/classes/dir
 
 
# Indicamos el lenguaje que queremos analizar (Por defecto, Java)
#sonar.language=cobol
 
# Podemos indicar otros parámetros
my.property=value

Basta con abrir un terminal, situarnos en el directorio raíz del proyecto y ejecutar «sonar-runner». Una vez finalizado el proceso podremos ver nuestro proyecto analizado en el dashboard de nuestro Sonar.

5. Analizando el código Javascript de la aplicación

Muchos proyectos, Maven o no, contienen mucho código Javascript que podemos analizar con Sonar. Para ello hay que instalar el plugin «Javascript Plugin». Esto se puede realizar desde el «Update Center» de nuestro Sonar.

Para ello nos tenemos que logar como administradores, haciendo click en «Login» e introducciendo el usuario «admin» y la contraseña «admin» que son las credenciales del usuario administrador que viene por defecto en la instalación de Sonar.

Acto seguido hacemos click en «Configuration» y después en «Update Center»; con lo que el sistema nos mostrará una pantalla con el listado de plugins instalados. En la pestaña «Available Plugins» podemos instalar el plugin para código Javascript.

Una vez instalado el plugin, tenemos que reiniciar Sonar para poder trabajar con él. Ahora en el directorio raiz de nuestro proyecto, renombramos el fichero anterior a «sonar-project-java.properties» y creamos una copia de ese fichero a la que nombramos «sonar-project-js.properties» estableciendo el parámetro «sonar.language=js», indicando los directorios que contienen código Javascript en nuestra aplicación («sources») y cambiando el «sonar.projectName» ya que se va a mostrar como un proyecto independiente del anterior.

Ahora para poder seleccionar uno u otro fichero de propiedades tenemos que ejecutar el Sonar Runner con el parámetro -Dproject.settings. Por tanto, ejecutando «sonar-runner -Dproject.settings=sonar-project-js.properties» arrancamos el análisis del código Javascript, finalizado el proceso podemos ver el resultado en el dashboard de nuestro Sonar y podremos ver las métricas y las violaciones que ha detectado.

6. Conclusiones

Sonar es una herramienta que ha sabido evolucionar y de una manera sencilla e intuitiva nos permite analizar proyectos de cualquier tipo soportando la mayoría de lenguajes actuales.

Cualquier duda o sugerencia en la zona de comentarios.

Saludos.

3 COMENTARIOS

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