概述
目前,Checkstyle 不支持这样的配置组合。
以下是一些相关的 GitHub 问题:
如何扩展/覆盖现有配置(sun、google) · 问题 #4484 · checkstyle/checkstyle。
创建配置的继承/覆盖和组合/扩展的概念 · 问题 #2873 · checkstyle/checkstyle。
一种解决方法
有一个非常简单的解决方法可以覆盖对配置文件的一些检查:将单个 Checkstyle Maven 插件执行拆分为两个执行:
- 创建使用整个配置文件的第一个执行并禁止覆盖检查。
- 创建第二个执行,它使用自定义配置文件,仅带有«overridden»检查。
此处还解释了此解决方法:创建配置的继承/覆盖和组合/扩展的概念·问题#2873·checkstyle / checkstyle:评论。
缩进相关示例(草稿)
项目:pom.xml
/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>8.43</version>
</dependency>
</dependencies>
</plugin>
/build/plugins
插件定义:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<executions>
<execution>
<id>check-google-checks</id>
<phase>validate</phase>
<goals>
<goal>check</goal>
</goals>
<configuration>
<configLocation>google_checks.xml</configLocation>
<suppressionsLocation>maven-checkstyle-suppressions-google_checks.xml</suppressionsLocation>
<suppressionsFileExpression>checkstyle.suppressions.file</suppressionsFileExpression>
</configuration>
</execution>
<execution>
<id>check-custom-checks</id>
<phase>validate</phase>
<goals>
<goal>check</goal>
</goals>
<configuration>
<configLocation>maven-checkstyle-custom_checks.xml</configLocation>
</configuration>
</execution>
</executions>
<configuration>
<failsOnError>true</failsOnError>
<violationSeverity>warning</violationSeverity>
<includeTestSourceDirectory>true</includeTestSourceDirectory>
</configuration>
</plugin>
Checkstyle 配置文件:maven-checkstyle-suppressions-google_checks.xml
<?xml version="1.0"?>
<!DOCTYPE suppressions PUBLIC
"-//Checkstyle//DTD SuppressionFilter Configuration 1.2//EN"
"https://checkstyle.org/dtds/suppressions_1_2.dtd">
<suppressions>
<suppress checks="Indentation" files="." />
</suppressions>
Checkstyle 配置文件:maven-checkstyle-custom_checks.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="Checker">
<module name="TreeWalker">
<module name="Indentation">
<property name="basicOffset" value="4" />
<property name="braceAdjustment" value="4" />
<property name="caseIndent" value="4" />
<property name="throwsIndent" value="4" />
<property name="lineWrappingIndentation" value="4" />
<property name="arrayInitIndent" value="4" />
</module>
</module>
</module>