PMD ist ein Open-Source-Tool zur statischen Quellcodeanalyse , das auf Probleme im Anwendungscode hinweist. PMD enthält integrierte Regelsätze und ermöglicht das Schreiben benutzerdefinierter Regeln. Da PMD nur wohlgeformte Quelldateien verarbeiten kann, meldet es keine Kompilierungsfehler. PMD ist vielmehr darauf ausgelegt, ineffizienten Code oder schlechte Programmiergewohnheiten zu erkennen, die die Leistung und Wartbarkeit des Programms beeinträchtigen können, wenn sie sich anhäufen. Es kann Dateien analysieren, die in Java , JavaScript , Apex und Visualforce, PL/SQL , Apache Velocity , XML und XSL geschrieben sind. [ 3 ]
Obwohl PMD offiziell für nichts steht [ 4 ], wurden verschiedene Retro-Akronyme vorgeschlagen, darunter beispielsweise Programming Mistake Detector und Project Meets Deadline . [ 5 ]
Merkmale
PMD ist in der Lage, Fehler oder mögliche Fehler im Quellcode zu erkennen, wie zum Beispiel:
- Fehler – Leere try/catch/finally/switch-Blöcke.
- Toter Code – Nicht verwendete lokale Variablen , Parameter und private Methoden .
- Leere if/while-Anweisungen.
- Überkomplizierte Ausdrücke – unnötige if-Anweisungen, for-Schleifen, die auch while-Schleifen sein könnten.
- Suboptimaler Code – Verschwenderische Verwendung von String/StringBuffer.
- Klassen mit hohen Messwerten der zyklomatischen Komplexität .
- Doppelter Code – Kopierter/eingefügter Code kann zu kopierten/eingefügten Fehlern führen und die Wartbarkeit verringern.
Lizenz
PMD wird unter einer BSD-ähnlichen Lizenz veröffentlicht, während Teile davon unter der Apache-Lizenz 2.0 und der LGPL stehen . [ 2 ]
Kopier-/Einfügeerkennung (CPD)
Der Copy/Paste Detector ( CPD ) ist eine Erweiterung für PMD, die den Rabin-Karp-String-Suchalgorithmus verwendet, um doppelten Code zu finden . Im Gegensatz zu PMD unterstützt CPD eine größere Bandbreite an Sprachen, darunter Java, JavaServer Pages (JSP), C , C++ , Fortran , PHP und C# . [ 6 ]
Plugins
PMD verfügt über Plugins für JDeveloper , Eclipse , jEdit , JBuilder , Omnicore's CodeGuide, NetBeans / Sun Studio , IntelliJ IDEA , TextPad , Maven , Ant , Gradle , Gel, JCreator, Hudson , Jenkins , SonarQube , Visual Studio Code und Emacs . [ 7 ] Es gibt auch eine CLI- Version.
Siehe auch
Referenzen
- ^ „Release PMD 7.19.0 (28. November 2025)“ . Abgerufen am 30. Dezember 2025 .
- ^ a b "Lizenz" . GitHub . 18. Januar 2015. Abgerufen am 13. August 2015 .
- ^ „PMD-fähige Sprachen | PMD-Quellcode-Analysator“ . docs.pmd-code.org . Abgerufen am 30.12.2025 .
- ^ „Was bedeutet ‚PMD‘?“ . pmd-code.org . Abgerufen am 31. März 2023 .
- ^ „Lästige Bugs beseitigen, Teil 4: Das Ende ist nah . “ freesoftwaremagazine.com
- ^ „CPD-fähige Sprachen | PMD-Quellcode-Analysator“ . docs.pmd-code.org . Abgerufen am 30.12.2025 .
- ^ „Tools / Integrations“ . pmd-code.org . Abgerufen am 31. März 2023 .
Weiterführende Literatur
- Rutar, Almazan, Foster (2004), „Ein Vergleich von Werkzeugen zur Fehlerfindung in Java“ . ISSRE '04 Proceedings of the 15th International Symposium on Software Reliability Engineering , IEEE, doi:10.1109/ISSRE.2004.1
Externe Links
- Offizielle Website

- PMD auf GitHub
- PMD auf SourceForge
- CPD auf SourceForge.net .
- Buch: „PMD Applied“ , geschrieben vom leitenden Entwickler Tom Copeland ( [1] ).
- PMD und CPD in Maven
