Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden

Die Code Quality in Java Projekten erhalten (Teil II) …

Integration von PMD Rule Sets in den Build Prozess.

Teil I

Das im ers­ten Beitrag erwähnte Maven Plugin 'PMD' soll nun genauer vor­ge­stellt werden.
Nachdem man das Maven Plugin instal­liert hat und die Einstellungen

maven.pmd.failonerror=true
maven.pmd.failonruleviolation=true

in der project.properties Datei eines Maven (1) Projektes vor­ge­nom­men hat, kann der Test der Sourcen des Projektes durch den Aufruf maven pmd:report gestar­tet werden.

Das PMD Plugin ent­hält eine Menge ver­schie­de­ner Regeln, an Hand derer der Source Code ana­ly­siert wird [Übersicht der PMD Rule Sets und Rules]. Dazu zäh­len Regeln, die bei­spiels­weise in Gruppen wie Basic, Code Size, Design oder Strings zusam­men­ge­fasst sind.

Wenn man einen PMD Report erstellt und keine wei­te­ren Einstellungen an der project.properties Datei vor­ge­nom­men hat, wer­den alle Regeln, die in dem Plugin bereits ent­hal­ten sind, ange­wen­det. Bei einem grö­ße­ren Software Projekt, bei dem noch keine Metriken ver­wen­det wur­den, wer­den dann mit gro­ßer Wahrscheinlichkeit Hinweise ausgegeben.

Um in einen gewach­se­nen Software Projekt die Integration des PMD Plugins durch­füh­ren zu kön­nen bie­tet sich die Möglichkeit an, eigene Regeln zu defi­nie­ren. Dies ist sehr ein­fach möglich.

Es genügt, eine eigene ruleset.xml Datei zu erstel­len, in der dann die Regeln auf­ge­nom­men wer­den [Rahmen die­ser Datei]. Die erstellte Datei wird in den project.properties unter dem Key maven.pmd.rulesetfiles regis­triert:

maven.pmd.rulesetfiles=${basedir}/ruleset.xml

Es gibt drei Möglichkeit, wie man eigene Regeln in der Datei auf­neh­men kann:

1. Referenzieren eines PMD Rule Sets
Die Regeln des PMD Plugins sind in Gruppen (Sets) zusam­men­ge­fasst. Durch den Eintrag

<rule ref="rulesets/basic.xml"
  message="Handle all basic rules" />

in der ruleset.xml wer­den beim Erstellen des PMD Reports alle Regeln angewendet,
die in die­ser Gruppe (basic) zusam­men­ge­fasst sind.

2. Referenzieren einer PMD Rule aus einem PMD Rule Set
Es ist auch mög­lich, direkt ein­zelne Regeln eines Rule Sets zu definieren.

<rule ref="rulesets/basic.xml/EmptyCatchBlock"
  message="Must handle exceptions" />

Im Beispiel han­delt es sich um die Regel, die über­prüft, ob im ana­ly­sier­ten Source Code leere Catch Blöcke vorkommen.

3. Eigene Regeln erstellen
Eigene Regeln kön­nen mit Hilfe von Java und der Implementierung von Klassen erfol­gen, die z.B. die Klasse AbstractRule erwei­tern. Neben dem Schreiben eige­ner Java Klassen ist es auch mög­lich, XPath Expressions zu ver­wen­den, um Regeln zu hin­ter­le­gen. Für beide Fälle ist eine Einführung hier zu finden.

7. Oktober 2007
||

Related Posts

Pin It on Pinterest