PMD (Software)

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
PMD
offizielles Logo
Maintainer Tom Copeland, Xavier Le Vourch
Aktuelle Version 5.1.1
(27. April 2014)
Betriebssystem plattformunabhängig
Programmier­sprache Java
Kategorie Entwicklungswerkzeug
Lizenz BSD-style
pmd.sourceforge.net

PMD ist ein Werkzeug für die statische Codeanalyse von Quelltexten. Neben Java werden unter anderem JavaScript, XML und XSL sowie davon abgeleitete Dialekte unterstützt.[1] Der Name PMD selbst hat offiziell keine ausgeschriebene Bedeutung.[2]

Fehlerkorrekturen[Bearbeiten]

Die Fehler, die PMD findet, sind typischerweise keine echten Fehler, sondern eher ineffizienter Code, d. h. die Software wird in der Regel trotzdem korrekt ausgeführt, wenn die Fehler nicht korrigiert werden. PMD findet auf Basis von statischen Regeln potentielle Probleme wie beispielsweise:

  • Mögliche Bugs – Leere try/catch/finally/switch-Blöcke.
  • Toter Code – Ungenutzte Lokale Variablen, Parameter und private Methoden
  • Leere if/while-Ausdrücke
  • Überkomplizierte Ausdrücke – Unnötige if-Ausdrücke, oder for-Schleifen, die stattdessen als while-Schleifen genutzt werden könnten
  • Suboptimaler Code – verschwenderische Nutzung von String/StringBuffer
  • Klassen mit hoher Zyklomatischer Komplexität.

PMD bietet eine Vielzahl eingebauter Regeln und die Möglichkeit, vorhandene Regeln zu erweitern oder eigene Regeln zu schreiben.

Erweiterungen und Plug-ins[Bearbeiten]

PMD stellt Plug-ins für Entwicklungsumgebungen wie JDeveloper, Eclipse, JBuilder, NetBeans, JCreator und IntelliJ IDEA sowie Editoren wie JEdit, Emacs und TextPad bereit.[3] Darüber hinaus existieren Erweiterungen für Build-Werkzeuge wie Apache Maven und Apache Ant, Continuous Integration-Server wie Jenkins und Hudson sowie die statische Code-Analyse-Plattform Sonar.

Der Copy-Paste-Detector (CPD) ist eine Erweiterung von PMD, die den Rabin-Karp-Algorithmus nutzt, um duplizierten Code zu finden. CPD kann auf Java, C, C++, C#, PHP, Ruby, Fortran, sowie JavaScript angewendet werden.[4] Das Werkzeug kann auch unabhängig von PMD, unter Verwendung der Java Web Start-Technologie, ausgeführt werden.[5]

Alternativen[Bearbeiten]

Im Java-Umfeld werden üblicherweise neben PMD auch noch Checkstyle und FindBugs für die statische Codeanalyse verwendet. Microsoft stellt mit FxCop ein vergleichbares Werkzeug für die .NET-Plattform bereit.

Einzelnachweise[Bearbeiten]

  1. Vorlage:Internetquelle/Wartung/Zugriffsdatum nicht im ISO-FormatPMD Rulesets index. pmd.sourceforge.net, abgerufen am 5. Mai 2013.
  2. Vorlage:Internetquelle/Wartung/Zugriffsdatum nicht im ISO-FormatWhat does it mean? pmd.sourceforge.net, abgerufen am 12. Juni 2008.
  3. Vorlage:Internetquelle/Wartung/Zugriffsdatum nicht im ISO-FormatIntegrations with IDEs. pmd.sourceforge.net, abgerufen am 5. Mai 2013.
  4. Vorlage:Internetquelle/Wartung/Zugriffsdatum nicht im ISO-FormatFinding copied and pasted code. pmd.sourceforge.net, abgerufen am 5. Mai 2013.
  5. Vorlage:Internetquelle/Wartung/Zugriffsdatum nicht im ISO-FormatCPD (Java WebStart). pmd.sourceforge.net, abgerufen am 5. Mai 2013.

Weblinks[Bearbeiten]