2011-05-03 46 views
1

我想設置一個maven項目,使我能夠運行checkstyle使用兩個不同的規則集:一個爲主,一個爲測試。我想這樣做是沿着線的東西:不同的Checkstyle規則主要和測試在Maven

<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> 

我已經能夠成功地運行一個版本或其他,但不能兩者都薩姆斯時間。包括試圖將它們綁定到不同的執行階段,但看起來經驗法則是最後一個定義是唯一使用的定義。

所以我要麼喜歡:

-Ideally - 有兩個單獨的CheckStyle的配置文件,可以獨立運行

OR

- 具備單一的CheckStyle的配置,使用配置屬性includeTestSourceDirectory同時檢查主體和測試,但有一些規則選擇性地應用於主/測試或其他測試。

+0

如果您運行不同的執行你給的執行部分的唯一ID不是爲了某些規則的規則的定義定義了執行的順序。 – khmarbaise 2011-05-03 16:48:08

+0

嘗試從這個線程的解決方案:[Checkstyle不同的規則對不同的文件](http://stackoverflow.com/q/25894431/1005481) – 2014-09-17 18:56:57

回答

2

我一直無法找到適合不同的CheckStyle規則可以在編譯時被應用到不同的源根的任何機構(對方的回答可能適用於報表生成,但我的需求是專門編譯時間檢查)。實現的解決方案是適用於源,然後再使用的CheckStyle supressions機制排除在測試類,即

<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> 
+0

我認爲最好是與抑制過濾器一起工作,如本答案所述:https:/ /stackoverflow.com/questions/25894431/checkstyle-different-rules-for-different-files這也適用於checkstyle:check。 – britter 2017-08-09 07:20:13

相關問題