Affects PMD Version:6.50.0
Description:
Hi, I found PMD is crashed when process the code example below, however it can be compiled by javac. Hence, I think this is a crash bug. Thanks for your consideration.
Exception Stacktrace:
net.sourceforge.pmd.PMDException: Error while parsing /path/to/java
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCodeWithoutCache(SourceCodeProcessor.java:124)
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:100)
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:62)
at net.sourceforge.pmd.processor.PmdRunnable.call(PmdRunnable.java:89)
at net.sourceforge.pmd.processor.PmdRunnable.call(PmdRunnable.java:30)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: net.sourceforge.pmd.lang.java.ast.ParseException: Encountered " "@" "@ "" at line 9, column 45.
Was expecting one of:
"this" ...
<IDENTIFIER> ...
"|" ...
"..." ...
<IDENTIFIER> ...
at net.sourceforge.pmd.lang.java.ast.JavaParser.generateParseException(JavaParser.java:13870)
at net.sourceforge.pmd.lang.java.ast.JavaParser.jj_consume_token(JavaParser.java:13754)
at net.sourceforge.pmd.lang.java.ast.JavaParser.VariableDeclaratorId(JavaParser.java:1992)
at net.sourceforge.pmd.lang.java.ast.JavaParser.FormalParameter(JavaParser.java:2346)
at net.sourceforge.pmd.lang.java.ast.JavaParser.FormalParameters(JavaParser.java:2247)
at net.sourceforge.pmd.lang.java.ast.JavaParser.MethodDeclarator(JavaParser.java:2191)
at net.sourceforge.pmd.lang.java.ast.JavaParser.MethodDeclaration(JavaParser.java:2136)
at net.sourceforge.pmd.lang.java.ast.JavaParser.ClassOrInterfaceBodyDeclaration(JavaParser.java:1829)
at net.sourceforge.pmd.lang.java.ast.JavaParser.ClassOrInterfaceBody(JavaParser.java:1782)
at net.sourceforge.pmd.lang.java.ast.JavaParser.ClassOrInterfaceDeclaration(JavaParser.java:923)
at net.sourceforge.pmd.lang.java.ast.JavaParser.TypeDeclaration(JavaParser.java:825)
at net.sourceforge.pmd.lang.java.ast.JavaParser.CompilationUnit(JavaParser.java:545)
at net.sourceforge.pmd.lang.java.AbstractJavaParser.parse(AbstractJavaParser.java:62)
at net.sourceforge.pmd.lang.AbstractParser.doParse(AbstractParser.java:45)
at net.sourceforge.pmd.SourceCodeProcessor.parse(SourceCodeProcessor.java:136)
at net.sourceforge.pmd.SourceCodeProcessor.processSource(SourceCodeProcessor.java:200)
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCodeWithoutCache(SourceCodeProcessor.java:118)
... 10 more
Code Sample demonstrating the issue:
import static java.lang.annotation.ElementType.TYPE_USE; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; public class Main { public static <T> T[][] check(T @Anno[] @Anno [] arr) { if (arr == null) { throw new NullPointerException(); } return arr; } } @Retention(RetentionPolicy.CLASS) @Target({ TYPE_USE }) @interface Anno { }
Steps to reproduce:
Directly use PMD detect it, and the crash can be found.
Running PMD through: [Maven]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4