Sonar

RECU-0372 (Recurso Herramienta)

Descripción

Sonar es una plataforma open source de gestión de la calidad estática del software, que permite analizar y medir de forma continua la calidad del código de los proyectos. Es un sistema no intrusivo, que permite a las Consejerías y Organismos de la Junta de Andalucía tener una vista completa de sus sistemas de información, en lo relativo a su calidad, complejidad y otros aspectos personalizables. Además tiene la posibilidad de navegar y descender en los proyectos, obteniendo las mismas métricas agrupadas por paquetes y clases, siendo posible visualizar el código fuente con la detección de los avisos y los comentarios asociados.

Las métricas de calidad que utiliza se clasifican en distintos ámbitos: mantenibilidad, eficiencia, portabilidad, usabilidad, y están basadas en un conjunto de reglas configurables en formado PMD o Checkstyle. Además ofrece datos sobre la complejidad ciclomática, comentarios, grado de cobertura de las pruebas y su resultado, etc.

SonarSonar

En lo referente a la arquitectura, se trata de una aplicación web centralizada con base de datos relacional.

Advertencia: Inicialmente en un proceso de pruebas y validación se puede hacer una instalación con la base de datos embebida, ejecutando la verificación desde la misma máquina para observar el resultado. Posteriormente será necesario desplegarla en un entorno más estable con una base de datos dedicada. El uso de Sonar en MADEJA, parte de que se ha realizado una instalación centralizada y con base de datos.

Uso en MADEJA

Sonar constituye una herramienta fundamental y muy completa para MADEJA y en especial en la revisión estática de código, permitiendo no solo la revisión de las entregas, midiendo la calidad del código entregado, sino también permitiendo obtener la evolución histórica de los mismos.

Ejecutar Sonar

  • Sin modificar el código fuente entregado por el proveedor se puede ejecutar un comando Maven que genera los datos de reporting. La ejecución puede llegar a durar varios minutos, dependiendo del proyecto y de las pruebas unitarias que se hayan desarrollado. Es recomendable no esperar a su ejecución.

    mvn sonar:sonar
  • En caso de que Sonar se encuentre integrado con Hudson, será posible establecer su ejecución como una de las opciones del build.
  • En el caso de aplicaciones no Maven, podemos hacer la revisión del código creando un fichero pom.xml y ejecutando el comando anterior. El contenido del pom.xml debería ser el siguiente:

             <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>[YOUR.ORGANIZATION]</groupId>
               <artifactId>[YOUR.PROJECT]</artifactId>
    <name>[YOUR PROJECT NAME]</name/>
               <version>[YOUR PROJECT VERSION]/</version>
               <build>
    <sourceDirectory>[YOUR SOURCE DIRECTORY]/</sourceDirectory>
    <plugins>
                        <plugin>
                           <groupId>org.apache.maven.plugins</groupId>
                           <artifactId>maven-compiler-plugin</artifactId>
                           <configuration>
                               <source>1.5</source>
                               <target>1.5</target>
                           </configuration>
                        </plugin>
                     </plugins>
               </build>
               <properties>
                   <sonar.light>true</sonar.light>
               </properties>
             </project>

    En algunos casos se puede modificar directamente el fichero setting.xml de Maven añadiendo el siguiente texto:


           <!-- Profile para sonar -->
                  <profile>
                     <id>sonar</id>
                     <activation>
                        <activeByDefault>true</activeByDefault>
                     </activation>
                     <properties>
                        <!-- EXAMPLE FOR MYSQL -->
                        <sonar.jdbc.url>           
                           jdbc:mysql://servidor:puerto/sonar?useUnicode=true&characterEncoding=utf8
                        </sonar.jdbc.url>       
                        <sonar.jdbc.driver>
                           com.mysql.jdbc.Driver
                        </sonar.jdbc.driver>
                        <sonar.jdbc.username>
                           sonar
                        </sonar.jdbc.username>
                        <sonar.jdbc.password>
                           sonar
                        </sonar.jdbc.password>

                        <!-- SERVER ON A REMOTE HOST -->              
                        <sonar.host.url>
                           http://servidor:puerto/sonar
                        </sonar.host.url>
                    </properties>
                  </profile>

Versiones

En caso de que se desee usar Sonar con Maven3, la versión de Sonar debe ser la 2.2 o superior.

Enlaces externos

Contenidos relacionados

Recursos
Área: Verificación » Verificación de Entrega Software
Código Título Tipo Carácter
RECU-0368 Hudson y la integración continua Herramienta Recomendado
RECU-0369 Plugins de Hudson Herramienta Recomendado
Área: Entorno » Área Gestión de la Entrega
Código Título Tipo Carácter
RECU-0681 Características de Maven3 respecto a Maven2 Referencia Recomendado