【问题标题】:Checkstyle plugin doesn't care what's in external configuration fileCheckstyle 插件不关心外部配置文件中的内容
【发布时间】:2019-01-16 20:49:31
【问题描述】:

我正在尝试将 Maven Checkstyle 插件与外部配置文件一起使用。该插件在指定或不指定外部配置文件的情况下都可以使用,并且 checksytle 警告会根据是否设置了 configLocation 而有所不同。所以看起来它应该可以正常工作,但事实并非如此。无论我在外部配置文件中输入什么,似乎都会生成相同的警告。事实上,我可以完全清除文件并且似乎没有任何改变。

在 pom 中:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <version>3.0.0</version>
    <executions>
        <execution>
            <id>validate</id>
            <phase>validate</phase>
            <configuration>
                <configLocation>google_checks.xml</configLocation>
                <encoding>UTF-8</encoding>
                <consoleOutput>true</consoleOutput>
                <failsOnError>true</failsOnError>
            </configuration>
            <goals>
                <goal>check</goal>
            </goals>
        </execution>
    </executions>
</plugin>

尝试使用此文件:

https://github.com/checkstyle/checkstyle/blob/master/src/main/resources/google_checks.xml

在 pom 中,如果我将名称更改为“does_not_exist.xml”,它将报告找不到文件并显示以下消息:

无法在以下位置找到配置文件:does_not_exist.xml

由于它没有以正确的文件名打印此消息,它告诉我它可以找到具有正确名称的文件 (google_checks.xml)。

在文件中:

<module name="LineLength">
    <property name="max" value="100"/>
    <property name="ignorePattern" value="^package.*|^import.*|a href|href|http://|https://|ftp://"/>
</module>

如果我将值更改为 10,我仍然会收到警告:

行长超过 100 个字符...

我在跑步:

mvn clean verify

我尝试将 google_checks.xml 文件放在项目的根目录和 src/main/resources 目录中。两个位置的结果相同。

我最终想更改行长和缩进的规则,但由于它不关心我在文件中输入的内容,我不知道该怎么做。关于如何使其尊重外部文件中的内容的任何想法?

【问题讨论】:

    标签: java checkstyle


    【解决方案1】:

    相当深入,但是: configLocation 你在问题中设置的 XML 被注入到 maven-checkstyle-plugin 的 CheckstyleViolationCheckMojo#configLocation 中,因为这个变量是私有的,它没有出现在他们的 Javadoc 上,但它记录在源代码中。

    此描述指出:

    这个参数被解析为资源,URL,然后是文件。如果 成功解决,将配置内容复制到 ${project.build.directory}/checkstyle-configuration.xml 文件之前 作为配置传递给 Checkstyle。

    有 2 个预定义的规则集。

    • sun_checks.xml:Sun 检查。
    • google_checks.xml:谷歌支票。

    认为正在发生的事情是它没有以正常方式解析参数,因为 google_checks.xml 是预定义的规则集,因此 默认 google_checks.xml 将是加载。

    如果您想使用自己的自定义配置器,您应该将其命名为 google_checks.xmlsun_checks.xml 以外的其他名称

    【讨论】:

    • 谢谢!就是这样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    相关资源
    最近更新 更多