The Rule Designer is a graphical tool that helps PMD users develop their custom rules. Main features:
- AST inspection: inspect AST structure for any language, including XPath attributes
- XPath rule design: integrated XPath editor, and rule metadata editor
- Rule test edition: create or edit rule test files for the PMD testing framework
The designer is part of PMD's binary distributions. To install a distribution, see the documentation page about installing PMD.
The app needs either Oracle Java 8 (which includes JavaFX) or OpenJDK 11+ and a separately installed
OpenJFX distribution. Visit JavaFX - Gluon to download an SDK 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 designeron Linux/ OSX
- pmd.bat designeron Windows
Alternatively, you can launch the program "from source" with Maven.
- $ ./mvnw -Prunning exec:javawill launch the program after compiling it, using the JavaFX distribution of your system
- $ ./mvnw -Prunning,with-javafx exec:javawill also add JavaFX dependencies on your classpath. You can change the version of those dependencies with eg- -Dopenjfx.version=21.0.2for OpenJFX 21. See the list of available versions here.
The latest version of the designer currently works with PMD 7.0.0 and above.
You can simply replace pmd-designer-7.X.Y.jar with the latest build
in the installation folder of your PMD distribution.
See CONTRIBUTING.md for instructions to build the project from source and setup your IDE.
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:
./mvnw 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 can additionally enable the profile with-javafx to include openjfx as well.
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.
