You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Leon K (JIRA)" <ji...@apache.org> on 2018/01/21 14:25:00 UTC

[jira] [Comment Edited] (MCHECKSTYLE-348) Checkstyle plugin fails on Unicode Escapes

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

Leon K edited comment on MCHECKSTYLE-348 at 1/21/18 2:24 PM:
-------------------------------------------------------------

Yes, the root cause seems to be an underlying checkstyle limitation.

However, the maven-plugin was at least masking / ignoring this limitation prior to 2.17, so something has changed on the plugin side as well, hence this bug.

Attached are the maven debug logs for the above test using maven-plugin 2.16 and 3.0.0.

In [^2.16-check.log] line 551 we get :

{{antlr.TokenStreamRecognitionException: unexpected char: '\'}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaLexer.nextToken (GeneratedJavaLexer.java:407)}}
{{     at antlr.TokenStreamHiddenTokenFilter.consume (TokenStreamHiddenTokenFilter.java:38)}}
{{     at antlr.TokenStreamHiddenTokenFilter.nextToken (TokenStreamHiddenTokenFilter.java:134)}}
{{     at antlr.TokenBuffer.fill (TokenBuffer.java:69)}}
{{     at antlr.TokenBuffer.LA (TokenBuffer.java:80)}}
{{     at antlr.LLkParser.LA (LLkParser.java:52)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.field (GeneratedJavaRecognizer.java:3217)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.classBlock (GeneratedJavaRecognizer.java:2540)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.classDefinition (GeneratedJavaRecognizer.java:633)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.typeDefinitionInternal (GeneratedJavaRecognizer.java:555)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.typeDefinition (GeneratedJavaRecognizer.java:388)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.compilationUnit (GeneratedJavaRecognizer.java:201)}}
{{     at com.puppycrawl.tools.checkstyle.TreeWalker.parse (TreeWalker.java:513)}}
{{     at com.puppycrawl.tools.checkstyle.TreeWalker.processFiltered (TreeWalker.java:203)}}
{{     at com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck.process (AbstractFileSetCheck.java:77)}}
{{     at com.puppycrawl.tools.checkstyle.Checker.process (Checker.java:263)}}
{{     at org.apache.maven.plugin.checkstyle.exec.DefaultCheckstyleExecutor.executeCheckstyle (DefaultCheckstyleExecutor.java:252)}}
{{     ...    }}

However checkstyle:checkstyle completes successfully.

For [^3.0.0-check.log] line 528 we get :

{{Caused by: antlr.TokenStreamRecognitionException: unexpected char: '\'}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaLexer.nextToken (GeneratedJavaLexer.java:405)}}
{{     at antlr.TokenStreamHiddenTokenFilter.consume (TokenStreamHiddenTokenFilter.java:38)}}
{{     at antlr.TokenStreamHiddenTokenFilter.nextToken (TokenStreamHiddenTokenFilter.java:134)}}
{{     at antlr.TokenBuffer.fill (TokenBuffer.java:69)}}
{{     at antlr.TokenBuffer.LA (TokenBuffer.java:80)}}
{{     at antlr.LLkParser.LA (LLkParser.java:52)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.field (GeneratedJavaRecognizer.java:3218)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.classBlock (GeneratedJavaRecognizer.java:2541)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.classDefinition (GeneratedJavaRecognizer.java:634)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.typeDefinitionInternal (GeneratedJavaRecognizer.java:556)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.typeDefinition (GeneratedJavaRecognizer.java:389)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.compilationUnit (GeneratedJavaRecognizer.java:202)}}
{{     at com.puppycrawl.tools.checkstyle.TreeWalker.parse (TreeWalker.java:441)}}
{{     at com.puppycrawl.tools.checkstyle.TreeWalker.processFiltered (TreeWalker.java:177)}}
{{     at com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck.process (AbstractFileSetCheck.java:78)}}
{{     at com.puppycrawl.tools.checkstyle.Checker.processFile (Checker.java:270)}}
{{     at com.puppycrawl.tools.checkstyle.Checker.processFiles (Checker.java:240)}}
{{     at com.puppycrawl.tools.checkstyle.Checker.process (Checker.java:190)}}
{{     at org.apache.maven.plugins.checkstyle.exec.DefaultCheckstyleExecutor.executeCheckstyle (DefaultCheckstyleExecutor.java:248)}}
{{    ...}}

 

But checkstyle:checkstyle fails.

If this exception was being ignored prior to 2.17, maybe that was a bug that was fixed?

 

Strangely enough, I can't get suppressions to exclude a file prior to this exception being thrown (which would be a workaround for the checkstyle/maven-plugin issues). Seems that suppressions are maybe applied post checkstyle... but if so, I'd raise that as a separate issue.

 


was (Author: leonk):
Yes, the root cause seems to be an underlying checkstyle limitation.

However, the maven-plugin was at least masking / ignoring this limitation prior to 2.17, so something has changed on the plugin side as well, hence this bug.

Attached are the maven debug logs for the above test using maven-plugin 2.16 and 3.0.0.

In [^2.16-check.log] line 551 we get :

{{antlr.TokenStreamRecognitionException: unexpected char: '\'}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaLexer.nextToken (GeneratedJavaLexer.java:407)}}
{{     at antlr.TokenStreamHiddenTokenFilter.consume (TokenStreamHiddenTokenFilter.java:38)}}
{{     at antlr.TokenStreamHiddenTokenFilter.nextToken (TokenStreamHiddenTokenFilter.java:134)}}
{{     at antlr.TokenBuffer.fill (TokenBuffer.java:69)}}
{{     at antlr.TokenBuffer.LA (TokenBuffer.java:80)}}
{{     at antlr.LLkParser.LA (LLkParser.java:52)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.field (GeneratedJavaRecognizer.java:3217)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.classBlock (GeneratedJavaRecognizer.java:2540)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.classDefinition (GeneratedJavaRecognizer.java:633)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.typeDefinitionInternal (GeneratedJavaRecognizer.java:555)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.typeDefinition (GeneratedJavaRecognizer.java:388)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.compilationUnit (GeneratedJavaRecognizer.java:201)}}
{{     at com.puppycrawl.tools.checkstyle.TreeWalker.parse (TreeWalker.java:513)}}
{{     at com.puppycrawl.tools.checkstyle.TreeWalker.processFiltered (TreeWalker.java:203)}}
{{     at com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck.process (AbstractFileSetCheck.java:77)}}
{{     at com.puppycrawl.tools.checkstyle.Checker.process (Checker.java:263)}}
{{     at org.apache.maven.plugin.checkstyle.exec.DefaultCheckstyleExecutor.executeCheckstyle (DefaultCheckstyleExecutor.java:252)}}
{{     ...}}

However checkstyle:checkstyle completes successfully.

For [^3.0.0-check.log] line 528 we get :

{{Caused by: antlr.TokenStreamRecognitionException: unexpected char: '\'}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaLexer.nextToken (GeneratedJavaLexer.java:405)}}
{{     at antlr.TokenStreamHiddenTokenFilter.consume (TokenStreamHiddenTokenFilter.java:38)}}
{{     at antlr.TokenStreamHiddenTokenFilter.nextToken (TokenStreamHiddenTokenFilter.java:134)}}
{{     at antlr.TokenBuffer.fill (TokenBuffer.java:69)}}
{{     at antlr.TokenBuffer.LA (TokenBuffer.java:80)}}
{{     at antlr.LLkParser.LA (LLkParser.java:52)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.field (GeneratedJavaRecognizer.java:3218)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.classBlock (GeneratedJavaRecognizer.java:2541)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.classDefinition (GeneratedJavaRecognizer.java:634)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.typeDefinitionInternal (GeneratedJavaRecognizer.java:556)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.typeDefinition (GeneratedJavaRecognizer.java:389)}}
{{     at com.puppycrawl.tools.checkstyle.grammars.GeneratedJavaRecognizer.compilationUnit (GeneratedJavaRecognizer.java:202)}}
{{     at com.puppycrawl.tools.checkstyle.TreeWalker.parse (TreeWalker.java:441)}}
{{     at com.puppycrawl.tools.checkstyle.TreeWalker.processFiltered (TreeWalker.java:177)}}
{{     at com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck.process (AbstractFileSetCheck.java:78)}}
{{     at com.puppycrawl.tools.checkstyle.Checker.processFile (Checker.java:270)}}
{{     at com.puppycrawl.tools.checkstyle.Checker.processFiles (Checker.java:240)}}
{{     at com.puppycrawl.tools.checkstyle.Checker.process (Checker.java:190)}}
{{     at org.apache.maven.plugins.checkstyle.exec.DefaultCheckstyleExecutor.executeCheckstyle (DefaultCheckstyleExecutor.java:248)}}

But checkstyle:checkstyle fails.

If this exception was being ignored prior to 2.17, maybe that was a bug that was fixed?

 

Strangely enough, I can't get suppressions to exclude a file prior to this exception being thrown (which would be a workaround for the checkstyle/maven-plugin issues). Seems that suppressions are maybe applied post checkstyle... but if so, I'd raise that as a separate issue.

 

> Checkstyle plugin fails on Unicode Escapes
> ------------------------------------------
>
>                 Key: MCHECKSTYLE-348
>                 URL: https://issues.apache.org/jira/browse/MCHECKSTYLE-348
>             Project: Maven Checkstyle Plugin
>          Issue Type: Bug
>          Components: checkstyle:checkstyle
>    Affects Versions: 2.17, 3.0.0
>            Reporter: Leon K
>            Priority: Major
>         Attachments: 2.16-check.log, 3.0.0-check.log
>
>
> Checkstyle plugin fails to correctly handle Unicode Escapes [https://docs.oracle.com/javase/specs/jls/se8/html/jls-3.html#jls-3.3] ).
> This issue was introduced in 2.17. It does not occur with earlier versions of maven-checkstyle-plugin.
> For this code:
> {{public class Test {}}
> {{    private String things;}}
> {{    private String \u06c5;}}
> {{}}}
> The following occurs with checkstyle:checkstyle :
> {{[ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:2.17:checkstyle (default-cli) on project checkstyle-bug: An error has occurred in Checkstyle report generation.: Failed during checkstyle configuration: TokenStreamRecognitionException occurred during the analysis of file C:\TEMP\checkstyle-bug\src\main\java\Test.java. unexpected char: '\' -> [Help 1]}}
> Similarly for 3.0.0, we get the same error:
> {{[ERROR] Failed to execute goal org.apache.maven.plugins:maven-checkstyle-plugin:3.0.0:checkstyle (default-cli) on project checkstyle-bug: An error has occurred in Checkstyle report generation.: Failed during checkstyle configuration: Exception was thrown while processing C:\TEMP\checkstyle-bug\src\main\java\Test.java: TokenStreamRecognitionException occurred during the analysis of file C:\TEMP\checkstyle-bug\src\main\java\Test.java. unexpected char: '\' -> [Help 1]}}
> For 2.16 and earlier, checkstyle:checkstyle completes without error.
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)