--- title: PMD Documentation website keywords: java permalink: index.html toc: false summary: > Welcome to PMD, an extensible cross-language static code analyzer. It finds common programming flaws like unused variables, empty catch blocks, unnecessary object creation, and so forth. Additionally it includes CPD, the copy-paste-detector. CPD finds duplicated code. last_updated: August 2017 author: Jeff Jensen , Andreas Dangel ---
{% unless site.output == "pdf" %} {% endunless %}
{% include custom/shuffle_panel.html tags="getting_started" datagroups='["getting_started"]' description="These pages summarize the gist of PMD usage to get you started quickly." title="Getting started" %} {% include custom/shuffle_panel.html tags="rule_references" datagroups='["userdocs"]' title="Rule references" description="Pick your language to find out about the rule it supports." image="fa-database" titlemaker="page.language_name" %} {% include custom/shuffle_panel.html tags="userdocs,extending" datagroups='["userdocs", "extending", "contributing"]' title="Writing rules" description="These pages document the process of writing and testing custom rules and metrics for PMD." %} {% include custom/shuffle_panel.html tags="userdocs" except_tags="extending,tools" datagroups='["userdocs"]' image="fa-cog" title="Usage and configuration" description="Learn how to build effective and versatile rulesets." %} {% include custom/shuffle_panel.html tags="devdocs" except_tags="extending" datagroups='["contributing"]' image="fa-github" title="Contributing" description="If you'd like to help us build PMD, these topics may interest you. See you around!" %} {% include custom/shuffle_panel.html tags="tools" datagroups='["userdocs"]' title="Tools and integrations" description="These pages describe solutions that integrate PMD within your build process." %} {% include custom/shuffle_panel.html tags="devdocs,extending" datagroups='["contributing","extending"]' title="Major contributions" description="" %}
{% unless site.output == "pdf" %} {% include initialize_shuffle.html %} {% endunless %} {% include links.html %}