# Developer and contributor documentation

Table of Contents

The following pages and posts are tagged with

Title | Type | Excerpt
--- | --- | ---
Adding PMD support for a new dialect for an already existing language | Page | How to add a new dialect.
Adding PMD support for a new ANTLR grammar based language | Page | How to add a new language to PMD using ANTLR grammar.
Adding PMD support for a new JavaCC grammar based language | Page | How to add a new language to PMD using JavaCC grammar.
How to add a new CPD language | Page | How to add a new language module with CPD support.
Building PMD with Eclipse | Page | Import PMD Project Download the latest Eclipse IDE for Enterprise Java and Web Developers Install it by extracting it into a directory of your choice Start eclipse. You’ll be asked for a workspace. It’s recommended to use an extra, separate new workspace for PMD, because...
Building PMD from source | Page | Compiling PMD JDK 11 or higher Note: While Java 11 is required for building, running PMD only requires Java 8. You’ll need to either check out the source code or download the latest source release. Assuming you’ve got the...
Building PMD General Info | Page | Before Development Ensure that Git and Java JDK >= 21 are installed. You can get a OpenJDK distribution from e.g. Adoptium. Note: While Java 21 is required for building, running PMD only requires Java 8. Fork the PMD repository on GitHub as explained...
Building PMD with IntelliJ IDEA | Page | Import PMD Project Download the Community Edition of IntelliJ IDEA from https://www.jetbrains.com/idea/download/other.html. Install it, that means, extract the archive Start it with bin/idea.sh In the startup dialog, choose the button Open and select the folder, into which PMD’s repository has been cloned. Then...
Building PMD with Netbeans | Page | Import PMD Project This needs to be done only once. Install Apache Netbeans Select File > Open Project… and choose the already checked out PMD source folder. After a while, you should see under “Projects > PMD > Modules” all the modules. You can then open individual...
Building PMD with VS Code | Page | Warning: It is not recommend to use VS Code for developing. See Known Issues below. Import PMD Project This needs to be done only once. Install Visual Studio Code Select File > Open Folder… and choose the already checked out PMD...
Contributor's Guide | Page | How to contribute to PMD
Developer Resources | Page | Source Code The complete source code can be found on GitHub: github.com/pmd/pmd - main PMD repository. Includes all the code to support all languages, including this documentation. github.com/pmd/pmd.github.io - Contains the landing page https://pmd.github.io github.com/pmd/build-tools - Contains the checkstyle rules we use github.com/pmd/pmd-designer...
How PMD Works | Page | Processing overview of the different steps taken by PMD.
Logging | Page | Logging API is slf4j PMD uses slf4j as the logging API internally. Logging can be done also in (Java-based) rules. In order to log, get a logger. Usually the logger is stored in a static final field called LOG: private...
Newcomers' Guide | Page | This is a small guide for GSoC Students and new contributors. 1. Check out PMD As you want to engage with PMD, your first task is, to find out what PMD is - if you didn’t do this already. Read the webpage, install PMD with the Installation...
Pmdtester | Page | Introduction Pmdtester is a regression testing tool that ensures no new problems and unexpected behaviors will be introduced to PMD after fixing an issue. It can also be used to verify, that new rules work as expected. It has been integrated into travis CI and is actually used automatically...
Roadmap | Page | TODO: Update Future direction projects, plans Google Summer of Code Future directions Want to know what’s coming? Or, better, wanna contribute ? Here is the page listing what are our plans - when we have ones, for the future of PMD. It also give you hints at...
Rule deprecation policy | Page | Describes when and how rules are deprecated
Guidelines for standard rules | Page | Guidelines for rules that are included in the standard distribution
Writing documentation | Page | PMD's documentation uses [Jekyll](https://jekyllrb.com/) with the [I'd rather be writing Jekyll Theme](http://idratherbewriting.com/documentation-theme-jekyll/index.html). Here are some quick tips. ## Format The pages are in general in [Github Flavored Markdown](https://kramdown.gettalong.org/parser/gfm.html). ## Structure The documentation sources can be found in two places based on how they are generated: - the ones that are...