pmd / pmd/pmd

[doc] Generate a complete rule catalog in a machine-readable format

Open
#4,295 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

in:documentation
Dominant language
Java
Stars
5.5k
Forks
1.6k
Avg merge
1d 19h
Merged PRs (30d)
54

Description

This should be initially a simple csv format (with columns for rule name, ruleset, language,
description, since, deprecation, unique rule reference, properties, etc.)
for ease to use in spreadsheet software.

Additionally a more structured format using JSON should be provided, which makes it easier
to use in the browser.

The rule catalog needs to be generated during the build (e.g. in pmd-doc), as the rule
properties are only available at runtime.

This allows to use this later for: comparing the rules between two releases (which rules
are new, which are deprecated now, etc.), consuming the catalog in a ruleset builder
or editor.

Note: This depends on PMD 7.0.0 API - the ruleset schema

Related issues:

  • fixes #1335
  • relates #4187
  • relates #4208

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in pmd-doc and review the PMD 7.0.0 API and ruleset schema referenced in the issue. Determine how rule properties are exposed during the build, then define the CSV columns and corresponding JSON structure. Done means the build generates both machine-readable catalogs containing the requested rule metadata.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
build-system, documentation
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.