Table of Contents
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 it out of the PMD jar files.
Summary
Status column:
- đ˘ = Supports at least PMD 7, latest release not older than 12 months.
- đ´ = Doesnât support PMD 7 or the latest release is older than 12 months, indicating that this plugin is not actively maintained anymore.
BlueJ
BlueJ is a teaching IDE. To install the PMD extension for BlueJ, download
the PMDExecExt.jar file
and place it in your bluej/lib/extensions/ directory.
PMD Eclipse Plugin
To install the PMD plugin for Eclipse:
- Start Eclipse and open a project
- Select âHelpâ->âSoftware Updatesâ->âFind and Installâ
- Click âNextâ, then click âNew remote siteâ
- Enter âPMDâ into the Name field and https://pmd.github.io/pmd-eclipse-plugin-p2-site/ into the URL field
- Click through the rest of the dialog boxes to install the plugin
Alternatively, you can download the latest zip file and follow the above procedures except for using âNew local siteâ and browsing to the downloaded zip file.
To configure PMD, select âWindowsâ->âPreferencesâ, then select PMD.
To run PMD, right-click on a project node and select âPMDâ->âCheck code with PMDâ.
To run the duplicate code detector, right-click on a project node and select âPMDâ->âFind suspect cut and pasteâ. The report will be placed in a âreportsâ directory in a file called âcpd-report.txtâ.
To find additional help for other features, please read included help by selecting Help->Help Contents and browse the âHow toâŚâ section in the âPMD Plugin Documentationâ book.
After installing an update, if you get an Exception such as âjava.lang.RuntimeException: Couldnât find that class xxxxxâ, try deleting the ruleset.xml file in the .metadata/plugins/net.sourceforge.pmd.eclipse directory in your workspace.
To get Eclipse to not flag the @SuppressWarnings(âPMDâ) annotation, look under the menu headings Java -> Compiler -> Errors/Warnings -> Annotations -> Unhandled Warning Token.
Emacs
Integration with GNU Emacs is performed through an ELisp package, pmd.el. It supports two commands, âpmd-current-bufferâ and âpmd-current-dirâ. The output is captured in a compilation buffer which allows the user to âjumpâ directly to the source code position associated with the PMD warnings.
IntelliJ IDEA External Tool
You can use an integrated plugin or just use it as an IDEA âExternal Toolâ.
Hereâs how to set it up as an âExternal Toolâ:
- Open IDEA and go to File->Settings
- Click on the âExternal Toolsâ icon
- Click on the Add button
- Fill in the blocks
- Name: PMD
- Description: PMD, good for what ails you.
- Menu: Select the âMain menuâ, âProject viewsâ, âEditor menuâ, and âSearch resultsâ checkboxes.
- Program:
c:\pmd\bin\pmd.bat - For the next parameter youâll need to plug in the location of your PMD installation and the rulesets you want to use
- Parameters:
-d "$FilePath$" -f ideaj -R rulesets/java/quickstart.xml -P sourcePath="$Sourcepath$" -P classAndMethodName=$FileClass$.method -P fileName=$FileName$
Thatâs pretty much it. Now you can right click on a source directory and select PMD, itâll run recursively on the source files, and the results should be displayed in a window and hyperlinked into the correct file and line of code. I usually right-click on the message window title bar and unselect âautohideâ so the window doesnât go away every time I fix something in the code window.
IntelliJ IDEA - QAPlug
QAPlug is an Intellij IDEA plugin to manage code quality. It integrates no less than Checkstyle, FindBugs, and PMD.
The plugin is available at https://qaplug.com/.
Also available at the JetBrains site, QAPlug-PMD and QAPlug.
JDeveloper
To install the PMD plugin for JDeveloper:
- JDeveloper 10.1.2: Download the binary release and unzip it into your jdev/lib/ext directory
- JDeveloper 10.1.3 upwards: Click âHelpâ, click âCheck for Updatesâ
- JDeveloper 10.1.3:
- Press âAddâ to add a new update center
- Name: PMD Update Center
- Location: http://pmd.sourceforge.net/center.xml
- Select Update Center: PMD Update Center
- JDeveloper 11 upwards: Select Update Center: Open Source and Partner Extensions
- Press Next and select the actual PMD Plugin and install it
- JDeveloper 10.1.3:
- Restart JDeveloper
To run the PMD plugin for JDeveloper:
- Open the Tools-&Preferences menu
- Click on the PMD option
- Select a couple of rules to try
- To run PMD, right click on either a file, folder, package, project or workspace and select PMD via Toolbar Icon, Context Menu or File Menu
- Any rule violations should show up in a LogWindow tab at the bottom of the screen
JEdit
The way I use the JEdit plugin is:
- Dock the ErrorList by going to Utilities->Global Options->Docking and putting ErrorList at the bottom of the screen
- Open the File Browser if it isnât already open
- Double-click on a source directory
- Select Plugins->PMD->Check directory recursively
Note that you can select individual rules by going to Utilities->Global Options->Plugin Options->PMD. Also, you can change the plugin to prompt you for a directory to check by going to that same menu and selecting the âAsk for Directoryâ checkbox.
TextPad
Assumptions
- The Java Development Kit, version 1.4.2 (versions 1.4 and higher are acceptable) is properly installed
into your machine, and exists in
D:\java\jdk\_142\. This means thatD:\java\jdk\_142\bin\java.exeexists. - PMD version 5.0 exists in
D:\java\pmd-bin-\. This means thatD:\java\pmd-bin-\lib\pmd-.jar(among other jar files in the same directory) exist.
To integrate into TextPad
- In the Configure menu, choose PreferencesâŚ. This opens the Preferences dialog
- In the left pane of the Preferences dialog, choose the Tools branch by clicking on the word âToolsâ.
- On the far right of the dialog, click on the Add button, and then select Program⌠from the drop-down. This opens the standard Windows Open File dialog.
- Type
D:\java\jdk_142\bin\java.exeand click the Open button. In the center pane of the Preferences dialog, an item âJavaâ has now been added, and is currently selected. - Click the word Java, which makes the word editable. Select the entire word, and type âPMD directoryâ. Press Return.
- Repeat steps three through five, but type âPMD fileâ, instead of âPMD directoryâ.
- Click Apply.
- Expand the Tools branch (if not already) by clicking on the â
+â directly to its left. - In the expanded list, select PMD directory. This changes the right side of this dialog to the âtoolâ form.
- In the âtoolâ form, enter these parameters:
- Parameters:
-classpath D:\java\pmd-bin-\lib\pmd-.jar;D:\java\pmd-bin-\lib\asm-3.2.jar;D:\java\pmd-bin-\lib\jaxen-1.1.1.jar net.sourceforge.pmd.PMD -d <i><b>$FileDir</b></i> -f net.sourceforge.pmd.renderers.TextPadRenderer -R E:\directory\my_pmd_ruleset.xml -debug - Initial Folder:
$FileDir - Save all documents first:
Checked - Capture output:
Checked - All other checkboxes: Unchecked
- Regular expression to match output:
^\([^(]+\)(\([0-9]+\), - Registers/File:
1 - Registers/Line:
2
- Parameters:
- In the expanded list, select PMD file.
- In the âtoolâ form, enter the same parameters as above, except replace â
$FileDirâ with â$Fileâ, in the Parameters textbox. - To save your work (truly, given a quirk of TextPad), click on OK, which closes the Preferences dialog. Restart TextPad and re-open the Preferences dialog.
- Go back to both the âPMD directoryâ and âPMD fileâ Tools branches, and replace â
E:\directory\my_pmd_ruleset.xmlâ with the ruleset of your choice. For example,basic. - Go to the Keyboard branch in the left pane (above Tools), which changes the right side to the âkeyboard configurationâ form.
- In the Categories list box, select Tools.
- In the Command list box, select PMD directory.
- Put your cursor into the Press new shortcut key, and type your desired key command.
For example
Ctrl+Page Up - Click Assign.
- In the Command list box, select PMD file.
- Put your cursor into the Press new shortcut key, and type your desired key command.
For example
Ctrl+Page Down - Click Assign.
- Save your work again: Click on OK, which closes the Preferences dialog, and then restart TextPad.
To run PMD against a single Java file
- In TextPad, open any Java file.
- Click
Ctrl+Page Down. This opens an empty, read-only text document (titled âCommand Resultsâ). When PMD completes its analysis, this document will be populated with a listing of violated rules (or âCommand completed successfullyâ indicating no violations). - Double click any line to go to it.
To run PMD against a directory of Java files
- In TextPad, open any file in the root directory you wish to analyze. Unfortunately, youâll need to create a dummy file, if no file exists there.
- Click
Ctrl+Page Up. This opens an empty, read-only text document (titled âCommand Resultsâ). When PMD completes its analysis, this document will be populated with a listing of violated rules (or âCommand completed successfullyâ indicating no violations). - Double click any line to go to it.
Because directory analysis may take a while, you may choose to cancel this operation. Do so by closing the (blank Command Results) document, and then confirming that, âyes, I do really want to exit the toolâ.
Archived Integrations
These are integrations that are no longer maintained or for IDEs that no longer exist.
CodeGuide
CodeGuide was a Java IDE by omnicore: https://web.archive.org/web/20081210063520/http://www.omnicore.com:80/en/codeguide.htm
Gel
Gel was once an IDE: https://archive.org/details/tucows_246670_Gel
Source code for the PMD plugin is here: https://github.com/pmd/pmd-misc/tree/main/pmd-gel/
Hereâs how to set up the Gel plugin:
- Download the pmd-gel-[version].zip file
- Close Gel
- Remove any old plugin versions from your gel\plugins directory
- Unzip the new zip file into your gel\plugins directory
- Start Gel
- Go to Tools->Options->Plugin
- Select the PMD plugin and click âRemoveâ
- Click âAddâ and select ânet.sourceforge.pmd.gel.PMDPluginâ
- Restart Gel
Thatâs pretty much it. Now you can open a Java project and click on Plugins->PMD and a configuration panel will pop up. You can pick which ruleset you want to run and you can also pick whether you want to run PMD on the current file or on every source file in your project.
JBuilder
Was once a IDE by Borland (later Embarcadero): see https://en.wikipedia.org/wiki/JBuilder and https://web.archive.org/web/20090228184200/http://www.embarcadero.com/products/jbuilder/
Source code for the plugin is here: https://github.com/pmd/pmd-misc/tree/main/pmd-jbuilder/
To enable this OpenTool in JBuilder:
- Download the latest binary release
- Unzip it into your
jbuilder/lib/ext/directory - Restart JBuilder
What you can do:
- Check a single file by bringing up the context menu from the file tab and selecting PMDCheck
- Configure the rulesets that the PMD OpenTool will use by selecting Tools->PMD->Configure PMD
- Check all the files in a project by bringing up the context menu for the project node and selecting PMD Check Project
- Locate duplicate code by right clicking on a package and selection âCheck with CPDâ
When running PMD, the results will be displayed in the MessageView under a tab called PMD Results. If you click on a violation message within this view, you will be taken to the line in the source code where the violation was detected.
Things still to do:
- Enable selection of individual rules within a rule set (maybe)
- Optional insertion of @todo comments at the point of a violation
- Possibly provide configurable ability to limit the number of violations per rule per file
JCreator
Was once a IDE: https://web.archive.org/web/20211018201200/http://www.jcreator.com/
- Open Configure > Options
- Go to the Tools panel
- Click New > Program
- Browse for PMDâs pmd.bat
- Put quotations around the path if it has spaces.
- Set the initial directory to PMDâs \bin directory
- Check capture output
- Put ââ$[PrjDir]â emacsâ followed by desired rulesets in the arguments
To run PMD on a project, just pick pmd from the Tools menu.
WebLogic Workshop 8.1.x
Thatâs a plugin for an old version of Bea WebLogic Workshop 8.1.x (which is now available from Oracle). The new versions are based on Eclipse and donât require this plugin anymore.
Please see the WebLogic Workshop plugin project home page for more information.