https://github.com/pmd/pmd-designer
The Rule Designer is a graphical tool that helps PMD users develop their custom rules
https://github.com/pmd/pmd-designer
javafx-application pmd xpath
Last synced: about 1 year ago
JSON representation
The Rule Designer is a graphical tool that helps PMD users develop their custom rules
- Host: GitHub
- URL: https://github.com/pmd/pmd-designer
- Owner: pmd
- License: bsd-2-clause
- Created: 2019-03-01T17:40:38.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2025-05-10T14:18:47.000Z (about 1 year ago)
- Last Synced: 2025-05-13T01:29:14.137Z (about 1 year ago)
- Topics: javafx-application, pmd, xpath
- Language: Java
- Homepage:
- Size: 7.41 MB
- Stars: 83
- Watchers: 7
- Forks: 18
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# PMD Rule Designer
[](https://github.com/pmd/pmd-designer/actions/workflows/build.yml)
[](https://maven-badges.herokuapp.com/maven-central/net.sourceforge.pmd/pmd-designer)
[](https://app.gitter.im/#/room/#pmd_pmd-designer:gitter.im?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
The Rule Designer is a graphical tool that helps PMD users develop their custom
rules. Main features:
* [AST inspection](https://docs.pmd-code.org/latest/pmd_userdocs_extending_designer_reference.html#ast-inspection): inspect AST structure for any language, including XPath attributes
* [XPath rule design](https://docs.pmd-code.org/latest/pmd_userdocs_extending_designer_reference.html#xpath-rule-design): integrated XPath editor, and rule metadata editor
* [Rule test edition](https://docs.pmd-code.org/latest/pmd_userdocs_extending_designer_reference.html#testing-a-rule): create or edit rule test files for the [PMD testing framework](https://docs.pmd-code.org/latest/pmd_userdocs_extending_testing.html)

## Installation
The designer is part of PMD's binary distributions. To install a distribution, see the
[documentation page](https://docs.pmd-code.org/latest/pmd_userdocs_installation.html) 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](https://gluonhq.com/products/javafx/) 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 designer` on Linux/ OSX
* `pmd.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=21.0.2` for OpenJFX 21.
See the list of available versions [here](https://search.maven.org/artifact/org.openjfx/javafx).
### Updating
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](https://github.com/pmd/pmd-designer/releases/latest)
in the installation folder of your PMD distribution.
## Usage
### [Usage documentation is on the website](https://docs.pmd-code.org/latest/pmd_userdocs_extending_designer_reference.html)
## Building from source/ contributing
See [CONTRIBUTING.md](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:
```
./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.