##### Overview

- Download PMD 5.0.4
- What's new in PMD 5.0.4
- PMD in the news
- PMD-related products and books
- Best practices
- Future directions
- Similar projects
- Credits
- License
- What does 'PMD' mean?

##### Usage

- Installation
- Command line usage
- Ant task usage
- Maven plugin usage
- Mvn plugin usage
- IDE plugin usage
- Suppressing warnings
- Finding duplicated code
- JSP support

##### Customizing PMD

- Compiling PMD
- How to write a rule
- Writing XPath rules
- How to make a rule set
- How it works
- Rule guidelines
- PMD developers information
- PMD Release Process

##### For example

- Run PMD on a Sourceforge project

##### Misc.

- XPath tutorial (Gregorian)

##### Rule Sets

- ecmascript
  - Basic Ecmascript
  - Braces
  - Unnecessary
- java
  - Android
  - Basic
  - Braces
  - Clone Implementation
  - Code Size
  - Comments
  - Controversial
  - Coupling
  - Design
  - Empty Code
  - Finalizer
  - Import Statements
  - J2EE
  - JavaBeans
  - JUnit
  - Jakarta Commons Logging
  - Java Logging
  - Migration
  - Naming
  - Optimization
  - Strict Exceptions
  - String and StringBuffer
  - Security Code Guidelines
  - Type Resolution
  - Unnecessary
  - Unused Code
- jsp
  - Basic JSF
  - Basic JSP
- xml
  - Basic XML
- xsl
  - XPath in XSL

##### Project Documentation

- Project Information
- Project Reports

## Similar to PMD

### Open Source

- Checkstyle - Very detailed, supports both Maven and Ant. Uses ANTLR.
- DoctorJ - Uses JavaCC. Checks Javadoc, syntax and calculates metrics.
- ESC/Java - Finds null dereference errors, array bounds errors, type cast errors, and race conditions. Uses Java Modeling Language annotations.
- FindBugs - works on bytecode, uses BCEL. Source code uses templates, nifty stuff!
- Hammurapi - Uses ANTLR, excellent documentation, lots of rules
- Jamit - bytecode analyzer, nice graphs
- JCSC - Does a variety of coding standard checks, uses JavaCC and the GNU Regexp package.
- Jikes - More than a compiler; now it reports code warnings too
- JLint - Written in C++. Uses data flow analysis and a lock graph to do lots of synchronization checks. Operates on class files, not source code.
- JPathFinder - A verification VM written by NASA; supports a subset of the Java packages
- JWiz - Research project, checks some neat stuff, like if you create a Button without adding an ActionListener to it. Neat.

### Commercial

- AppPerfect - 750 rules, produces PDF/Excel reports, supports auto-fixing problems
- Assent - The usual stuff, seems pretty complete.
- Aubjex - Rules aren't listed online. Appears to have some code modification stuff, which would be cool to have in PMD. $299.
- AzoJavaChecker - Rules aren't listed online so it's hard to tell what they have. Not sure how much it costs since I don't know German.
- CodePro AnalytiX - Eclipse plug-in, extensive audit rules, JUnit test generation/editing, code coverage and analysis
- Enerjy Java Code Analyser - 200 rules, lots of IDE plugins
- Flaw Detector - In beta, does control/data flow analysis to detect NullPointerExceptions
- JStyle - $995, nice folks, lots of metrics and rules
- JTest - Very nice with tons of features, but also very expensive and requires a running X server (or Xvfb) to run on Linux. They charge $500 to move a license from one machine to another.
- Lint4J - Lock graph, DFA, and type analysis, many EJB checks
- SolidSDD - Code duplication detection, nice graphical reporting. Free licensing available for Educational or OSS use.

## Similar to CPD

### Commercial

- Simian - fast, works with Java, C#, C, CPP, COBOL, JSP, HTML
- Simscan - free for open source projects

## High level reporting

- XRadar - Agregates data from a lot of code quality tool to generate a full quality dashboard.
- Sonar - Pretty much like XRadar, but younger project, fully integrated to maven 2 (but requires a database)
- Maven Dashboard - Same kind of agregator but only for maven project.
- QALab - Yet another maven plugin...