Le dim. 10 nov. 2019 à 00:33, Alex Herbert <alex.d.herb...@gmail.com> a écrit :
>
>
>
> > On 9 Nov 2019, at 18:10, Alex Herbert <alex.d.herb...@gmail.com> wrote:
> >
> >
> >
> >> On 9 Nov 2019, at 12:23, Gilles Sadowski <gillese...@gmail.com 
> >> <mailto:gillese...@gmail.com>> wrote:
> >>
> >>> Snip
> >>
> >> I think that I tried
> >>  $ mvn -Dcheckstyle.failOnViolation=false test
> >>
> >> And still it wouldn't run the test (because I had introduced the
> >> "System.out" forbidden construct).
> >
> > Checkstyle is configured to run in the validate phase (right at the start) 
> > [1]. The default is normally verify. This was copied from commons RNG and 
> > predates my joining the project.
> >
> > So this is why you cannot run ‘mvn test’ as it runs checkstyle:check and 
> > fails you before doing the test.
> >
> > Now fail on violation is ‘true’ perhaps we should move the check back to 
> > validate. So you cannot do a 'mvn install' with any checkstyle errors. You 
> > can also run mvn checkstyle:check to run the goal manually.
> >
> > [1] http://maven.apache.org/ref/3.6.2/maven-core/lifecycles.html 
> > <http://maven.apache.org/ref/3.6.2/maven-core/lifecycles.html>
> Short answer:
>
> *** Checkstyle ignores command-line user properties in favour of the POM 
> configuration. ***
>
> (Examples are shown below)
>
> If you want to run tests and use System.out.print to debug stuff (which is a 
> very reasonable dev action) then:
>
> 1. We move checkstyle to run after the test phase (i.e. in verify)
> 2. You have to put '// CHECKSTYLE: stop all’ or e.g. ‘// CHECKSTYLE: stop 
> RegexpCheck’ (for System.out violations) in the file you are working on
> 3. You have to use <failOnViolation>false</failOnViolation> in the POM 
> (temporarily)
> 4. You can use an *unset* property from the POM: 
> -Dcheckstyle.maxAllowedViolations=10
>
> I favour 1 or 4.
>
> Option 1 would have less typing and less to remember.

+1 :-)

Gilles

> —
>
> Examples:
>
> Hypothesis: Checkstyle is not using the properties set using -D.
>
>
> User set properties should override the POM. This is how PMD works. If you 
> make a violation for PMD and do this:
>
> mvn pmd:check -Dpmd.failOnViolation=true -X
>
> You can see:
>
> [DEBUG]   (f) failOnViolation = true
>
> And it fails.
>
>
> mvn pmd:check -Dpmd.failOnViolation=false -X
>
> You can see:
>
> [DEBUG]   (f) failOnViolation = false
>
> And it is allowed.
>
>
> Trying the same with checkstyle:
>
> mvn checkstyle:check  -Dcheckstyle.failOnViolation=true/false 
> -Dcheckstyle.failsOnError=true/false -X
>
> All variants of true/false show the config from the POM:
>
> [DEBUG]   (f) failOnViolation = true
> [DEBUG]   (f) failsOnError = false
>
>
> Other properties work as documented:
>
> mvn checkstyle:check  -Dcheckstyle.maxAllowedViolations=10
>
> This shows as:
>
> [DEBUG]   (f) maxAllowedViolations = 10
>
> And the build passes.
>
>
> If I remove:
>
>               <failOnViolation>true</failOnViolation>
>
> From the checkstyle build plugin configuration in the POM then the command 
> line user properties work, i.e.
>
> mvn checkstyle:check  -Dcheckstyle.failOnViolation=false
>
> [DEBUG]   (f) failOnViolation = false
> -> PASS
>
> mvn checkstyle:check  -Dcheckstyle.failOnViolation=true
>
> [DEBUG]   (f) failOnViolation = true
> -> FAIL
>
> mvn checkstyle:check
>
> [DEBUG]   (f) failOnViolation = true
> -> FAIL
>
> The last case uses the default value of true. It is still logged to the 
> console. The 'effective POM' does not have the <failOnViolation> property 
> anywhere so checkstyle is logging this even though it has not been configured.
>
> I tried checkstyle plugin 3.0.0 and 3.1.0 (the latest). Same result.
>
>
> As a control I put <maxAllowedViolations>10</maxAllowedViolations> in the 
> checkstyle POM configuration. Checkstyle then ignore the same command line 
> switch that worked before.
>
> *** So it seems checkstyle ignores command-line user properties in favour of 
> the POM configuration. ***
>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to