PMD (Software)
| PMD
| |
|---|---|
| [[Datei:Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden.|150px]] | |
| Basisdaten
| |
| Hauptentwickler | Andreas Dangel, Juan Martín Sotuyo Dodero, Clément Fournier |
| Entwickler | Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden. |
| Erscheinungsjahr | Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden. |
| Aktuelle Version | Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden. (Skriptfehler: Ein solches Modul „Wikidata“ ist nicht vorhanden.) |
| Aktuelle Vorabversion | Vorlage:Vorabversion Wikidata |
| Betriebssystem | plattformunabhängig |
| Programmiersprache | 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>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. pmd-code.org ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref> Der Name PMD selbst hat offiziell keine ausgeschriebene Bedeutung.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. pmd-code.org ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
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, oderfor-Schleifen, die stattdessen alswhile-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.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. pmd-code.org ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</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>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. pmd-code.org ehemals im Vorlage:Referrer (nicht mehr online verfügbar) (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Toter Link/Core (Seite nicht mehr abrufbar. Suche im Internet Archive)Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.Skriptfehler: Ein solches Modul „TemplatePar“ ist nicht vorhanden.</ref>
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. Siehe auch Liste von Werkzeugen zur statischen Codeanalyse.
Einzelnachweise[Bearbeiten]
<references />
Weblinks[Bearbeiten]
- Buch: „PMD Applied“ (englisch). Tom Copeland.