PMD es un analizador de código fuente estático de código abierto que informa sobre los problemas encontrados en el código de la aplicación. PMD incluye conjuntos de reglas integrados y permite escribir reglas personalizadas. PMD no informa sobre errores de compilación, ya que solo puede procesar archivos fuente bien formados. En cambio, PMD está diseñado para detectar código ineficiente o malos hábitos de programación, que pueden reducir el rendimiento y la mantenibilidad del programa si se acumulan. Puede analizar archivos escritos en Java , JavaScript , Apex y Visualforce, PL/SQL , Apache Velocity , XML y XSL. [ 3 ]
Aunque PMD no significa oficialmente nada, [ 4 ] se han sugerido varios acrónimos retro, como por ejemplo Programming Mistake Detector y Project Meets Deadline . [ 5 ]
Características
PMD es capaz de detectar fallos o posibles fallos en el código fuente, como por ejemplo:
- Errores : bloques try/catch/finally/switch vacíos.
- Código muerto : variables locales , parámetros y métodos privados sin usar .
- Sentencias if/while vacías.
- Expresiones demasiado complicadas : sentencias if innecesarias, bucles for que podrían ser bucles while.
- Código subóptimo : uso ineficiente de String/StringBuffer.
- Clases con mediciones de alta complejidad ciclomática .
- Código duplicado : copiar y pegar código puede significar copiar y pegar errores, y disminuye la facilidad de mantenimiento.
Licencia
PMD se publica bajo una licencia tipo BSD, mientras que algunas partes están bajo la Licencia Apache 2.0 y la LGPL . [ 2 ]
Detector de copiar/pegar (CPD)
El Detector de Copia y Pegado ( CPD ) es un complemento de PMD que utiliza el algoritmo de búsqueda de cadenas Rabin-Karp para encontrar código duplicado . A diferencia de PMD, CPD funciona con una gama más amplia de lenguajes, incluyendo Java, JavaServer Pages (JSP), C , C++ , Fortran , PHP y C# . [ 6 ]
Plugins
PMD tiene complementos para JDeveloper , Eclipse , jEdit , JBuilder , CodeGuide de Omnicore, NetBeans / Sun Studio , IntelliJ IDEA , TextPad , Maven , Ant , Gradle , Gel, JCreator, Hudson , Jenkins , SonarQube , Visual Studio Code y Emacs . [ 7 ] También hay una versión CLI .
Véase también
Referencias
- ↑ "Versión PMD 7.19.0 (28 de noviembre de 2025)" . Consultado el 30 de diciembre de 2025 .
- 1 2 "Licencia" . GitHub . 18 de enero de 2015. Consultado el 13 de agosto de 2015 .
- ↑ "Lenguajes compatibles con PMD | Analizador de código fuente de PMD" . docs.pmd-code.org . Consultado el 30 de diciembre de 2025 .
- ↑ "¿Qué significa 'PMD'?" . pmd-code.org . Consultado el 31 de marzo de 2023 .
- ↑ "Elimina los molestos errores, parte 4: el fin está cerca" . freesoftwaremagazine.com .
- ↑ "Lenguajes compatibles con CPD | Analizador de código fuente PMD" . docs.pmd-code.org . Consultado el 30/12/2025 .
- ↑ "Herramientas / Integraciones" . pmd-code.org . Consultado el 31 de marzo de 2023 .
Lecturas adicionales
- Rutar, Almazan, Foster (2004), "Una comparación de herramientas para la detección de errores en Java" . Actas del 15.º Simposio Internacional sobre Ingeniería de Confiabilidad de Software (ISSRE '04) , IEEE, doi:10.1109/ISSRE.2004.1
Enlaces externos
- Sitio web oficial

- PMD en GitHub
- PMD en SourceForge
- Formación continua en SourceForge.net .
- Libro: "PMD Aplicado" Escrito por el desarrollador principal, Tom Copeland ().
- PMD y CPD en Maven
- Herramientas de desarrollo Java
- Herramientas de análisis estático de programas
- Herramientas gratuitas para probar software