【问题标题】:Different Checkstyle Rules For Main And Test In MavenMaven 中 Main 和 Test 的不同 Checkstyle 规则
【发布时间】:2011-08-17 18:43:30
【问题描述】:

我正在尝试设置一个 maven 项目,以便能够使用两个不同的规则集运行 checkstyle:一个用于 main,一个用于测试。我想做的事情是这样的:

<reporting>
  <plugins>
    <!-- One configuration for main -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-checkstyle-plugin</artifactId>
      <configuration>
        <configLocation>checkstyle</configLocation>
      </configuration>
    </plugin>
    <!-- But a different set of rules for test -->
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-checkstyle-plugin</artifactId>
      <configuration>
        <sourceDirectory>${project.build.testSourceDirectory}</sourceDirectory>
        <configLocation>checkstyle-test.xml</configLocation>
      </configuration>
    </plugin>
  </plugins>
</reporting>

我已经成功地运行了一个版本或另一个版本,但不能同时运行两个版本。包括尝试将它们绑定到不同的执行阶段,但似乎经验法则是最后一个定义是唯一使用的。

所以我想:

-理想情况下 - 有两个可以独立运行的独立 checkstyle 配置文件

-有一个单一的 checkstyle 配置,使用配置属性 includeTestSourceDirectory 同时检查 main 和 test,但有一些规则选择性地应用于 main/test 或另一个。

【问题讨论】:

标签: maven-2 configuration checkstyle


【解决方案1】:

我一直找不到任何机制可以在编译时将不同的 checkstyle 规则应用于不同的源根(另一个答案可能适用于报告生成,但我的需求是编译时检查)。实现的解决方案是拥有适用于源的规则,然后使用 checkstyle 抑制机制来排除测试类上的某些规则,即

<suppress checks="CheckInappropiateForTests" files=".*Test\.java"/>

【讨论】:

    【解决方案2】:

    下面的呢:

       <reporting>
         <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-checkstyle-plugin</artifactId>
            <version>2.6</version>
            <reportSets>
              <reportSet>
                <id>main_checks</id>
                <reports>
                  <report>checkstyle</report>
                </reports>
                <configuration>
                  <sourceDirectory>${project.build.sourceDirectory}</sourceDirectory>
                  <includeTestSourceDirectory>false</includeTestSourceDirectory>
                  <configLocation>config/maven_checks.xml</configLocation>
                  <outputDirectory>${project.reporting.outputDirectory}/main-checks/</outputDirectory>
                </configuration>
              </reportSet>
              <reportSet>
                <id>test_checks</id>
                <reports>
                  <report>checkstyle</report>
                </reports>
                <configuration>
                  <sourceDirectory></sourceDirectory>
                  <testSourceDirectory>${project.build.testSourceDirectory}</testSourceDirectory>
                  <includeTestSourceDirectory>true</includeTestSourceDirectory>
                  <configLocation>config/sun_checks.xml</configLocation>
                  <outputDirectory>${project.reporting.outputDirectory}/test-checks/</outputDirectory>
                </configuration>
              </reportSet>
            </reportSets>
          </plugin>
         </plugins>
       </reporting>
    

    【讨论】:

    【解决方案3】:

    我发现使用这个tip,应用于checktyle 插件,更简单。 就我而言,它看起来像这样:

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-checkstyle-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>checkstyle</id>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                                <phase>verify</phase>
                                <configuration>
                                    <configLocation>some location</configLocation>
                                </configuration>
                            </execution>
                            <execution>
                                <id>checkstyle2</id>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                                <phase>verify</phase>
                                <configuration>
                                    <configLocation>some other location</configLocation>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
    

    【讨论】:

      猜你喜欢
      • 2011-09-18
      • 2014-11-11
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      • 2011-08-17
      • 2021-08-22
      • 2011-03-08
      • 1970-01-01
      相关资源
      最近更新 更多