2012-06-19 14 views
5

He estado trabajando para que Checkstyle trabaje en Maven en el Eclipse Indigo IDE por un tiempo. Finalmente, pensé que pediría algunos consejos expertos sobre esto.Maven Checkstyle: Check not working

Estoy usando Eclipse Indigo y estoy intentando configurar Checkstyle para ejecutar en Maven.

A continuación se muestra un fragmento de mi pom.xml. Solo checkstlye: checkstlye funciona y crea los informes.

======

<profile> 
     <id>checkstyle-profile</id> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-checkstyle-plugin</artifactId> 
        <version>2.9.1</version> 
        <configuration> 
         <includeTestSourceDirectory>true</includeTestSourceDirectory> 
         <configLocation>${basedir}/src/main/resources/maven_checks.xml</configLocation> 
        </configuration> 
        <executions> 
         <execution> 
          <id>checkstyle-check</id> 
          <goals> 
           <goal>check</goal> 
          </goals> 
          <phase>compile</phase> <!-- Default is "verify" --> 
          <configuration> 
           <violationSeverity>error</violationSeverity> 
           <maxAllowedViolations>7000</maxAllowedViolations> 
           <failOnViolation>true</failOnViolation> 
           <failsOnError>true</failsOnError> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 

</profiles> 

<reporting> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-checkstyle-plugin</artifactId> 
      <version>2.9.1</version> 
      <configuration> 
       <configLocation>${basedir}/src/main/resources/maven_checks.xml</configLocation> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jxr-plugin</artifactId> 
      <version>2.3</version> 
     </plugin> 
    </plugins> 
</reporting>  

Algunas de las cosas que no están funcionando son:

  1. configLocation para un encargo checkstlye está siendo ignorada y siempre por defecto a Sun checkstlye.
  2. No puedo ejecutar checkstlye: check. Me sale el error por debajo ¿Qué objetivo debo ejecutar para que se ejecute checkstyle: check? Error al ejecutar el objetivo org.apache.maven.plugins: maven-checkstyle-plugin: 2.9.1: check (default-cli) en el proyecto zzz-web: tiene 5950 Checkstyle infringe
  3. ¿La configuración correcta para fallar? la construcción si el número de violaciones cruza 7000?
  4. El informe Checkstyle no puede hacer una referencia cruzada del código Java del informe. Entonces, por ejemplo, si trato de profundizar desde el paquete a las clases de Java y luego hago clic en el número de línea de la violación, no me lleva al archivo Java. Tal vez no he configurado el plugin jxr correctamente.

Esperando una respuesta rápida.

Gracias de antemano. Varma

Respuesta

7

Has vinculado check objetivo de maven checkstyle plugin a compile fase. Siendo ese el caso, necesitaría ejecutar mvn compile para que se usen sus configuraciones. Al ejecutar mvn checkstyle:check, se usarán las configuraciones predeterminadas. Este parece el caso más probable para los artículos 1 y 2 anteriores.

Incluso si se va a ejecutar mvn compile la configuración anterior todavía fallará la construcción a causa de las dos entradas de configuración failOnViolation y failOnError ya que ambos se ponen a true. Quitar estas entradas y ejecutar mvn compile debería pasar la compilación siempre que el número de infracciones sea inferior a 7000.

+0

Gracias Raghuram! Aprecio tu ayuda. – AVarma

+2

@AVarma.Claro, es posible que desee volver a votar y/o [aceptar respuesta] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) para que ayude a los demás en el futuro. – Raghuram

+0

problema/mejora se informa - https://issues.apache.org/jira/browse/MCHECKSTYLE-314 –

0

1.configLocalización de un control personalizado se ignora y siempre se utiliza de forma predeterminada en el control de Sun.

Para esto, por favor utilice por debajo de la etiqueta:>

<properties<checkstyle.config.location>properties/checkstyle.xml</checkstyle.config.location> </properties> 

en su pom.xml del proyecto en el que el uso de la línea checkstyle.this estará en la parte superior y por debajo de la etiqueta de pom.xml.

<version>0.0.1-SNAPSHOT</version>