【问题标题】:checkstyle not checking space indentation in XMLcheckstyle 不检查 XML 中的空格缩进
【发布时间】:2025-11-30 01:20:07
【问题描述】:

我希望 checkstyle 也可以检查 xml/properties(如果可能的话在 yml)文件中的缩进。

但是,以我当前的配置,我无法完成它。这是我的项目结构的样子

.
├── Makefile
├── README.md
├── checkstyle.xml
├── pom.xml
├── src
│   ├── main
│   └── test

而我的checkstyle.xml 针对这个特定问题的文件配置是

<module name="Checker">
    <property name="charset" value="UTF-8"/>

    <property name="severity" value="error"/>

    <property name="fileExtensions" value=""/>
    <property name="basedir" value="."/>
    <!-- Checks for whitespace                               -->
    <!-- See http://checkstyle.sf.net/config_whitespace.html -->
    <module name="FileTabCharacter">
        <property name="eachLine" value="true"/>
    </module>

我已将basedir 设置为. 并尝试使用/(因为我的检查样式位于config/checkstyle 位置)。我也尝试过没有basedir 属性,但是当我的 XML 缩进 4 个空格时,它不会报告 XML 缩进问题。我说的是pom.xml。我如何确保 checkstyle 检查 xml 文件。

PS:

我在我的 maven 依赖项中使用 checkstyle 7.0 版并以 mvn checkstyl:checkstyle 的身份执行检查

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-checkstyle-plugin</artifactId>
        <version>2.17</version>
        <dependencies>
            <dependency>
                <groupId>com.puppycrawl.tools</groupId>
                <artifactId>checkstyle</artifactId>
                <version>7.0</version>
            </dependency>
        </dependencies>
        <executions>
            <execution>
                <id>validate</id>
                <phase>validate</phase>
                <configuration>
                    <configLocation>${checkstyle.config.location}</configLocation>
                    <encoding>UTF-8</encoding>
                    <consoleOutput>true</consoleOutput>
                    <failsOnError>true</failsOnError>

                </configuration>
                <goals>
                    <goal>check</goal>
                </goals>
            </execution>
        </executions>
    </plugin>

【问题讨论】:

  • 你是什么意思检查缩进?它应该如何表现?它应该强制使用制表符,还是应该检查每个标签是否缩进了四个空格?
  • 你当前的配置只会检查是否有标签在任何地方使用,它会报告它。
  • 我想检查它的标识是 2 个空格而不是 4 个
  • checkstyle 是不可能的。

标签: java xml maven checkstyle


【解决方案1】:

Checkstyle 没有对其他文件的缩进检查,然后是 java 文件,因此无法使用它在 XML 文件中检查它。 基本上所有TreeWalker 检查都是针对java 文件(例如IndentationCheck),所有其他检查都可以用于其他文件(XML、属性等),但数量非常有限(例如FileTabCharacterCheck)。

你需要使用其他工具,但我还没有找到。

【讨论】: