Cómo analizar con Sonar un proyecto sin maven

1
19561

Cómo analizar con Sonar un proyecto sin maven

1 Introducción

Una de las tareas que deberíamos realizar con cierta frecuencia en nuestros proyectos es la de analizar estáticamente el código. Gracias a ello nos aseguraremos de que la base del código sea buena, mantendremos la deuda técnica bajo control y podremos identificar y solucionar pequeños problemas antes de que se hagan demasiado grandes.

Para realizar estos análisis hay multitud de herramientas como PMD, CPD, checkstyle o findbugs. En los últimos tiempos han salido herramientas en torno a ellas que facilitan la tarea de análisis y de interpretación de los resultados. Una de las herramientas más populares en este sentido es Sonar.

Sonar es una herramienta opensource que analiza el código fuente de nuestro proyecto utilizando varios analizadores estáticos del código. Una vez lo ha analizado nos muestra gráficas y métricas donde podremos ver de una manera cómoda y sencilla en qué estado se encuentra nuestro proyecto. Tienen una demo que podreis visitar pulsando aquí.

Si quereis instalar Sonar para usar este tutorial como base para vuestro desarrollo o quereis conocer más acerca de esta herramienta os recomiendo visitar este tutorial de Sonar.

2 El «problema»

Sonar utiliza una herramienta que se ha vuelto muy popular en los últimos tiempos: maven. Con maven es bastante sencillo gestionar el ciclo de vida completo del proyecto, ya que gracias a esta herramienta compilar, gestionar dependencias, lanzar tests, generar versión, desplegar, etc. se ha convertido en una tarea prácticamente trivial.

Pero, ¿qué pasa si no tenemos maven en nuestro proyecto?. Puede que usemos ant, un script, o directamente nada, y que queramos analizar el código fuente de nuestro proyecto para saber en qué situación estamos y qué problemas podremos encontrarnos en cualquier plazo de tiempo. En ese caso, ¿qué podemos hacer?.

3 La solución

Deberemos «mavenizar» nuestro proyecto. El proceso en sí es bastante sencillo y lo explicaremos a continuación. Antes de «mavenizar» nada deberemos leer el siguiente tutorial sobre maven e instalarlo usando las pautas que ahí se indican.

Una vez tengamos maven instalado, para «mavenizar» el proyecto deberemos crear un fichero pom.xml en el directorio raiz de nuestro proyecto con el siguiente contenido:


<project xmlns="http://maven.apache.org/POM/4.0.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>[empresa]</groupId>
  <artifactId>[proyecto]</artifactId>
  <name>[nombre del proyecto]</name>
  <version>[version del proyecto]</version>
  <build>
        <sourceDirectory>[ruta a las fuentes]</sourceDirectory>
        <outputDirectory>[ruta al codigo compilado]</outputDirectory>
        <plugins>
           <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <configuration>
                  <source>1.5</source>
                  <target>1.5</target>
                  <excludes>
                      <exclude>**/*.*</exclude>
                  </excludes>
              </configuration>
           </plugin>
        </plugins>
  </build>
  <properties>
  	<sonar.dynamicAnalysis>false</sonar.dynamicAnalysis>
  </properties>
</project>

Por ejemplo:


<project xmlns="http://maven.apache.org/POM/4.0.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.autentia</groupId>
  <artifactId>tntconcept</artifactId>
  <name>TNTConcept</name>
  <version>2.1</version>
  <build>
        <sourceDirectory>src</sourceDirectory>
        <outputDirectory>bin</outputDirectory>
        <plugins>
           <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <configuration>
                  <source>1.5</source>
                  <target>1.5</target>
                  <excludes>
                      <exclude>**/*.*</exclude>
                  </excludes>
              </configuration>
           </plugin>
        </plugins>
  </build>
  <properties>
  	<sonar.dynamicAnalysis>false</sonar.dynamicAnalysis>
  </properties>
</project>

Deberemos poner los datos de nuestra empresa, nuestro proyecto y la versión del mismo. También deberemos indicar en qué ruta relativa se encuentra el código fuente.

Hay que destacar que con este pom.xml sólo analizaremos el código. No lo compilaremos, ni lanzaremos tests, ni usaremos las librerias, ni desplegaremos, etc. Sólo analizaremos el código fuente.

Cuando lo tengamos preparado abrimos un terminal, nos movemos al directorio donde se encuentre el fichero pom.xml y ponemos lo siguiente:

mvn sonar:sonar

Veremos que se prepara y tras ello comienzan los análisis. Una vez haya terminado este análisis podeis ir a la dirección http://localhost:9000/ y ver qué resultados os devuelve.

4 Conclusiones

Pues como habeis podido ver ha sido todo muy sencillo. Tan sólo necesitais estos tres elementos:

  • Nuestro proyecto java
  • Maven
  • Sonar

Si habeis seguido los dos tutoriales que he ido enlazando habreis visto que instalar tanto maven como sonar es bastante sencillo. Una vez hechas estas instalaciones sólo debemos crear el fichero pom.xml usando la plantilla especificada anteriormente y ejecutar maven con mvn sonar:sonar.

Espero que este tutorial os haya sido de utilidad y que tengais menos excusas para no usar analizadores estáticos del código 🙂

Saludos,
Raúl Expósito

1 COMENTARIO

  1. Buenas Raúl, muy interesante el tutorial.

    Una cosa, falta agregar el plugin (sonar-maven-plugin) al pom.xml.

    <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>1.0-beta-1</version>
    </plugin>

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