2016-06-16 5 views
2

내가 잘못하고 있는지 또는 maven checkstyle 플러그인의 버그인지 파악하려고합니다. 내가 mvn checkstyle:check을한다면 나는이 얻을 :Maven "checkstyle : checkstyle"은 항상 기본값 인 "sun_checks.xml"을 인라인 checkstyle 구성과 함께 사용합니다.

[email protected] ~/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에 : 또한 mvn:site

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

보고서 :

[email protected] ~/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 

여기 내 인라인 설정입니다 uses sun_checks.xml 내가 뭘 잘못하고 있니?

답변

4

checkstyle 목표는 구성된 configLocation에서 rulesets 파일을 읽습니다. 기본적으로 플러그인에 포함되어있는 입니다.

사용할 XML 구성의 위치를 ​​지정합니다. [...] 메이븐 Checkstyle 플러그인에 포함이 미리 정의 된 규칙 세트가 있습니다

:

  • sun_checks.xml : 일 검사가.
  • google_checks.xml : Google Checks.

기본값 :sun_checks.xml

check 목표는 달리,이 같은 지정의 필요성을 무시, 인라인 검사기 구성의 사용을 가능하게하는 checkstyleRules 매개 변수를 가지고 있고,하지 않습니다 규칙 집합의 위치

the maven-checkstyle-plugin JIRA에 대한 개선 요청을 찾을 수 없으므로 다음과 같이 요청할 수 있습니다. 인라인 구성이 MCHECKSTYLE-211에 도입되었으며 이는 분명히 check 목표만을 처리했습니다.

은 출력 설명 : mvn checkstyle:check

  • , 그 <checkstyleRules> 매개 변수에 정의되어 사용 규칙을;
  • mvn checkstyle:checkstyle으로 설정하면 규칙의 위치가 설정되지 않으므로 기본값은 sun_checks.xml이됩니다.

따라서, 당신이하는 외부 파일이 있어야합니다 (예 : mvn site로보고 목적으로 사용될 때 실행)을 check 목표로 규칙을 사용하고 그것을 참조하기 :

<configLocation>checkstyle.xml</configLocation> 
0

코드의 다음 조각은 당신이 명령을 실행할 때 실행됩니다이 모조는 CheckstyleViolationCheckMojo

@Parameter(property = "checkstyle.config.location", defaultValue = "sun_checks.xml") 
private String configLocation; 

에서입니다

mvn checkstyle:check 

@Parameter 주석에 "checkstyle.config.location"이라는 인수 이름 속성이 있고 기본값이 "sun_checks.xml"인 경우 해당 값은 다음을 사용하여 명령 줄에서 전달하여 덮어 쓸 수 있습니다. -D 플래그. 다른 체크 스타일의 구성을 사용하려면 명령을 실행할 때 다음과 같이 그래서 그냥, 추가 :

이 '자원으로 해결하고 돈되도록 구글 검사가 이미 checkstyle 플러그인에 포함되어 있는지
mvn checkstyle:check -Dcheckstyle.config.location=[path to my checkstyle file] 
mvn checkstyle:check -Dcheckstyle.config.location=google_checks.xml -Dcheckstyle.violationSeverity=warning 
mvn checkstyle:check -Dcheckstyle.config.location=~/custom_checks.xml 

공지 사항 당신이 그것의 주문 버전을 가지고 있지 않는 한 t는 경로를 추가해야한다.

소스 코드를 확인하면 통과 할 수있는 모든 속성을 살펴볼 수 있습니다.

https://github.com/apache/maven-plugins/blob/trunk/maven-checkstyle-plugin/src/main/java/org/apache/maven/plugins/checkstyle/CheckstyleViolationCheckMojo.java