检测到旧版本的 checkstyle。考虑更新到 >= v8.30

Old version of checkstyle detected. Consider updating to >= v8.30

关于 SonarQube + Checkstyle 警告的小问题。

目前,在我的应用程序中,在我的 pom 中,我使用以下 Checkstyle 插件:

          <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>3.1.2</version>
                <configuration>
                    <outputFile>.out/reports/checkstyle/checkstyle-result.xml</outputFile>
                    <outputDirectory>target/reports/checkstyle</outputDirectory>
                    <outputFileFormat>xml</outputFileFormat>
                </configuration>
            </plugin>

这个插件正在做它的工作,不用担心。

当我 运行 SonarQube 时,我收到此警告

Old version of checkstyle detected. Consider updating to >= v8.30
For more information see: https://maven.apache.org/plugins/maven-checkstyle-plugin/examples/upgrading-checkstyle.html

我明明去看了网站,但我还是很难理解。

我拥有的 Checkstyle 插件是最新的已知版本 3.1.2,已在 Maven Central 等上检查

在 SonarQube 中,我运行正在使用最新版本 8.9 LTS,以及最新版本的 Checkstyle 插件。

请问我错过了什么?我是不是使用了某种错误的插件?

这是一个名为sonar-checkstyleSonarQube插件,需要在SonarQube服务器实例上安装或升级。当前版本为 8.40.

注:参考

编辑 1

第 1 步

首先,<user_home>/.sonar/cache下有一个cache目录(我在Windows10上是C:\Users\<myuser>\.sonar\cache),请删除sub directories下的所有目录这个 cache 目录的目的是让 org.sonarsource.scanner.maven:sonar-maven-plugin 最新版本 从我们的 SonarQube 服务器实例下载它并确保所有相关插件是 upgrading/installing 在 SonarQube 服务器实例之后的新插件。 (不要忘记在完成后重新启动它 upgrading/installing 以确保重新加载所有新的)

第 2 步

其次,确保我们没有在我们的项目 pom.xml 中指定 org.sonarsource.scanner.maven:sonar-maven-plugin 无论是在父级还是其他任何地方,目的是确保在执行期间,它将是 最新版本 匹配我们的 SonarQube 服务器实例 version.

反正正式文档(https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-maven/)也提到How to Fix Version of Maven Plugin如下: -

How to Fix Version of Maven Plugin

It is recommended to lock down versions of Maven plugins:

<build>
  <pluginManagement>
    <plugins>
      <plugin>
        <groupId>org.sonarsource.scanner.maven</groupId>
        <artifactId>sonar-maven-plugin</artifactId>
        <version>
        <!--Version that matched with our Sonar server instance version --> 
        </version>
      </plugin>
    </plugins>
  </pluginManagement>
</build>

最新版本可以在https://search.maven.org/artifact/org.codehaus.mojo/sonar-maven-plugin or https://search.maven.org/artifact/org.sonarsource.scanner.maven/sonar-maven-plugin浏览最新版本是3.9.0.2155注:?.y.z版本是和我们的Sonar服务器实例匹配的版本)

步骤 3

最后但同样重要的是,如果我们的项目是multi-module projects,在正式文件(https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-maven/)中提到如下:-

In some situations you may want to run the sonar:sonar goal as a dedicated step. Be sure to use install as first step for multi-module projects

mvn clean install

mvn sonar:sonar ...

然后这里会有2个步骤,先mvn clean install完成然后mvn sonar:sonar ...稍后

编辑 2

maven-checkstyle-plugin 也可以指定 https://maven.apache.org/plugins/maven-checkstyle-plugin/examples/upgrading-checkstyle.html 中提到的 checkstyle version ,其中重要的句子为

Maven Checkstyle plugin comes with a default Checkstyle version: for maven-checkstyle-plugin 3.1.2, Checkstyle 8.29 is used by default.

然后 maven-checkstyle-plugin 的配置如下所示:-

    <project>
      ...
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-checkstyle-plugin</artifactId>
              <version>3.1.2</version>
              <dependencies>
                <dependency>
                  <groupId>com.puppycrawl.tools</groupId>
                  <artifactId>checkstyle</artifactId>
                  <version>...choose your version...</version>
                </dependency>
              </dependencies>
            </plugin>
          </plugins>
        </pluginManagement>
      <build>
      ...
    </project>

最新版本可以在https://search.maven.org/artifact/com.puppycrawl.tools/checkstyle浏览最新版本8.42.