PMD Rule Designer
The Rule Designer is a graphical tool that helps PMD users develop their custom
rules. Main features:
Installation
The designer is part of PMD's binary distributions. To install a distribution, see the
documentation page about installing PMD.
The app needs JRE 1.8 or above to run. Be aware that on JRE 11+, the JavaFX distribution should be installed
separately. Visit the download page to download a distribution,
extract it, and set the JAVAFX_HOME
environment variable.
If the bin
directory of your PMD distribution is on your shell's path, then you can launch the app with
pmd designer
on Linux/ OSXpmd.bat designer
on Windows
Alternatively, you can launch the program "from source" with Maven.
$ ./mvnw -Prunning exec:java
will launch the program after compiling it, using the JavaFX distribution of your system$ ./mvnw -Prunning,with-javafx exec:java
will also add JavaFX dependencies on your classpath.
You can change the version of those dependencies with eg -Dopenjfx.version 13
for OpenJFX 13.
See the list of available versions here.
Updating
The latest version of the designer currently works with PMD 7.0.0-rc1 and above.
You can simply replace pmd-ui-7.X.Y.jar
with the latest build
in the installation folder of your PMD distribution.
Usage
Building from source/ contributing
See CONTRIBUTING.md for instructions to build the project from source and setup your IDE.
Building a runnable JAR
You can package a runnable jar containing the PMD dependencies with maven. For
now the only option is to build a jar that contains pmd-core and pmd-java:
mvn clean package -Dfat-java -Dpmd.core.version=7.0.0-SNAPSHOT
The pmd.core.version
property selects the version of pmd-core and pmd-java
that will be included. The built jar can then be found in your target
directory.
Such a jar cannot be used in a PMD distribution and must be used in a
standalone fashion, otherwise classpath conflicts may arise.
You should never run the install
goal with the -Dfat-java
property! This
would install the fat jar in your local repo and may cause dependency conflicts.