# User documentation

Table of Contents

The following pages and posts are tagged with

Title | Type | Excerpt
--- | --- | ---
3rd party rulesets | Page | Lists rulesets and rules from the community
Ant Task Usage | Page | PMD Description Runs a set of static code analysis rules on some source code files and generates a list of problems found. Installation Before you can use the pmd task in your ant build.xml file, you need to install PMD and its libraries...
Creating XML dump of the AST | Page | Creating a XML representation of the AST allows to analyze the AST with other tools.
Best Practices | Page | Choose the rules that are right for you Running every existing rule will result in a huge number of rule violations, most of which will be unimportant. Having to sort through a thousand line report to find the few you’re really interested in takes all the fun out of...
bld PMD Extension | Page | bld is a new build system that allows you to write your build logic in pure Java. It has a PMD Extension for it. To install, please refer to the extensions documentation. To check all source code using the java quickstart rule, add the...
Continuous Integrations plugins | Page | Introduction PMD can be integrated through some of the Continuous Integration tools that exist now. This page lists some plugins to do so. If you think, something is missing here, please let us know. Note: The tools are listed in alphabetical order...
PMD CLI reference | Page | Full reference for PMD's command-line interface, including options, output formats and supported languages
Configuring rules | Page | Learn how to configure your rules directly from the ruleset XML.
Finding duplicated code with CPD | Page | Learn how to use CPD, the copy-paste detector shipped with PMD.
Report formats for CPD | Page | Overview of the built-in report formats for CPD
Defining rule properties | Page | Learn how to define your own properties both for Java and XPath rules.
The rule designer | Page | Learn about the usage and features of the rule designer.
Gradle | Page | The Gradle Build Tool provides a PMD Plugin that can be added to your build configuration. Technically it is based on the Ant Task. Example In your build.gradle add the following: plugins { id 'pmd' } Custom ruleset...
IDE Plugins | Page | IDE Integrations General comments A general note - most plugins include the PMD jar files, which has the rulesets inside it. So even though the rulesets parameter that some plugins use (i.e., “category/java/bestpractices.xml”) looks like a filesystem reference, it’s really being used by a getResourceAsStream() call to load...
Incremental Analysis | Page | Explains how to use incremental analysis to speed up analysis
Installation and basic CLI usage | Page | Sums up the first steps to set up a CLI installation and get started using PMD
PMD Java API | Page | The easiest way to run PMD is to just use a build plugin in your favorite build tool like Apache Ant, Apache Maven or Gradle. There are also many integrations for IDEs available, see Tools. If you have your own build tool or want to integrate...
Making rulesets | Page | A ruleset is an XML configuration file, which describes a collection of rules to be executed in a PMD run. PMD includes built-in rulesets to run quick analys...
Maven PMD Plugin | Page | Maven 2 and 3 Running the pmd plugin Choosing the plugin version When adding the maven-pmd-plugin to your pom.xml, you need to select a version. To figure out the latest available version, have a look at the official maven-pmd-plugin documentation. As of July 2024 (7.4.0), the...
Migration Guide for PMD 7 | Page | Migrating to PMD 7 from PMD 6.x
Report formats for PMD | Page | Overview of the built-in report formats for PMD
Rule guidelines | Page | Rule Guidelines, or the last touches to a rule
Signed Releases | Page | Since PMD 7.11.0 we provide GPG signatures along our binary distribution files on GitHub Releases. You can use the signatures to verify that the downloads you have not been tampered with since we built them. How to verify a release? Download the binary zip file and the corresponding...
Suppressing warnings | Page | Learn how to suppress some rule violations, from the source code using annotations or comments, or globally from the ruleset
Testing your rules | Page | Learn how to use PMD's simple test framework for unit testing rules.
Tools / Integrations | Page | ## Automated Code Review {% include note.html content="The tools are listed in alphabetical order without rating." %} ### Blue Cave [Blue Cave](https://bluecave.io) is a code quality and test coverage reporting platform, focused on large monorepos. It integrates directly with GitHub to provide Pull Request merge checks and supports GitHub Actions...
Writing a custom rule | Page | Learn how to write a custom rule for PMD
Writing a custom rule | Page | The information on this page has been split into several separate pages. Please update your bookmarks: * [Introduction to writing rules](pmd_userdocs_extending_writing_rules_intro.html) * [Your First Rule](pmd_userdocs_extending_your_first_rule.html) introduces the basic development process of a rule with a running example * [Writing XPath Rules](pmd_userdocs_extending_writing_xpath_rules.html) explains a bit more about XPath rules and our...
Introduction to writing PMD rules | Page | Writing your own PMD rules
Writing XPath rules | Page | This page describes XPath rule support in more details
Your first rule | Page | Introduction to rule writing through an example for a XPath rule.