PMD - maven、sonarqube 和 java 版本之间的混淆

PMD - confusion between maven, sonarqube and java versions

请问关于 PMD 的小问题。

在我撰写本文时(2021 年 6 月),最新的 maven pmd 插件是:

 <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>3.14.0</version>
            </plugin>

最新的SonarQube pmd插件是:

PMD 
EXTERNAL ANALYSERS
Analyze Java code with PMD.
3.3.1 installed

然而,当我 运行 SonarQube 分析时,我得到这个:

[INFO] Sensor PmdSensor [pmd]
[INFO] Execute PMD 6.30.0
[INFO] Java version: 11
[INFO] PMD configuration: /Users/project/target/sonar/pmd.xml

我很困惑。这个PMD 6.30.0从哪里来的?

特别是我在看官网:

https://pmd.github.io

它说 最新版本:6.35.0(2021 年 5 月 29 日)

因此,我的问题是,为什么我会看到 PMD 6.30.0,这是在哪里配置的?

谢谢

maven-pmd-plugin 和 SonarQube PMD 插件是独立的工件,它们依赖于特定版本的 PMD。所以这三个都有不同的版本和生命周期。

maven-pmd-plugin 使用插件发布时的最新 PMD 版本,但您可以在运行时覆盖该版本:https://maven.apache.org/plugins/maven-pmd-plugin/examples/upgrading-PMD-at-runtime.html

如您所见,maven-pmd-plugin 3.14.0 使用PMD 6.29.0。

正如@P.Sanjay指出的那样,SonarQube PMD 3.3.1 使用 PMD 6.30.0,如发行说明中所述(https://community.sonarsource.com/t/new-release-sonar-pmd-plugin-3-3-1/38223). There is also an overview of the different versions in the README.md: https://github.com/jensgerdes/sonar-pmd

PMD 本身会定期发布(每月一次),因此您通常会在 https://pmd.github.io 上找到比插件中使用的版本更新的版本。