java - Maven "checkstyle:checkstyle"始终默认为 "sun_checks.xml"与内联 checkstyle 配置

标签 java maven checkstyle

试图弄清楚我是否做错了什么,或者这是否是 maven checkstyle 插件中的错误。如果我执行 mvn checkstyle:check 我会得到这个:

jonathanfisher@odin ~/dev/snapjms/snapjms $ mvn checkstyle:check
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building snapjms 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-checkstyle-plugin:2.17:check (default-cli) @ snapjms ---
[INFO] There is 1 error reported by Checkstyle 6.11.2 with /Users/jonathanfisher/dev/snapjms/snapjms/target/checkstyle-rules.xml ruleset.
[ERROR] src/main/java/org/xxx/xxx/snapjms/jms/factories/UnsupportedPayloadException.java:[8] (sizes) LineLength: Line is longer than 135 characters (found 144).
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.411 s
[INFO] Finished at: 2016-06-16T15:33:58-05:00
[INFO] Final Memory: 17M/371M

如果我执行 mvn checkstyle:checkstyle 请注意它如何翻转到 sun_checks.xml:

jonathanfisher@odin ~/dev/snapjms/snapjms $ mvn checkstyle:checkstyle
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building snapjms 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-checkstyle-plugin:2.17:checkstyle (default-cli) @ snapjms ---
[INFO] There are 451 errors reported by Checkstyle 6.11.2 with sun_checks.xml ruleset.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.904 s
[INFO] Finished at: 2016-06-16T15:35:46-05:00
[INFO] Final Memory: 24M/361M

这是我的内联配置:

<build>
   <pluginManagement>
      <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <version>2.17</version>
            <inherited>true</inherited>
            <configuration>
               <logViolationsToConsole>true</logViolationsToConsole>
               <checkstyleRules>
                  <module name="Checker">
                     <module name="SuppressionCommentFilter" />
                     <module name="LineLength">
                        <property
                           name="max"
                           value="135" />
                        <property
                           name="ignorePattern"
                           value="@version|@see" />
                     </module>
               </checkstyleRules>
            </configuration>
         </plugin>
      </plugins>
   </pluginManagement>
   <plugins>
      <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-checkstyle-plugin</artifactId>
      </plugin>
   </plugins>
</build>
<reporting>
   <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-checkstyle-plugin</artifactId>
   </plugin>
</reporting>

mvn:site 的报告也使用了sun_checks.xml 我做错了什么?

最佳答案

checkstyle 目标从配置的 configLocation 中读取规则集文件.默认情况下,这是 sun_checks.xml包含在插件中:

Specifies the location of the XML configuration to use. [...]

There are 2 predefined rulesets included in Maven Checkstyle Plugin:

  • sun_checks.xml: Sun Checks.
  • google_checks.xml: Google Checks.

Default: sun_checks.xml

check 相反目标,它没有 checkstyleRules 允许使用内联检查器配置的参数,因此无需为规则集指定位置。

我在 the maven-checkstyle-plugin JIRA 上找不到增强请求关于这一点,也许可以要求:内联配置在 MCHECKSTYLE-211 中引入它显然只涵盖了 check目标。

这解释了你的输出:

  • mvn checkstyle:check , 使用的规则是在 <checkstyleRules> 中定义的规则参数;
  • mvn checkstyle:checkstyle , 没有设置规则的位置所以它默认为 sun_checks.xml .

因此,将您的规则与 check 一起使用目标(例如,用作 mvn site 的报告目标时运行),您将需要一个外部文件,并通过以下方式引用它:

<configLocation>checkstyle.xml</configLocation>

关于java - Maven "checkstyle:checkstyle"始终默认为 "sun_checks.xml"与内联 checkstyle 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37869001/

相关文章:

Java 同步块(synchronized block)

java - 如何从数据源列表实例化数据源?

java - 如何创建多模块 Spring Boot Maven 项目?

macos - 如何在终端中使用 IntelliJ 捆绑的 maven?

sonarqube - 从 Checkstyle + PMD + Findbugs 迁移到 SonarQube

java - 在 TLS1.2 上创建 ActiveMQ 连接

java - DispatcherServlet - Roo 项目中的上下文初始化失败

maven - 如何在 CI 构建中更改 POM 版本?

Java checkstyle 错误 "Declaring variables, return values or parameters of type ' 不允许使用“整数”。”

java - Eclipse 中的 Checkstyle 错误 - 无法实例化 Tab 字符