PMD
PMD is een source code analysator. Het vindt veel voorkomende programmeringsgebreken, zoals ongebruikte variabelen, lege catch-blokken, onnodig aangemaakt object enzovoort. Het ondersteunt Java, Javascript, XML, XSL. Daarnaast omvat het CPD, de copy-paste-detector. CPD vondsten van dubbele code in Java, C, C ++, C #, PHP, Ruby, Fortran, JavaScript.

Systeemvereisten
  • Versie 1.6.0 Build 27 GA5 (2013-02-17)
  • Genoeg geheugen, het kan zoveel worden als -Xmx1024m


Resultaat van een PMD test op een eComStation machine met Open JDK


Installeren van PMD
Download pmd-bin-5.3.7.zip (29,0Mb). Download ook de handleiding pmd-doc-5.3.7.zip (47,0Mb!). Maak een map(directory) "pmd537" of "pmd". Pak de bestanden uit naar de nieuw gemaakte map(directory). Dat is alles. Versie 5.4.0 en hoger werken alleen met Java versie 1.7 of hoger. Versie 5.3.7 is vrijgegeven op 30 april 2016, dus echt niet oud te noemen!, zie de PMD webpagina

Het cmd bestand
Dit is geen programma met een leuke grafische gebruikers schil. Het is meer opdrachtregel georiënteerd. Dus er is geen echt "een voor alles" opdracht bestand. Ik geef een voorbeeld met de volgende inhoud;
@echo off
set BEGINLIBPATH=[station: java]\JAVA160\bin
set path=[station: java]\JAVA160\bin
set CLASSPATH=
rem set OPTS=
[station: pmd]
cd [station: pmd]\pmd537
java -Duser.home=[station: pmd]\pmd537 -classpath [station: pmd]\pmd537\lib\* net.sourceforge.pmd.PMD 
-d [station: greenfoot]\Greenfoot\scenarios\lunarlander\Lander.java -rulesets java-basic,java-design 
2>pmd537-bugs.txt
De laatste drie regels zijn werkelijkheid één regel, vanwege de ruimte moest ik het in delen plaatsen. Er staat een spatie tussen "net.sourceforge.pmd.PMD" en "-d [station: greenfoot]\..." en tussen "java-basic,java-design" en "2>pmd537-bugs.txt". Het is soms handig om ">results-pmd.txt" toe te voegen voor "2>pmd537-bugs.txt", op deze manier worden de meldingen in de opdracht sessie opgeslagen voor als het meer is dan past in een 80x25 scherm.
De ontwikkel versie van Java staat in hetzelfde station als PMD, alleen in andere mappen(directories), een voor Java, een voor PMD en een voor Greenfoot. Greenfoot is in test en er is iets mis met hun Lunar spel module, het slaat te pletter, maakt niet uit wat je doet. De in het cmd bestand gebruikte verwijzingen;

  • [station: java] = station met Java
  • [station: pmd] = station met PMD
  • [station: greenfoot] = station met Greenfoot

moeten dus vervangen worden door echte schijfletters. Bewaar het bestand en geef het een naam van jouw keuze of gebruik het bestand uit onderstaande distributie. Dit bestand wordt gekopieerd naar de "pmd" map(directory). Verder kunnen paden anders zijn, pas dit naar behoefte aan.
Er staan in de "\bin" map(directory) enkele "*.bat" bestanden en een Linux "sh" bestand. De "*.bat" bestanden zijn voor Windows, maar ze vormen wel een mooi voorbeeld. Je moet voordat je de batch start parameters toevoegen. Zonder parameters krijg je veel fouten. Ik heb alleen het "pmd.bat" bestand aangepast en dit bestand is aanwezig in de onderstaande distributie. Ik heb een paar anderen geprobeerd en ik kreeg geen fouten in het "pmd537-bugs.txt" bestand.

Parameters / opties verklaard
  • De toevoeging "2>pmd537-bugs.txt" zorgt ervoor dat foutmeldingen in het bestand "pmd537-bugs.txt" worden bewaard. De 2 in "2>" is geen typefout! Als je iets niet goed deed krijg je enkele, maar niet alle fouten in dit bestand gerapporteerd.
  • De lijst met parameters is toegevoegd aan het distributie bestand, het is het help bestand. Dit bestand wordt op het scherm getoond als iets niet door het programma wordt begrepen. Maar zelfs dan..., je hebt de handleiding nodig...

Download
In het bestand zit bovenstaand cmd bestand (alle schijfletters staan op C:), het helpbestand als tekst bestand en een OS/2 PMD icoontje: pmd-ecs.zip.

revisien 17 juli 2016