Credits

Committers

  • David Dixon-Peugh - much of the early work on the grammar, initial Emacs plugin
  • Philippe Herlin - Eclipse plugin, fixed bugs in RuleSetFactory
  • Nascif Abousalh Neto - Emacs plugin
  • Tom Copeland - lead developer, JDeveloper plugin, initial Gel plugin, initial jEdit plugin, IDEAJ integration
  • Jiger Patel - jEdit plugin
  • Gunnlaugur Thor Briem - NetBeans plugin, Maven build script fixes, bug report on JavaCC parser's use of java.lang.Error
  • Ole-Martin Mork - NetBeans plugin
  • Brant Gurganus - JCreator integration, Swing GUI work
  • Miguel Griffa - over a dozen rules, lots of documentation, and other improvements all over the place
  • Radim Kubacki - Netbeans plugin, OptimizableToArrayCallRule suggestion, bug reports, pmd-netbeans feedback
  • Colin Wilson-Salt - Eclipse plugin team

Committers emeritus

  • Andrey Lumyanski - Gel plugin
  • David Craine - JBuilder plugin
  • Tom Burke - Eclipse plugin
  • Alex Chaffee - various bugfixes and features
  • Siegfried Goeschl - original Maven plugin, various bugfixes and features
  • Don Leckie - The PMD GUI
  • Rich Kilmer - logo design
  • Paul Kendall - various bugfixes and features

Significant contributors

  • Raik Schroeder - data flow analyis layer, YAHTMLRenderer
  • Steve Hawkins - rewrite of CPD based on Karp-Rabin string matching
  • Dan Sheppard - XPath engine integration concept and implementation
  • Brian Ewins - complete rewrite of CPD based on the Burrows-Wheeler transform

Contributors

  • Wouter Zelle - rewrote UselessOverridingMethod in Java, UselessOverridingMethod rule, ProperLogger rule, nifty code to allow variables in XPath rules, externalInfoUrl data for all rules in basic and unusedcode rulesets, some very nifty XSLT, improvements to UseCorrectExceptionLogging, designed and implemented the "externalInfoUrl" feature in the rule definitions, fixed a devious bug in RuleSetFactory, AvoidPrintStackTrace, initial implementation of SimplifyConditional
  • Pieter Bloemendaal - command line docs bug report, bug report for UnusedPrivateMethod, found typo in ArrayIsStoredDirectly, bug report for AvoidReassigningParametersRule
  • shawn2005 - documentation bug report
  • Benoit Xhenseval - bug report for UnusedPrivateMethod, suggestion to add elapsed time to XML report, bug report for ImmutableField, many bug reports (with good failure cases!), Ant task patch and bug report, XSLT patch, suggestion for improving XML report
  • Raja Rajan - bug report for CompareObjectswithEquals
  • Andrew Taylor - bug report for StringInstantiation
  • Jeff Jensen - suggested description attribute in property element
  • Andriy Rozeluk - Suggested UnnecessaryCaseChange, bug report for SimplifyConditional, suggested UnnecessaryLocalBeforeReturn, suggestions for improving BooleanInstantiation, UnnecessaryReturn, AvoidDuplicateLiterals RFEs and bug reports, various other RFEs and thoughtful discussions as well
  • Wim Deblauwe - suggested putting property names/values in generated docs, UselessOverridingMethod, reported bug in JUnitTestsShouldContainAsserts, front page and "how to make a ruleset" patches, noted problems with web site rule index, bug report for JUnitTestsShouldContainAsserts, Clover license coordination and implementation, UseCorrectExceptionLogging, coordinated and coded a much nicer asXML() implementation, suggested cleanup of UnusedFormalParameter, Javadoc patch, SystemPrintln bug report, helped get Ant task and CLI squared away with JDK 1.5 params, JDK 1.5-specific bug reports, suggested improvements for ExceptionSignatureDeclaration
  • Didier Duquennoy - bug report for AvoidConcateningNonLiteralsInStringBuffer, reported a missed hit for EqualsNull, bug report for MissingStaticMethodInNonInstantiatableClass, pmd-netbeans feedback
  • S. David Pullara - bug report for AvoidConcateningNonLiteralsInStringBuffer, bug report for ImmutableField
  • Maarten Bodewes - bug report for ImmutableField
  • Florian Deissenboeck - reported several JDK 1.5 grammar bugs
  • Jan Koops - bug report for JBuilder plugin
  • Peter Frandsen - PackageCase rule, NoPackage rule
  • Noureddine Bekrar - French translation of some PMD documentation
  • Martin Jost - bug report for JDeveloper plugin
  • dvholten - test cases for ConstructorCallsOverridableMethod, reported several NullAssignment bugs
  • Guillaume Boudreau - patches to fix problems with CPD's FileFinder and NTFS and SCCS
  • Sylvain Veyrie - bug report for MethodReturnsInternalArray
  • Randy Ray - bug report for ArrayIsStoredDirectly
  • Ernst Reissner - reported JDK 1.5 parsing bug, suggested InstantiationToGetClass, bug reports for UnusedPrivateField/CloseConnectionRule/ConstructorCallsOverridableMethodRule, and bug report and documentation suggestions for UseSingletonRule
  • Klaus - Suggestion for improving UseSingleton
  • Nicolai Czempin - Bug report for UnnecessaryParentheses, various rule suggestions, additional PMD backronyms
  • Kevin Routley - reported Ant task dependency problem, reported problems with RuleSetFactory unit tests
  • Dennis Klemann - noted that errors were missing from text report, reported JDK 1.5 parsing bug with ExceptionSignatureDeclaration, reported fix for pmd.bat problem
  • Elliotte Rusty Harold - bug report for ConstructorCallsOverridableMethod, suggestion for improving command line interface, mispeling report, suggestion for improving Designer startup script, "how to make a ruleset" documentation suggestions, noticed outdated Xerces jars, script renaming suggestions, UseLocaleWithCaseConversions rule suggestion
  • Jorn Stampehl - Noticed redundancy of ExplicitCallToFinalize, reported bug in AvoidCallingFinalize, reported bug in JUnitAssertionsShouldIncludeMessage, reported bug in bug report on JUnitTestsShouldContainAsserts
  • Jeff Chamblee - bug report for CompareObjectsWithEquals
  • Tor Norbye - Suggested CompareObjectsWithEquals
  • Thomas Skariah - bug reports for MethodArgumentCouldBeFinal and AvoidReassigningParameters
  • Tom Parker - bug report for MethodReturnsInternalArray, found missed case in NullAssignment, suggested addition to UnnecessaryBooleanAssertion, suggested splitting up AvoidThrowingCertainExceptionTypes, AvoidInstantiatingObjectsInLoops bug report, AtLeastOneConstructor bug report
  • Bruno Juillet - bug report for missing package/class/method names, patch for Ant task's excludeMarker attribute, bug report on ruleset overrides
  • Ian Flanigan - reported CPD JNLP breakage
  • Glen Cordrey - Reported bug involved JavaCC string handling
  • Dave Brosius - a couple of nice patches to clean up some string handling inefficiencies, non-static class usages, and unclosed streams/readers - found with Findbugs, I daresay :-)
  • Oto 'tapik' Buchta - Patched XMLRenderer for UTF8 support
  • Arent-Jan Banck - Reported bug with JDK 1.5 annotation handling
  • Fred Hartman - Reported exact location of bug in TooManyFields, fixed bug in UnnecessaryBooleanAssertion
  • Andreas Ehn - Reported bug with JDK 1.5 generics parsing
  • Eric Olander - SingularField, SimplifyConditional fix, UseStringBufferForStringAppends, CollapsibleIfStatements, AvoidInstanceofChecksInCatchClause, AssignmentToNonFinalStatic rule, nice patch for DFAPanel cleanup, AvoidProtectedFieldInFinalClass, ImmutableFieldRule, noticed missing image in Postfix nodes
  • Tomas Gustavsson - reported pmd-web breakage
  • Payal Subhash - Tweaks to CSVRenderer
  • Christophe Mourette - Reported JDK 1.3 problem with XMLRenderer
  • Alex Givant - caught documentation bug
  • Luke Francl - suggested UnnecessaryParentheses rule, numerous high quality feature suggestions and bug reports
  • David Hovemeyer - reported missing labelled stmt images, a nice patch to let PMD process code in jar/zip files
  • Peter 'Bruno' Kofler - reported bug #1146116 for JUnitTestsShouldIncludeAssert
  • Zev Blut - nice patch to add Ruby support to CPD
  • Christopher Judd - a nice patch to the XSLT that adds a summary
  • John Meagher - suggested the rule 'MissingSerialVersionUID' and provided the implementation for it
  • John Austin - patch to fix mispeling in Eclipse plugin message
  • Paddy Fagan - reported bug in StatisticalRule
  • Leszek Migdal - reported documentation mistake for Eclipse plugin
  • Hakan Civelek - an order-of-magnitude optimization to the SystemOutPrintln rule
  • George Sexton - Suggested new rule for Additional String Concatenation Warnings in StringBuffer.
  • John Heintz - Added "any language" support to CPD.
  • Harald Gurres - cleaned up the symbol table code with a very nice patch
  • Matthias Kerkhoff - CPD suggestions, several bug reports
  • Chris Riesbeck - identified some dead code in RuleSet
  • Lars Gregori - reported a bug in the Ant task docs
  • Olaf Heimburger - reported a possible NPE in ReportTree
  • Ryan Gustafson - patch to add "ref" overrides to RuleSetFactory, patch to fix JDK 1.3 incompatibilities in PMD 2.0
  • Todd Wright - reported bug in EmptyStatementNotInLoop, XPath port of AtLeastOneConstructorRule, ConfusingTernaryExpression rule, reported missing ASTUnaryExpressionNotPlusMinus nodes
  • Conrad Roche - UnusedModifier bug report, other bug reports
  • Mike Thome - NOPMD implementation concept, BadComparisonRule suggestion
  • Ken Foskey - C++ parser bug report, cpd.sh
  • ehowe - a nice patch to include rule priority in the XML report
  • aryanto - reported a broken reference in the 'favorites' ruleset.
  • Archimedes Trajano - suggested SimpleDateFormatNeedsLocale
  • Joerg Kurt Wegner - bug report for UnusedLocalVariable
  • Bruno - Reported bug with TooManyFields, SuspiciousEqualsMethodName
  • Philippe Couton - bug report for ExceptionAsFlowControl, OverrideBothEqualsAndHashcodeRule bug report, UseSingletonRule improvements, JUnitStaticSuiteRule improvements
  • Paul Rowe - suggestion for improving MethodWithSameNameAsEnclosingClass, bug reports for SimplifyBooleanExpressions and UnusedLocalVariable
  • Enno Derksen - enhancements to VariableNamingConventionsRule
  • Michael Haggerty - bug reports for FinalizeDoesNotCallSuperFinalize and UnusedModifier
  • Phil Shaw - documentation suggestions
  • Sreenivasa Viswanadha - reminded me to use BufferedInputStreams, grammar cleanup for Ctrl-Z problem
  • Austin Moore - Integration with Omnicore's CodeGuide IDE
  • Noel Grandin - EqualsNull rule, bug report for IfElseStmtsMustUseBracesRule
  • Matt Inger - CloneMethodMustImplementCloneable, CloneThrowsCloneNotSupportedException
  • Morgan Schweers - Javascript highlighter for the PMD scoreboard
  • Brandon Franklin - bug report for BeanMembersShouldSerializeRule, many PMD scoreboard ideas
  • Will Sargent - AvoidThrowingCertainExceptionTypesRule, AvoidCatchingNPERule, ExceptionAsFlowControlRule, URL updates for 'Similar projects' page
  • Bertrand Mollinier Toublet - Bug report which led to platform character set encoding enhancement
  • Choi Ki Soo - Found bug in XMLRenderer
  • wedemann - Found bug in RuleSetFactory XPath message variable plugging
  • Lori Olson - Found copy/paste bug in rule descriptions
  • Adrian Papari - Wrote the PapariTextRenderer
  • Curt Cox - some additions to the 'Similar Projects' page
  • Michael Griffel - bug fix for XMLRenderer
  • Doug Tillman - correction to finalizers.xml examples
  • Luis Alberto Domínguez Ruiz - bug report for IfElseStmtsMustUseBracesRule
  • Chad Loder - SuspiciousOctalEscapeRule, EmptyStatementNotInLoop, SuspiciousHashcodeMethodName, NonCaseLabelInSwitchStatement, DefaultLabelNotLastInSwitchStmt, NonStaticInitializer, ExplicitCallToFinalize, MethodWithSameNameAsEnclosingClassRuleTest, FinalizeDoesNotCallSuperFinalize, FinalizeOverloaded, FinalizeOnlyCallsSuperFinalize, UnconditionalIfStatement, AvoidDollarSigns, EmptyStaticInitializer, EmptyFinalizerMethod rule, DontImportSun rule, improvements to ASTBooleanLiteral
  • Maik Schreiber - AccessNode bug report, other bug reports
  • Lokesh Gupta - improvements to the AST viewer
  • Jesse Glick - improvements to VariableNamingConventionsRule, patch for UnusedModifierRule, bug fix for VariableNameDeclarations rule, an excellent discussion on the UnnecessaryConstructorRule
  • Nicolas Liochon - CloneShouldCallSuperCloneRule implementation
  • Slava Pestov - Suggestions for jEdit plugin enhancements.
  • Olivier Mengué - Diagnosed and patched XML report character encoding problems
  • Hariolf Häfele - PMD-JDeveloper plugin bug reports
  • Vladimir Bossicard - suggested AbstractNamingRule, test package organization suggestions, VBHTMLRenderer, numerous feature requests and bug reports, several rule suggestions derived from JUnit-Addons, evangelism :-)
  • Ken Foskey - noticed bad link
  • Stephan Janssen - promoted PMD for JJGuidelines
  • Ron Sidi - bug reports
  • David Koontz - suggestions for tweaking PMD command line options
  • Jeff Epstein - TextPad integration and tests
  • Gabe Johnson - CloseConnectionRule
  • Roelof Vuurboom - posted report of QStudio analysis of PMD
  • Jeff Anderson - node finding utility code
  • Boris Gruschko - regression test suites, nifty AST/XPath viewer
  • Trevor Harmon - rewrote XSLT script
  • Vadim Nasardinov - xdocs cleanup, run.sh cleanup
  • Sigiswald Madou - bug report
  • Dan Tullis - bug report
  • George Menhorn - CPD bug reports and suggestions
  • Paul Roebuck - Ant build improvement, several bug reports
  • Jon A. Maxwell - Bug report
  • Erik Lee - Bug report
  • Joerg K. Wegner - PMD scoreboard suggestions
  • Chris Webster - fix (and test) for UnnecessaryConstructorRule, BooleanInstantiation rule
  • Colin Simmonds - detailed bug reports
  • Trond Andersen - AvoidCatchingThrowable, ExceptionSignatureDeclaration, ExceptionTypeChecking
  • Bernd Jansen - grammer modification
  • Jarle Naess - bug report
  • Jeff Anderson - VariableNamingConventionsRule, MethodNamingConventionsRule, ClassNamingConventionsRule
  • Frank van Puffelen - documentation suggestions
  • mcclain looney - patch for CPD GUI, bug reports
  • Ralf Hauser - Various documentation suggestions, cygwin-run.sh
  • Pablo Casado - Bug report for UseSingletonRule
  • Frank Hardisty - BeanMembersShouldSerializeRule
  • Randall Schulz - bug report for LooseCouplingRule
  • Wim Bervoets - bug report for the PMD Ant task
  • Niels Peter Strandberg - various tweaks to the PMD Swing UI
  • Ian Shef - documentation updates, bug reports on the Gel IDE plugin
  • Astro Jetson Jr - a tweak for the ShortVariableNameRule
  • Paul King - a complete rewrite of the Gel plugin
  • Gael Marziou - "exclude" rule feature request, bug reports
  • Philippe T'Seyen - refactoring and cleanup of the CPD Ant task, an XML renderer (with unit tests!) for CPD
  • Michael Montuori - bug reports on the Gel IDE plugin
  • Michael Hosier - bug reports on the Gel IDE plugin
  • Matthew Harrah - script bug report
  • Richard Jenson - CPD on Win32 troubleshooting
  • Daniel Bruguier - CPD on Win32 troubleshooting
  • Mario Claerhout - CPD optimizations and suggestions
  • Sameer Nanda - CPD Ant task bug report
  • Nanne Baars - grammar suggestions, rule suggestions
  • Adam Nemeth - bug fixes for UnnecessaryConstructorRule
  • Andrew Glover - the CPDTask, ExcessivePublicCountRule, CouplingBetweenObjectsRule, ExcessiveImportsRule, documentation tweaks
  • Robert Leland - bug report
  • Carl Gilbert - AccessorClassGenerationRule, DoubleCheckedLockingRule, ConstructorCallsOverridableMethodRule, bug reports, feature requests, and documentation improvements
  • Dave Fuller - improved resource loading code (packaged in a nice diff, too!)
  • David Whitmore - parser bug report
  • David Campbell - detailed bugs reports, Ant task refactoring, documentation tweaks
  • Michael Sutherland - bug report in IfStmtMustUseBracesRule
  • Egon Willighagen - PMD scoreboard suggestion
  • Adam Nemeth - bug report on missing final attribute for local variable declarations
  • Frederic Harper - bug report and subsequent troubleshooting
  • Mats Henricson - an XSLT script and several bug reports
  • Martin Cooper - feature suggestions
  • Bruce Mayhew - feedback on the jEdit plugin
  • Juergen Ebert - feature suggestions and pmd-netbeans feedback
  • J.D. Fagan - feature suggestions
  • William McArthur - ForLoopShouldBeWhileLoop rule
  • Ales Bukovsky - pmd-netbeans feedback
  • Stefan Bodewig - bug report
  • Paul Kendall - enhanced EmptyCatchBlock rule
  • Sean Sullivan - rule suggestions
  • Dale Vissar - rule suggestions
  • Alina Copeland - PMD scoreboard formulas, pmd-dcpd optimizations
  • Vincent Massol - bug reports, design suggestions, feature suggestions, Maven guidance
  • Peter Donald - design suggestions
  • Liam Holohan - bug reports
  • Ralph Schaer - bug reports and verification
  • Damian O'Neill - Ant task patches

Organizations

DARPA for funding the Ultra*Log and Cougaar effort which spawned PMD.
SourceForge for providing hosting services for PMD.
RefactorIT for letting their software be used free-of-charge on PMD code (OpenSource Community License)
QA-Systems for sending in some handy utilities for PMD and shipping PMD inside their QStudio product
Vanward Technologies for using PMD inside their Convergence product
Cenqua for giving us a free Clover license and doing a nice FishEye run.