Configuración de Maven para usar el Plugin PMD

0
15958

Configuración de Maven para usar el Plugin PMD

En este tutorial vamos a realizar una introducción del plugin PMD (versión 3.2) para Maven 2

Más concretamente vememos que modificaciones tenemos que realizar sobre los pom.xml de nuestros proyectos para integrar en Maven
la funcionalidad de análisis y reporting de código que nos aporta PMD

¿Qué es PMD?

PMD verifica reglas de codificación buscando en el código fuente posibles errores del tipo:

  • Nombres de variables demasiado cortos.
  • Concatenaciones de String en lugar de usar StringBuffer.
  • Bloques de código sin llaves de apertura y cierre.
  • Variables declaradas sin usarse.
  • Bloques de código repetido » Copy/Paste Detector tool (CPD).
  • Funciones con más de un punto de salida (return).
  • Y un largo etc.

Es decir, PMD nos proporciona información para mejorar la cálidad de nuestro código fuente evitándonos incluso comoter errores difíciles de detectar.

Por ejemplo, PMD nos reportaría que en la linea 5 de siguiente clase hay un posible error.

  public class Clase1 {
    private String miVariable;
  
    public Clase1(String miVariable){
        miVariable = miVariable;    // ¡¡Error!!, lo correcto sería: this.miVariable = miVariable;
    }
    ...
    ...    
  }

Instalación del Plugin

Puede descargar el plugin para su entorno de desarrollo favorito haciendo clic aquí

Si su entorno es Eclipse, para instalar el plugin simplemente deberá descomprimir el archivo dentro de la carpeta donde tenga instalado su Eclipse y reiniciar (su Eclipse) en caso de que esté abierto.

El plugin PMD en acción

A continuación vamos a ver el funcionamiento del plugin analizando un proyecto de prueba.
Además, para que sea más facil de asimilar, nuestro proyecto sólo tendrá una clase deficiente sintácticamente y sin sentido semántico.

Código fuente de nuestro proyecto:

package com.autentia.pmdeclipseplugin;

import java.util.Enumeration;
import java.util.*;

/**
 * Clase para el tutorial de PMD
 * @author Carlos García. Autentia.
 * @see http://www.mobiletest.es
 */
public class Persona {
	public String dni;

	public Persona(String dni) {
		dni =  (String) dni;
	}

	public boolean equals(Object obj) {
		try {
			String dni2 = ((Persona) obj).dni;
			
			return this.dni.equals( dni2 );
		} catch (Exception ex){}
		
		return false;
	}

	public int funcionTonta2(int numerito){
		int total = 0;
		
		if ((numerito % 3) == 0){
			total+=3;
		} else if ((numerito % 4) == 0){
			
		} else {
			total+=9;
		}

		if ((numerito % 3) == 0){
			total+=3;
		} else if ((numerito % 4) == 0){
			
		} else {
			total+=9;
		}
		
		Vector cadenas = new Vector();
		cadenas.addElement("a");
		cadenas.addElement("a");
		cadenas.addElement("a");
		
		Enumeration enum1  = cadenas.elements();
		String cadenaTonta = "";
		while (enum1.hasMoreElements()){ 
			cadenaTonta += enum1.nextElement();	
		}
		System.err.print(cadenaTonta);
    	
		return total;
	}
	
    public static void main( String[] args ){
    	try { 
    		new Persona("62626261231");
    	} catch (java.lang.Throwable ex) {
    		System.out.println("error: " + ex);
    	}
    }
}

Definición y configuración del plugin PMD dentro del pom.xml de nuestro proyecto (autocomentado):



  4.0.0
  pmdEclipsePlugin
  pmdEclipsePlugin
  pmdEclipsePlugin
  1.0-SNAPSHOT
  http://maven.apache.org
  jar
  
  
  
    
    
	  
      
        org.apache.maven.plugins
        maven-pmd-plugin
        2.4
        
        
          
          
          utf-8
          
          
          20
          
          
          1.4
          
          
          
          	
          	/rulesets/basic.xml
            /rulesets/braces.xml
            /rulesets/design.xml
            /rulesets/unusedcode.xml
            /rulesets/imports.xml
            /rulesets/controversial.xml
            /rulesets/migrating.xml
			/rulesets/strings.xml
			/rulesets/optimizations.xml
			
			
          
          
        
        
          
            
				pmd
				cpd
            
          
        
          
        
            
    
  

  
    
      junit
      junit
      3.8.1
      test
    
  


Generación del Site

A través de línea de comandos, ejecutando:

mvn site

Desde Eclipse, haciendo clic con el botón derecho del ratón sobre el proyecto:

Informe PMD generado por el plugin

El informe nos reporta las siguientes advertencias:

Informe CPD generado por el plugin

El informe nos indica que hay un bloque de código repetido en nuestro proyecto.

Conclusiones

Sin lugar a dudas, Maven ha supuesto un antes y un después en la gestión de proyectos.
En Autentia, llevamos años usándolo e intentamos sacar todo su potencial a través del uso de plugin como el que se ha mostrado en este tutorial.

Bueno, eso es todo, un saludo.
Carlos García. Creador de MobileTest.

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