Maven Checkstyle:Check not working

2019-02-22 10:08发布

I have been working on trying to get Checkstyle working in Maven in the Eclipse Indigo IDE for a while. Finally, I thought I will ask for some expert advise on this.

I am using Eclipse Indigo and trying to configure Checkstyle to run in Maven.

Below is a snippet of my pom.xml. Only checkstyle:checkstyle is working and creating the reports.

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

Some of the things that are not working are:

  1. configLocation for a custom checkstlye is being ignored and always default to Sun checkstlye.
  2. I am unable to run checkstlye:check. I get below error. What target should I run so that the checkstyle:check runs. Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:2.9.1:check (default-cli) on project zzz-web: You have 5950 Checkstyle violations
  3. Is the configuration setting right for failing the build if the number of violations crosses 7000?
  4. The Checkstyle report is unable to cross reference the Java code from the report. So for example, if I try to drill down from the package to the Java classes and then click on line number of the violation, it does not take me to the Java file. Maybe I have not configured the jxr plugin correctly.

Hoping for a quick response.

Thanks in advance. Varma

3条回答
一夜七次
2楼-- · 2019-02-22 10:21

1.configLocation for a custom checkstyle is being ignored and always default to Sun checkstyle.

For this please use below tag:

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

in your POM.xml of project on which your using checkstyle.this line will be on the top and below tag of pom.xml.

<version>0.0.1-SNAPSHOT</version>
查看更多
冷血范
3楼-- · 2019-02-22 10:37

googe_checks.xml has to be located in your project where pom.xml is present. mvn checkstyle:check

<properties>
    <checkstyle.config.location>google_checks.xml</checkstyle.config.location>
    <checkstyle.violationSeverity>warning</checkstyle.violationSeverity>
    <checkstyle.consoleOutput>true</checkstyle.consoleOutput>
</properties>

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>3.0.0</version>
                <dependencies>
                    <dependency>
                        <groupId>com.puppycrawl.tools</groupId>
                        <artifactId>checkstyle</artifactId>
                        <version>8.8</version>
                    </dependency>
                </dependencies>
                <executions>
                    <execution>
                        <id>validate</id>
                        <phase>validate</phase>`
                        <properties>
                            <checkstyle.config.location>google_checks.xml</checkstyle.config.location>
                            <checkstyle.violationSeverity>warning</checkstyle.violationSeverity>
                            <checkstyle.consoleOutput>true</checkstyle.consoleOutput>
                        </properties>

                        <build>
                            <pluginManagement>
                                <plugins>
                                    <plugin>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-checkstyle-plugin</artifactId>
                                        <version>3.0.0</version>
                                        <dependencies>
                                            <dependency>
                                                <groupId>com.puppycrawl.tools</groupId>
                                                <artifactId>checkstyle</artifactId>
                                                <version>8.8</version>
                                            </dependency>
                                        </dependencies>
                                        <executions>
                                            <execution>
                                                <id>validate</id>
                                                <phase>validate</phase>
                                                <goals>
                                                    <goal>check</goal>
                                                </goals>
                                            </execution>
                                        </executions>
                                    </plugin>
                                </plugins>
                            </pluginManagement>
                        </build>
                        </project>
                        `
                        <goals>
                            <goal>check</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </pluginManagement>
</build>
</project>
查看更多
混吃等死
4楼-- · 2019-02-22 10:43

You have bound check goal of maven checkstyle plugin to compile phase. That being the case, you would need to run mvn compile for your configurations to be used. Running mvn checkstyle:check will use default configurations. This looks like the most likely case for items 1 and 2 above.

Even if you were to run mvn compile the above configuration will still fail the build on account of the two configuration entries failOnViolation and failOnError since both of them are set to true. Removing these entries and running mvn compile should pass the build so long as the number of violations are less than 7000.

查看更多
登录 后发表回答