You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

maven-checkstyle-plugin自定义规则无法执行及配置报错求助

解决maven-checkstyle-plugin的LineLength模块属性错误问题

这个问题我之前踩过坑,根源就是插件版本和Google检查规则的版本不兼容

问题分析

你用的是maven-checkstyle-plugin:3.1.0,这个版本内置的Checkstyle核心版本比较旧(对应Checkstyle 8.2),而你复制的google_checks.xml是基于更新的Checkstyle版本编写的——其中LineLength模块的fileExtensions属性是在Checkstyle 8.12之后才新增的,老版本根本不认识这个属性,所以才会抛出这个错误。

两种解决方案

方案1:升级maven-checkstyle-plugin版本(推荐)

直接把插件版本升级到支持该属性的版本,比如3.3.0(对应Checkstyle 8.45.1,完全兼容Google的检查规则)。修改后的插件配置如下:

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-checkstyle-plugin</artifactId>
      <!-- 升级到兼容的版本 -->
      <version>3.3.0</version>
      <configuration>
        <configLocation>checkstyle.xml</configLocation>
        <encoding>UTF-8</encoding>
        <consoleOutput>true</consoleOutput>
        <failsOnError>true</failsOnError>
        <linkXRef>false</linkXRef>
      </configuration>
      <executions>
        <execution>
          <id>validate</id>
          <phase>validate</phase>
          <goals>
            <goal>check</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

升级后不需要修改checkstyle.xml,直接执行mvn checkstyle:check就能正常运行。

方案2:修改checkstyle.xml适配老插件

如果不想升级插件,就手动修改你复制的checkstyle.xml,找到LineLength模块的配置,删掉fileExtensions属性。比如:
原来的配置:

<module name="LineLength">
  <property name="max" value="100"/>
  <property name="fileExtensions" value="java,xml"/>
</module>

修改后:

<module name="LineLength">
  <property name="max" value="100"/>
</module>

这样老版本的Checkstyle就能识别这个配置了。

验证

修改完成后,执行命令:

mvn checkstyle:check

应该就能顺利完成代码检查了。

内容的提问来源于stack exchange,提问作者Ruifeng Ma

火山引擎 最新活动