Reporting de Maven

RECU-0370 (Recurso Herramienta)

Descripción

Una de las funcionalidades más potentes de Maven es la posibilidad de generar documentación en forma de sitio web con la información del proyecto, en particular la parte de informes puede ser configurada para ofrecer los resultados acerca de las revisiones de codigo fuente. Existen numerosos plugins de Maven para este reporting, o incluso pueden generarse a medida.

Uso en MADEJA

Es recomendable incluir algunos de los plugins de reporting en el fichero pom.xml de las aplicaciones empaquetadas en formato Maven, consiguiendo de manera automática informes referentes a:

  • Revisión de código copiado y pegado en el proyecto completo.
  • Revisión de las directrices básicas marcadas en la codificación de la aplicaciones.
  • Revisión de la fidelidad a las buenas prácticas de programación acordadas con la dirección de proyecto.

Puede consultarse más sobre lo referente a este formato en MADEJA (Ver).

A continuación se presentan ejemplos de la configuración de reporting, con los plugins para la verificación recomendados para las aplicaciones desarrolladas para la Junta de Andalucía. La ejecución de los plugins destinados a verificar la calidad del código van por defecto asociados a la fase verify del ciclo de vida del software.

Sección de reporting en el pom.xml del proyecto

Para optener la salida de reporting del proyecto que se está verificando, se deben incluir ciertas líneas en el fichero de configuración del proyecto. A continuación mostramos un ejemplo de lo que deberíamos incluir:

<?xml version="1.0" encoding="UTF-8"?>
<project>
...
<!-- Reportes: Para agregar Información de la calidad del proyecto en el sitio web -->
   <reporting>
      <plugins>
         <!--Para generar las referencias con el código-->
     <plugin>
       <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-jxr-plugin</artifactId>
       <configuration>
         <aggregate>${jbosscache.reports.aggregate}</aggregate>
       </configuration>
     </plugin>

           <!-- checkstyle para verificar el formato. Por defecto con las reglas de
        Sun (basadas en notación Camel)-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>               
        </plugin>

    <!-- javadoc del proyecto -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>            
            <artifactId>maven-javadoc-plugin</artifactId> 
            <configuration>
        <aggregate>${jbosscache.reports.aggregate}</aggregate>
                <links>
                  <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>
                  <link>http://java.sun.com/javaee/5/docs/api/</link>
                </links>
            </configuration>        
        </plugin>

        <!-- project info-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>            
            <artifactId>maven-project-info-reports-plugin</artifactId>             
        </plugin>

    <!-- Informes de las pruebas unitarias-->
    <plugin>
           <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-surefire-report-plugin</artifactId>
       <version>2.4.2</version>
    </plugin>

    <!-- para controlar los cambios generados-->
    <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-changelog-plugin</artifactId>
    </plugin>

    <!-- Búsquedas de determinadas cadenas en el código -->
    <plugin>
       <groupId>org.codehaus.mojo</groupId>
       <artifactId>taglist-maven-plugin</artifactId>
       <configuration>
        <aggregate>${jbosscache.reports.aggregate}</aggregate>
        <tags>
            <tag>@FIXME</tag>
            <tag>@fixme</tag>
            <tag>FIXME</tag>
            <tag>fixme</tag>
            <tag>@TODO</tag>
            <tag>@todo</tag>
            <tag>TODO</tag>
            <tag>todo</tag>
            <tag>@Avoid</tag>
            <tag>@avoid</tag>
            <tag>@AVOID</tag>
        </tags>
       </configuration>
    </plugin>


    <plugin>
       <groupId>org.codehaus.mojo</groupId>
       <artifactId>javancss-maven-plugin</artifactId>
    </plugin>
   
        <!-- Findbugs report -->
    <plugin>
       <groupId>org.codehaus.mojo</groupId>
       <artifactId>findbugs-maven-plugin</artifactId>
       <configuration>
        <onlyAnalyze>es.juntadeandalucia.cice.*</onlyAnalyze>
       </configuration>
    </plugin>

        <!-- pmd para verificar la calidad del código. Reglas definidas explícitamente en el proyecto -->
      <plugin>
           <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-pmd-plugin</artifactId>
       <configuration>
          <linkXref>true</linkXref>
          <sourceEncoding>UTF-8</sourceEncoding>
          <minimumTokens>100</minimumTokens>
              <targetJdk>1.5</targetJdk>
          <rulesets>
                   <ruleset>http://www.juntadeandalucia.es/madeja/colaboracion/xwiki/bin/download/MADEJA/ReglasPMD/basic.xml</ruleset>
                   <ruleset>http://www.juntadeandalucia.es/madeja/colaboracion/xwiki/bin/download/MADEJA/ReglasPMD/basic-jsf.xml</ruleset>
                   <ruleset>http://www.juntadeandalucia.es/madeja/colaboracion/xwiki/bin/download/MADEJA/ReglasPMD/basic-jsp.xml</ruleset>
                   <ruleset>http://www.juntadeandalucia.es/madeja/colaboracion/xwiki/bin/download/MADEJA/ReglasPMD/braces.xml</ruleset>
                   <ruleset>http://www.juntadeandalucia.es/madeja/colaboracion/xwiki/bin/download/MADEJA/ReglasPMD/clone.xml</ruleset>
                   <ruleset>http://www.juntadeandalucia.es/madeja/colaboracion/xwiki/bin/download/MADEJA/ReglasPMD/codesize.xml</ruleset>
                   <ruleset>http://www.juntadeandalucia.es/madeja/colaboracion/xwiki/bin/download/MADEJA/ReglasPMD/coupling.xml</ruleset>
                   <ruleset>http://www.juntadeandalucia.es/madeja/colaboracion/xwiki/bin/download/MADEJA/ReglasPMD/design.xml</ruleset>
                   <ruleset>http://www.juntadeandalucia.es/madeja/colaboracion/xwiki/bin/download/MADEJA/ReglasPMD/finalizers.xml</ruleset>
                   <ruleset>http://www.juntadeandalucia.es/madeja/colaboracion/xwiki/bin/download/MADEJA/ReglasPMD/imports.xml</ruleset>
                   <ruleset>http://www.juntadeandalucia.es/madeja/colaboracion/xwiki/bin/download/MADEJA/ReglasPMD/j2ee.xml</ruleset>
                   <ruleset>http://www.juntadeandalucia.es/madeja/colaboracion/xwiki/bin/download/MADEJA/ReglasPMD/javabeans.xml</ruleset>
                   <ruleset>http://www.juntadeandalucia.es/madeja/colaboracion/xwiki/bin/download/MADEJA/ReglasPMD/logging-java.xml</ruleset>
                   <ruleset>http://www.juntadeandalucia.es/madeja/colaboracion/xwiki/bin/download/MADEJA/ReglasPMD/naming.xml</ruleset>
                   <ruleset>http://www.juntadeandalucia.es/madeja/colaboracion/xwiki/bin/download/MADEJA/ReglasPMD/optimizations.xml</ruleset>
                   <ruleset>http://www.juntadeandalucia.es/madeja/colaboracion/xwiki/bin/download/MADEJA/ReglasPMD/strictexception.xml</ruleset>
                   <ruleset>http://www.juntadeandalucia.es/madeja/colaboracion/xwiki/bin/download/MADEJA/ReglasPMD/strings.xml</ruleset>
                   <ruleset>http://www.juntadeandalucia.es/madeja/colaboracion/xwiki/bin/download/MADEJA/ReglasPMD/sunsecure.xml</ruleset>
                   <ruleset>http://www.juntadeandalucia.es/madeja/colaboracion/xwiki/bin/download/MADEJA/ReglasPMD/typeresolution.xml</ruleset>
                   <ruleset>http://www.juntadeandalucia.es/madeja/colaboracion/xwiki/bin/download/MADEJA/ReglasPMD/unusedcode.xml</ruleset>                                   
        </rulesets>
         </configuration>
          </plugin>       
       </plugins>
    </reporting> 


    <scm>
        <connection>scm:svn:http://usr:pass@10.230.18.16/repositorio/RAMA</connection>
        <url>http://10.230.18.16/repositorio/RAMA/</url>
    </scm>

</project>

Generación del site del proyecto

Una vez que el proyecto tiene este fichero actualizado correctamente, se debe hacer el estudio del mismo para lo que se ejecuta la siguiente orden:

mvn site

Con esto se genera una carpeta 'site' en el 'target'. Si abrimos el fichero index.html podremos encontrar toda la información de reporting, y verificar que el proyecto está de acuerdo a las convenciones de código que hemos establecido para que se revisen.

Versiones

Si se está empleando Maven3 hay que tener en cuenta que, en esta versión, las declaraciones de plugins de reporting solo serán válidas para la fase de reporting. Si se desea emplear algunos de los plugins empleado en reporting en otra de las fases del ciclo de vida (como en build), será necesario duplicar la declaración del plugin en dicha fase. Es necesario también tener en cuenta que, en Maven3, las funcionalidades de reporte y de generación de site han sido suprimidas del “core” de Maven e incluidas como plugin, por lo que el plugin de site Maven (Maven Site Plugin) de la versión 2.x no funciona para Maven3. Existe una versión 3.x del plugin, que deberá emplearse con Maven3.

Contenidos relacionados

Recursos
Área: Entorno » Área Gestión de la Entrega
Código Título Tipo Carácter
RECU-0322 Maven Manual Recomendado
RECU-0681 Características de Maven3 respecto a Maven2 Referencia Recomendado