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/ OSXpmd.bat designeron Windows
Alternatively, you can launch the program "from source" with Maven. There are two different ways
-
If you are running an OpenJDK build without JavaFX bundled:
$ ./mvnw -Prunning exec:javawill launch the Designer after compiling it and add the JavaFX dependencies on the classpath.
Note: JavaFX will be on the classpath and not module path, which might behave a bit differently.
You can change the version of those dependencies with e.g.-Dopenjfx.version=21.0.9for OpenJFX 21. See the list of available versions here. -
If you are running an OpenJDK build with JavaFX bundled (e.g. Azul Zulu, Bellsoft Liberica):
$ ./mvnw -Prunning exec:java -Dopenjfx.scope=providedwill launch the Designer after compiling it without putting the JavaFX dependencies on the classpath.
Note: JavaFX will be on the module path and several packages need to be opened for reflection. Since everything (Maven, Designer) runs in the same JVM, the opened packages are defined in.mvn/jvm.config. Depending on the Java version, you might need additionallyMAVEN_OPTS="--enable-native-access=javafx.graphics --sun-misc-unsafe-memory-access=allow".
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 add -Dopenjfx.scope=compile 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.
