[java] Add new versions 21 and 21-preview

This commit is contained in:
Andreas Dangel
2023-08-04 09:37:51 +02:00
parent 2b0cadf0ed
commit 0cd0b40ede
4 changed files with 13 additions and 8 deletions

View File

@@ -2,7 +2,7 @@
title: Java support
permalink: pmd_languages_java.html
author: Clément Fournier
last_updated: March 2021 (7.0.0)
last_updated: August 2023 (7.0.0)
tags: [languages]
summary: "Java-specific features and guidance"
---
@@ -15,8 +15,10 @@ Usually the latest non-preview Java Version is the default version.
| Java Version | Alias | Supported by PMD since |
|--------------|-------|------------------------|
| 21-preview | | 7.0.0 |
| 21 (default) | | 7.0.0 |
| 20-preview | | 6.55.0 |
| 20 (default) | | 6.55.0 |
| 20 | | 6.55.0 |
| 19-preview | | 6.48.0 |
| 19 | | 6.48.0 |
| 18 | | 6.44.0 |
@@ -39,10 +41,10 @@ Usually the latest non-preview Java Version is the default version.
## Using Java preview features
In order to analyze a project with PMD that uses preview language features, you'll need to enable
it via the environment variable `PMD_JAVA_OPTS` and select the new language version, e.g. `20-preview`:
it via the environment variable `PMD_JAVA_OPTS` and select the new language version, e.g. `21-preview`:
export PMD_JAVA_OPTS=--enable-preview
pmd check --use-version java-20-preview ...
pmd check --use-version java-21-preview ...
Note: we only support preview language features for the latest two java versions.

View File

@@ -213,7 +213,7 @@ accordingly and this rule won't be executed.
The specific version of a language to be used is selected via the `sourceLanguage`
nested element. Example:
<sourceLanguage name="java" version="17"/>
<sourceLanguage name="java" version="21"/>
The available versions depend on the language. You can get a list of the currently supported language versions
via the CLI option `--help`.

View File

@@ -47,8 +47,10 @@ public class JavaLanguageModule extends LanguageModuleBase {
.addVersion("18")
.addVersion("19")
.addVersion("19-preview")
.addDefaultVersion("20") // 20 is the default
.addVersion("20-preview"));
.addVersion("20")
.addVersion("20-preview")
.addDefaultVersion("21") // 21 is the default
.addVersion("21-preview"));
}

View File

@@ -33,7 +33,8 @@ enum class JavaVersion : Comparable<JavaVersion> {
J17,
J18,
J19, J19__PREVIEW,
J20, J20__PREVIEW;
J20, J20__PREVIEW,
J21, J21__PREVIEW;
/** Name suitable for use with e.g. [JavaParsingHelper.parse] */
val pmdName: String = name.removePrefix("J").replaceFirst("__", "-").replace('_', '.').lowercase()