pmd / pmd-designer

The Rule Designer is a graphical tool that helps PMD users develop their custom rules
BSD 2-Clause "Simplified" License
76 stars 17 forks source link
javafx-application pmd xpath

PMD Rule Designer

Build Status Maven Central Join the chat

The Rule Designer is a graphical tool that helps PMD users develop their custom rules. Main features:

testing-designer

Installation

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

Alternatively, you can launch the program "from source" with Maven.

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 in the installation folder of your PMD distribution.

Usage

Usage documentation is on the website

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:

./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.