[ 
https://issues.apache.org/jira/browse/MCHECKSTYLE-314?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16036129#comment-16036129
 ] 

Stig Rohde Døssing commented on MCHECKSTYLE-314:
------------------------------------------------

[~michael-o] This fix seems broken to me. checkstyle:check runs Checkstyle on 
its own, so with this patch Checkstyle ends up running twice when 
checkstyle:check is invoked. For example, we have the following configuration 
for Apache Storm (plugin version is bumped from 2.17, but that's the only 
change):
{code}
                <plugin>
                    <!--To support checkstyle goals. For example: "mvn 
checkstyle:checkstyle"-->
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-checkstyle-plugin</artifactId>
                    <version>3.0.0-SNAPSHOT</version>
                    <dependencies>
                        <dependency>
                            <groupId>com.puppycrawl.tools</groupId>
                            <artifactId>checkstyle</artifactId>
                            <!-- If you change this, you should also update the 
storm_checkstyle.xml file to be
                            based on the google_checks.xml from the version of 
checkstyle you are choosing. -->
                            <version>7.7</version>
                        </dependency>
                    </dependencies>
                    <executions>
                        <execution>
                            <id>validate</id>
                            <phase>validate</phase>
                            <configuration>
                                
<configLocation>storm-buildtools/storm_checkstyle.xml</configLocation>
                                <encoding>UTF-8</encoding>
                                <failOnViolation>true</failOnViolation>
                                
<logViolationsToConsole>false</logViolationsToConsole>
                                
<outputFile>target/checkstyle-violation.xml</outputFile>
                                <violationSeverity>warning</violationSeverity>
                            </configuration>
                            <goals>
                                <goal>check</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
{code}

With version 2.17 we correctly get a checkstyle-violation.xml in our target 
folder, and warnings in the console when there are violations.
With the code currently on trunk we get an additional 
{code}
[INFO] There are 34506 errors reported by Checkstyle 7.7 with sun_checks.xml 
ruleset.
[WARNING] Unable to locate Source XRef to link to - DISABLED
{code}
which is clearly misleading, since we are not using the sun_checks.xml ruleset. 
We also end up with both the expected checkstyle-violation.xml and an 
additional checkstyle-results.xml in the target folder. The 
checkstyle-results.xml is generated by the checkstyle:checkstyle execution, and 
so contains violations for the Sun ruleset. It seems likely to me that someone 
will accidentally open the wrong file at some point, and start correcting the 
wrong violations.

I think either this change should be reverted, or the 
CheckstyleViolationCheckMojo should be rewritten so it doesn't run Checkstyle 
itself, but delegates that task to the checkstyle:checkstyle goal. I'm not 
familiar enough with Mojo development to know if it's possible to do the second 
option without breaking backward compatibility. The PMD plugin is able to make 
{{check}} run {{pmd}} because they have a cleaner separation between the 
{{pmd}} and {{check}} goals, e.g. the {{check}} goal doesn't have any 
parameters to configure PMD execution. This makes it easy for them to just 
invoke the {{pmd}} goal, because they don't have to deal with trying to pass 
configuration from the {{check}} goal to {{pmd}}.

> checkstyle:check should invoke the execution of this plugin's goal 
> "checkstyle" prior to executing itself
> ---------------------------------------------------------------------------------------------------------
>
>                 Key: MCHECKSTYLE-314
>                 URL: https://issues.apache.org/jira/browse/MCHECKSTYLE-314
>             Project: Maven Checkstyle Plugin
>          Issue Type: Improvement
>    Affects Versions: 2.17
>            Reporter: Roman Ivanov
>            Assignee: Michael Osipov
>             Fix For: 3.0.0
>
>
> I run into problem with using checkstyles goal "checkstyle:check" in 
> sevntu.checkstyle project 
> (https://github.com/sevntu-checkstyle/sevntu.checkstyle/blob/master/sevntu-checks/pom.xml#L75)
>  as it always use default Sun config when I run "checkstyle:check", It took 
> me a while to figure out why that does not work.
> I had a habit and convenience to run in such a ways pmd and findbug, just 
> "mvn pmd:check", "mvn findbug:check" it is human friendly.
> PMD and Findbugs plugins already do this:
> http://gleclaire.github.io/findbugs-maven-plugin/check-mojo.html
> https://maven.apache.org/plugins/maven-pmd-plugin/check-mojo.html
> search for "Invokes the execution of this plugin's goal"
> vs
> http://maven.apache.org/plugins/maven-checkstyle-plugin/check-mojo.html
> Problem was also raised at : 
> http://stackoverflow.com/questions/11106767/maven-checkstylecheck-not-working
> Please add support of this, most users are not professionals in Maven. I use 
> Maven for many years and it took me too much time to find a reason why it 
> does not work.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to