##### Overview

- Download PMD 4.2.5
- What's new in PMD 4.2.5
- 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

##### For example

- Run PMD on a Sourceforge project

##### Rule Sets

- Index
- Android
- Basic
- Braces
- Code Size
- Clone
- Controversial
- Coupling
- Design
- Finalizers
- Import Statements
- J2EE
- Javabeans
- JUnit Tests
- Logging (Java)
- Logging (Jakarta)
- Migrating
- Naming
- Optimizations
- Strict Exceptions
- Strings
- Sun Security
- Unused Code
- Java Server Pages
- Java Server Faces

##### Project Documentation

- About
- Project Info
  - Mailing Lists
  - Project Team
  - Dependencies
  - Source Repository
  - Issue Tracking
- Project Reports
- Development Process

##### Legend

- External Link
- Opens in a new window

## Web Access

This is a link to the online source repository that can be viewed via a web browser:

    http://pmd.svn.sourceforge.net/viewvc/pmd/

## Source Repository

This project uses Subversion to manage its source code. Instructions for using Subversion can be found at http://svnbook.red-bean.com/.

### Anonymous Access with Maven

This project's source can be checked out anonymously from SVN with the following instruction set on a single line:

          maven scm:checkout
            -Dmaven.scm.method=svn
            -Dmaven.scm.url=scm:svn:https://pmd.svn.sourceforge.net/svnroot/pmd/trunk/pmd
            -Dmaven.scm.checkout.dir=pmd

### Anonymous Access

This project's source can be checked out anonymously from SVN with the following command:

    svn checkout https://pmd.svn.sourceforge.net/svnroot/pmd/trunk/pmd pmd

### Developer Access with Maven

Even though everyone can checkout the Subversion repository via HTTPS, committers have to use HTTPS if they want to be able to check back in their changes. Use the following instruction set on a single line:

          maven scm:checkout
            -Dmaven.scm.method=svn
            -Dmaven.scm.url=scm:svn:https://pmd.svn.sourceforge.net/svnroot/pmd/trunk/pmd
            -Dmaven.scm.checkout.dir=pmd

### Developer Access

Even though everyone can checkout the Subversion repository via HTTPS, committers have to use HTTPS if they want to be able to check back in their changes. Use the following command:

    svn checkout https://pmd.svn.sourceforge.net/svnroot/pmd/trunk/pmd pmd

### Access from behind a firewall

For those users who are stuck behind a corporate firewall which is blocking http access to the Subversion repository, you can try to access it via the developer connection:

    svn checkout https://pmd.svn.sourceforge.net/svnroot/pmd/trunk/pmd pmd

### Access through a proxy

The Subversion client can go through a proxy, if you configure it to do so. First, edit your "servers" configuration file to indicate which proxy to use. The files location depends on your operating system. On Linux or Unix it is located in the directory "~/.subversion". On Windows it is in "%APPDATA%\Subversion". (Try "echo %APPDATA%", note this is a hidden directory.)

There are comments in the file explaining what to do. If you don't have that file, get the latest Subversion client and run any command; this will cause the configuration directory and template files to be created.

Example : Edit the 'servers' file and add something like:

    [global]
    http-proxy-host = your.proxy.name
    http-proxy-port = 3128