4

在尝试添加maven-checkstyle-plugin到我的 Java 项目时,我遇到了一些奇怪的问题。checkstyle 版本是 3.1.0,它使用 checkstyle 版本 8.19。以下是checkstyle.xml项目正在使用:

<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
          "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
          "https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="TreeWalker">
    <module name="LineLength">
        <property name="max" value="120"/>
    </module>
</module>

和我在 pom.xml 上的配置

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <version>3.1.0</version>
    <configuration>
        <configLocation>checkstyle.xml</configLocation>
    </configuration>
</plugin>

现在,当我运行时mvn checkstyle:check,会显示以下消息:

[错误] 无法在项目 myproject 上执行目标 org.apache.maven.plugins:maven-checkstyle-plugin:3.1.0:check (default-cli):在 checkstyle 配置期间失败:在 Checker 中不允许 LineLength 作为子项 - > [帮助1]

如果我更新 checkstyle 使其看起来像这样

<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
          "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
          "https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="LineLength">
        <property name="max" value="120"/>
</module>

我收到以下消息

[错误] 无法在项目 myproject 上执行目标 org.apache.maven.plugins:maven-checkstyle-plugin:3.1.0:check (default-cli):在 checkstyle 配置期间失败:属性“max”不存在,请检查文档 -> [帮助 1]

我无法推理发生了什么,因为对我来说,错误消息具有误导性。我在这个配置上缺少什么?

4

3 回答 3

6

实际上,在较新的版本中LineLength不应再下,TreeWalker而是直接下。Checker见这里: https ://github.com/checkstyle/eclipse-cs/issues/190

于 2020-03-16T04:29:45.403 回答
5

与您的示例匹配的 1.3 DTD 的结构如下(即,您似乎缺少该Checker模块)。

<module name="Checker">
    <module name="TreeWalker">
        <module name="LineLength">
            <property name="max" value="120"/>
        </module>
    </module>
</module>
于 2019-09-04T17:51:17.087 回答
0

我在 Visual Studio Code 中收到此错误,我需要确保我的 checkstyle.xml 版本与 Visual Studio Code 使用的 checkstyle 版本相匹配。

我去了 Extensions->CheckStyle->Settings->Version 并将其设置为匹配适当的版本。我只是将版本设置为与我的 build.gradle.kts 文件中定义的版本相匹配。

于 2021-11-23T16:20:45.567 回答