为什么 PMD 对 Eclipse 和 Gradle 给出不同的结果?

Why is PMD give different results for Eclipse and Gradle?

我正在使用 eclipse-pmd 插件,我还通过以下 Gradle 配置使用 PMD:

plugins {
  id 'pmd'
}

pmd {
  consoleOutput = true
  ruleSets = []
  ruleSetFiles = files("pmd-ruleset.xml")
  toolVersion = "6.41.0"
}

两种方法都配置为使用相同的规则集,我的 PATH 变量指向 PMD 6.41.0(我 认为 是 Eclipse 插件使用的) , 但两者都给出不同的结果。

例如,运行 ./gradlew pmdMain 抱怨规则 AvoidUncheckedExceptionsInSignatures,但 eclipse-pmd 根本没有标记它。

为什么会这样?

事实证明,eclipse-pmd 插件(我在 C:\Users\{username}\.p2\pool\plugins 中找到)附带了自己的 PMD 版本,在本例中为 6.28 .0.

这并不能完全解释差异,因为 AvoidUncheckedExceptionsInSignatures 规则自 PMD 6.13.0 以来一直存在,但我很乐意将输出差异归咎于版本差异。