You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Robert Scholte (JIRA)" <ji...@apache.org> on 2017/11/26 17:50:00 UTC

[jira] [Commented] (MCHECKSTYLE-345) Checkstyle crashes on NPE when for loop without braces has direct if with braces

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

Robert Scholte commented on MCHECKSTYLE-345:
--------------------------------------------

When running Maven with an additional {{-e}} you'll see the following stacktrace:
{noformat}
Caused by: java.lang.NullPointerException
    at com.puppycrawl.tools.checkstyle.checks.blocks.NeedBracesCheck.isSingleLineFor (NeedBracesCheck.java:286)
    at com.puppycrawl.tools.checkstyle.checks.blocks.NeedBracesCheck.isSingleLineStatement (NeedBracesCheck.java:203)
    at com.puppycrawl.tools.checkstyle.checks.blocks.NeedBracesCheck.isSkipStatement (NeedBracesCheck.java:177)
    at com.puppycrawl.tools.checkstyle.checks.blocks.NeedBracesCheck.visitToken (NeedBracesCheck.java:164)
    at com.puppycrawl.tools.checkstyle.TreeWalker.notifyVisit (TreeWalker.java:388)
    at com.puppycrawl.tools.checkstyle.TreeWalker.processIter (TreeWalker.java:499)
    at com.puppycrawl.tools.checkstyle.TreeWalker.walk (TreeWalker.java:330)
    at com.puppycrawl.tools.checkstyle.TreeWalker.processFiltered (TreeWalker.java:203)
    at com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck.process (AbstractFileSetCheck.java:79)
    at com.puppycrawl.tools.checkstyle.Checker.process (Checker.java:265)
    at org.apache.maven.plugin.checkstyle.exec.DefaultCheckstyleExecutor.executeCheckstyle (DefaultCheckstyleExecutor.java:252)
{noformat}

This shows that it is not the maven-plugin, but Checkstyle causes the NPE. Please visit http://checkstyle.sourceforge.net/ and file your issue there.

> Checkstyle crashes on NPE when for loop without braces has direct if with braces
> --------------------------------------------------------------------------------
>
>                 Key: MCHECKSTYLE-345
>                 URL: https://issues.apache.org/jira/browse/MCHECKSTYLE-345
>             Project: Maven Checkstyle Plugin
>          Issue Type: Bug
>    Affects Versions: 2.17
>         Environment: ubuntu 16.04, confirmed on windows 10 too
>            Reporter: Marek Sabo
>              Labels: build
>         Attachments: issue-NPE-project.zip
>
>   Original Estimate: 128h
>  Remaining Estimate: 128h
>
> Hello,
> I would like to inform you that the following code causes checkstyle to crash:
> {code:java}
> class Demo {
>     public static void main(String[] args) {
>         for (int i = 0; i < 5; i++)
>             if (1 < 2) {
>                 System.out.println("Multiple line if block");
>             }
>     }
> }
> {code}
> It happens when an `for` loop without braces contains nested `if` with curly braces inside.
> $ mvn clean install          
> {code:txt}
> [INFO] Scanning for projects...
> [INFO]                                                                         
> [INFO] ------------------------------------------------------------------------
> [INFO] Building temp 1.0-SNAPSHOT
> [INFO] ------------------------------------------------------------------------
> [INFO] 
> [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ temp ---
> [INFO] Deleting /home/mrek/temp/temp/target
> [INFO] 
> [INFO] --- maven-checkstyle-plugin:2.17:check (validate) @ temp ---
> [INFO] ------------------------------------------------------------------------
> [INFO] BUILD FAILURE
> [INFO] ------------------------------------------------------------------------
> [INFO] Total time: 1.856 s
> [INFO] Finished at: 2017-11-26T17:26:49+01:00
> [INFO] Final Memory: 12M/195M
> [INFO] ------------------------------------------------------------------------
> [ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:2.17:check (validate) on project temp: Execution validate of goal org.apache.maven.plugins:maven-checkstyle-plugin:2.17:check failed. NullPointerException -> [Help 1]
> [ERROR] 
> [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
> [ERROR] Re-run Maven using the -X switch to enable full debug logging.
> [ERROR] 
> [ERROR] For more information about the errors and possible solutions, please read the following articles:
> [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
> {code}
> Although I can agree that the code above is not nice at all, it is definitely a bug.
> I can agree that the best way to avoid it is to to not write code like this at all, but our students sometimes write code like this and then they have surely no idea why the build is failing.
> Please see the simple project in the attachment (just this Demo.java with pom and config).
> I am also adding output of those files:
> config.xml
> {code:xml}
> <?xml version="1.0"?>
> <!DOCTYPE module PUBLIC
>         "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
>         "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
> <module name="Checker">
>     <module name="TreeWalker">
>         <module name="NeedBraces">
>             <property name="allowSingleLineStatement" value="true"/>
>         </module>
>     </module>
> </module>
> <?xml version="1.0"?>
> <!DOCTYPE module PUBLIC
>         "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
>         "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
> <module name="Checker">
>     <module name="TreeWalker">
>         <module name="NeedBraces">
>             <property name="allowSingleLineStatement" value="true"/>
>         </module>
>     </module>
> </module>
> {code}
> pom.xml
> {code:xml}
> <?xml version="1.0" encoding="UTF-8"?>
> <project xmlns="http://maven.apache.org/POM/4.0.0"
>          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
>     <modelVersion>4.0.0</modelVersion>
>     <groupId>temp</groupId>
>     <artifactId>temp</artifactId>
>     <version>1.0-SNAPSHOT</version>
>     <build>
>         <plugins>
>             <plugin>
>                 <groupId>org.apache.maven.plugins</groupId>
>                 <artifactId>maven-checkstyle-plugin</artifactId>
>                 <version>2.17</version>
>                 <executions>
>                     <execution>
>                         <id>validate</id>
>                         <phase>validate</phase>
>                         <configuration>
>                             <configLocation>config.xml</configLocation>
>                         </configuration>
>                         <goals>
>                             <goal>check</goal>
>                         </goals>
>                     </execution>
>                 </executions>
>             </plugin>
>         </plugins>
>     </build>
> </project>
> {code}
> I hope it is an easy fix and could be resolved!
> Thank you,
> Marek



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)