quarkus-extension-linter

This is a tool to lint Quarkus extensions for compliance with Quarkus standards. It's based on the Quarkus Extension Structure ADR.

Usage

Build the linter:

./mvnw clean package -DskipTests

It's packaged as an über JAR in target/quarkus-extension-linter-<version>-runner.jar.

Run the linter against a Quarkus extension:

java -jar target/quarkus-extension-linter-<version>-runner.jar --path=<path-to-extension-root>

The --path argument should point to the root directory of the Quarkus extension you want to lint.

The lint generates a report in Markdown format in the target/lint-report.md file of the extension being checked.

Implemented Checks

  • Verify that build steps are in the deployment module.
  • Check the presence of Automatic-Module-Name in the manifest of runtime, deployment, and SPI modules.
  • Verify that the deployment module depends on the runtime module.
  • Check that GraalVM substitutions and features are in the runtime module in the appropriate package.
  • Ensure the structure (packages) of the modules.
  • Ensure that metadata file is present and the status is valid.

Adding a check

To add a new check, create a class that extends the io.quarkus.extension.linter.rules.DefaultRule interface. The class should override the check method to perform the specific checks you want.