How it works

PMD checks source code against rules and produces a report. Like this:

  • Something passes a file name and a RuleSet into PMD
  • PMD hands an InputStream to the file off to a JavaCC-generated parser
  • PMD gets a reference to an Abstract Syntax Tree back from the parser
  • Each Rule in the RuleSet gets to traverse the AST and check for problems
  • The Report is now filled with RuleViolations, and those get printed out in XML or HTML or whatever

A paucity of detail, I'm sure you'd agree. If you think this document can be improved, please post here and let me know how. Thanks!