PMD: analizador de código fuente para encontrar fallas de programación

Weditar código nunca ha sido una tarea fácil. La mayoría de las aplicaciones del mercado tienen cientos de líneas de código. Un ejemplo es uno de los juegos más populares, Minecraft, que tiene al menos 4.815.162.342 líneas de código.

Mantener este código y garantizar que sea sostenible no es una tarea fácil. Afortunadamente, tenemos varias herramientas disponibles para ayudarlo a administrar su código fuente. Una de estas herramientas es PMD.

PMD es un analizador de código de fuente abierta que busca errores en su código y genera un informe. Escanea su código fuente y busca problemas y errores como; código muerto, declaraciones vacías, llaves abiertas, variables declaradas y no utilizadas, código duplicado y problemas de nombres. Estos son solo algunos ejemplos.

Tomemos un ejemplo del siguiente código java de muestra a continuación;

package fosslinux;
public class tuts {
    public static void main(String[] args) 
   { 
  // My Java Code
  System.out.println("Hello FossLinux"); 
  } 
}

Al verificar este código con PMD a través de la línea de comando, obtenemos el siguiente resultado;

fosslinux/tuts/pmd-bin-6.21.0-full/pmd-bin-6.22.0-SNAPSHOT/bin/app.java:3:
All methods are static.
Consider using a utility class instead. 
Alternatively, you could add a private constructor or make the class abstract to silence this warning.
fosslinux/tuts/pmd-bin-6.21.0-full/pmd-bin-6.21.0-full/pmd-bin-6.22.0-SNAPSHOT/bin/app.java:3:
The class name 'app' doesn't match '[A-Z][a-zA-Z0-9]*'

Como puede ver en el informe PMD anterior, hay varias recomendaciones y advertencias. Ese es el funcionamiento básico de PMD.

Además, PMD viene con una utilidad Copiar-Pegar-Detector (CPD). Detecta código duplicado en varios lenguajes de programación como; Java, Python, C, C ++, Objective-C, PHP, Perl, Fortran, Go-Lang, Lua, Matlab, Javascript, Dart, JSP y Swift. Estos son solo algunos ejemplos. Puede leer más sobre los idiomas admitidos en su página oficial de GitHub aquí.

La abreviatura PMD es solo un backronym y no está definida. Sin embargo, algunas de las abreviaturas de uso común incluyen; “Detector de errores de programación” y “Detector de desorden de programación”. Sin embargo, la herramienta en sí solo se conoce como PMD con el lema "Don't Shoot The Messenger". A continuación se muestra el logotipo oficial de PMD con el lema.

Logotipo oficial de PMD
Logotipo oficial de PMD

Al verificar su código con PMD, hace uso de patrones definidos por varias reglas. Esta herramienta viene con más de 250 reglas integradas. Al verificar su código fuente, PMD escaneará su código contra la regla establecida que usted seleccione. Si se viola alguna regla, PMD generará un error.

Sin embargo, PMD es una herramienta de código abierto. Los usuarios pueden desarrollar sus reglas para que PMD se adapte a los requisitos y criterios específicos del proyecto. Además, con tantas reglas incorporadas de PMD, no se pueden usar todas a la vez. Algunas reglas incluso se contradicen entre sí. Otros hacen uso de diferentes convenciones de codificación distintas del proyecto en el que está trabajando.

Plataformas y entornos de desarrollo compatibles

PMD es una herramienta multiplataforma que se ejecuta en varios sistemas operativos. Incluye; Distribuciones Unix, Windows, Linux, macO y FreeBSD. Para mayor confiabilidad y eficiencia al escribir código, puede integrar el complemento PMD en su entorno de desarrollo integrado favorito (IDE). Algunos de los IDE compatibles incluyen; Netbeans, JBuilder, Eclipse, IntelliJ IDEA, Maven, TextPad, Ant, CodeGuide, BlueJ, JEdit, JCreator, Emacs y Sun Java Studio. Para conocer las actualizaciones y los IDE compatibles, puede encontrar más información en su página oficial de GitHub aquí.

Índice
  • Instalación del complemento PMD en Eclipse IDE
  • Instalación del complemento PMD en Eclipse IDE

    Para este artículo, nos centraremos en el IDE de Eclipse. A continuación se muestra un proceso paso a paso de cómo instalar el complemento PMD en Eclipse.

    Paso 1) Descargue e instale Eclipse para su sistema operativo. Puede encontrar los diferentes archivos de instalación en su página de descarga oficial.

    Descarga Eclipse

    Paso 2) Navegue al menú Ayuda en su Eclipse IDE y haga clic en el botón Instalar nuevo software.

    Menú de ayuda de Eclipse
    Menú de ayuda de Eclipse

    Paso 3) Aparecerá una ventana. No tienes que alterar nada aquí. Haga clic en el botón Agregar.

    Instalar el complemento PMD en Eclipse
    Instalar el complemento PMD en Eclipse

    Paso 4) Se abrirá otra ventana emergente más pequeña. Deberá ingresar el nombre y la ubicación URL del paquete. Ingrese los detalles a continuación y haga clic en Agregar;

    Nombre = PMD para el sitio de actualización de Eclipse

    Ubicación = https://dl.bintray.com/pmd/pmd-eclipse-plugin/updates/

    Ingrese el nombre y la URL del complemento PMD
    Ingrese el nombre y la URL del complemento PMD

    Tenga en cuenta que estos detalles (Nombre y artículo) fueron útiles al momento de escribir este artículo, puede obtener información más actualizada en la página Herramientas / Integraciones.

    Paso 5) Debería ver PMD para Eclipse 4 en la lista. Sin embargo, podría pasar algún tiempo antes de su inclusión en la lista. Esto se debe a que algunos archivos deben buscarse en línea y, por lo tanto, la velocidad de Internet es fundamental.

    El complemento PMD
    El complemento PMD

    Paso 6) Marque la casilla junto al complemento PMD enumerado y haga clic en Siguiente.

    Paso 7) En la siguiente pantalla, acepte los términos y condiciones e instale el complemento PMD.

    Acepte los términos y condiciones para la instalación del complemento
    Acepte los términos y condiciones para la instalación del complemento

    Paso 8) Reinicie Eclipse.

    Trabajo de PMD

    PMD analiza el código analizándolo primero. Este proceso consta de dos pasos principales;

    • Lexing / Tokenización: se refiere a la conversión de una serie de caracteres presentes en un programa de computadora a una secuencia de tokens.
    • Análisis: es el proceso de pasar por el código y generar un árbol de sintaxis abstracta (AST).

    Después de la generación de un AST, ahora se ejecutan las reglas definidas por PMD. Al analizar un solo archivo, las reglas se implementan una tras otra, pero cuando se trata de varios archivos, se ejecutan mediante subprocesos múltiples.

    La violación de cualquier regla resultará en una advertencia o recomendación en el informe del PMD. El informe incluirá una línea particular en el código fuente que violó una regla y un mensaje de recomendación o advertencia. El formato del informe puede estar en XML o HTML.

    Características

    1. Soporte para Reglas XPath

    Después de analizar el código, PMD genera un árbol de sintaxis abstracta (AST) similar a un documento XML. Al consultar el archivo mediante expresiones XPath, PMD puede identificar los nodos que cumplen con criterios específicos. Esta función proporciona una API para que los usuarios desarrollen sus propias reglas distintas de las presentes en PMD.

    2. Tipo de resolución

    Una vez que PMD ha analizado el código, se agrega información de tipo concreto a diferentes líneas y secciones del código. Tomemos un ejemplo del código a continuación:

    import org.s1f4j.Logger;
    public class Tuts
    {
    	private static final logger LOG = Logger.getLogger(Example.class);
    	
    	public void someMethod(String arg) {
    	LOG.debug("This is an error checking message: "+ arg);
    	}
    }

    En el código anterior, a la declaración de LOG se le asigna el tipo de registrador. Se identifica como org.slf4j.Logger. Usando la biblioteca "slf4j.API", PMD adjunta una instancia concreta de la clase al AST particular. Ahora, cuando se ejecuta una regla, puede acceder a ella.

    3. Métricas

    La función estuvo disponible en PMD en 2017 durante el Summer of Code. Metrics es un marco que proporciona a los desarrolladores un acceso limpio y directo al código analizado y el uso de reglas de métricas de código.

    Conclusión

    Creo que este artículo le ha dado una buena comprensión del PMD y cómo funciona. Ha demostrado ser una herramienta útil para los desarrolladores, ya sea que trabajen en un proyecto pequeño o en el desarrollo de un sistema o software extenso. Puede visitar la página oficial de PMD GitHub para ver las actualizaciones del proyecto.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir