Zum Inhalt springen

PMD (Software)

aus Wikipedia, der freien Enzyklopädie
Dies ist die aktuelle Version dieser Seite, zuletzt bearbeitet am 4. August 2024 um 17:41 Uhr durch imported>Aka (Weblinks: typografische Anführungszeichen).
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
PMD

[[Datei:Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)|150px]]
Basisdaten

Hauptentwickler Andreas Dangel, Juan Martín Sotuyo Dodero, Clément Fournier
Entwickler Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
Erscheinungsjahr Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
Aktuelle Version Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value)
(Lua-Fehler in Modul:Wikidata, Zeile 1686: attempt to index field 'wikibase' (a nil value))
Aktuelle Vorabversion Vorlage:Vorabversion Wikidata
Betriebssystem plattformunabhängig
Programmier­sprache Java
Kategorie Programmierwerkzeug
Lizenz BSD-style
pmd.github.io

PMD ist ein Programmierwerkzeug für die statische Codeanalyse von Quelltexten. Neben Java werden unter anderem Apex, JavaScript, XML und XSL sowie davon abgeleitete Dialekte unterstützt.<ref>Documentation Index | PMD Source Code Analyzer. pmd-code.org, abgerufen am 31. März 2023 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> Der Name PMD selbst hat offiziell keine ausgeschriebene Bedeutung.<ref>What does 'PMD' mean? pmd-code.org, abgerufen am 31. März 2023 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>

Fehlerkorrekturen

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

PMD stellt Plug-ins für Entwicklungsumgebungen wie JDeveloper, Eclipse, JBuilder, NetBeans, JCreator und IntelliJ IDEA sowie Editoren wie JEdit, Emacs und TextPad bereit.<ref>Tools / Integrations. pmd-code.org, abgerufen am 31. März 2023 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref> 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 SonarQube.

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.<ref>Finding duplicated code with CPD. pmd-code.org, abgerufen am 31. März 2023 (Lua-Fehler in Modul:Multilingual, Zeile 153: attempt to index field 'data' (a nil value)).</ref>

Alternativen

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. Siehe auch Liste von Werkzeugen zur statischen Codeanalyse.

Einzelnachweise

<references />

Weblinks