Affects PMD Version:
6.8.0
Rule:
rulesets/java/quickstart.xml
Description:
If a sub-class / -type is referenced by using the parent class followed by a dot and then the sub-class and the sub-class is annotated it results into a parser error.
Code Sample demonstrating the issue:
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
public class Demo {
@Target(ElementType.TYPE_USE)
public @interface AnnotationDemo {
}
public class ClassParent {
public class ClassChild {
}
}
public ClassParent.@AnnotationDemo ClassChild foo() {
return null;
}
}
Running PMD through: CLI
Command line:
~/bin/pkgs/pmd/pmd-bin-6.8.0/bin/run.sh pmd -d Demo.java -f xml -l java -R rulesets/java/quickstart.xml
Result:
Oct 04, 2018 1:55:35 PM net.sourceforge.pmd.PMD processFiles
WARNING: This analysis could be faster, please consider using Incremental Analysis: https://pmd.github.io/pmd-6.8.0/pmd_userdocs_incremental_analysis.html
<?xml version="1.0" encoding="UTF-8"?>
<pmd xmlns="http://pmd.sourceforge.net/report/2.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pmd.sourceforge.net/report/2.0.0 http://pmd.sourceforge.net/report_2_0_0.xsd"
version="6.8.0" timestamp="2018-10-04T13:55:35.310">
<error filename="/home/rathgeb/tmp/test/Demo.java" msg="Error while parsing /home/rathgeb/tmp/test/Demo.java">
<![CDATA[net.sourceforge.pmd.PMDException: Error while parsing /home/rathgeb/tmp/test/Demo.java
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:99)
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:51)
at net.sourceforge.pmd.processor.PmdRunnable.call(PmdRunnable.java:78)
at net.sourceforge.pmd.processor.PmdRunnable.call(PmdRunnable.java:24)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: net.sourceforge.pmd.lang.java.ast.ParseException: Encountered " "." ". "" at line 17, column 23.
Was expecting one of:
<IDENTIFIER> ...
"@" ...
"@" ...
"@" ...
"@" ...
<IDENTIFIER> ...
<IDENTIFIER> ...
<IDENTIFIER> ...
<IDENTIFIER> ...
<IDENTIFIER> ...
<IDENTIFIER> ...
<IDENTIFIER> ...
<IDENTIFIER> ...
<IDENTIFIER> ...
<IDENTIFIER> ...
<IDENTIFIER> ...
<IDENTIFIER> ...
<IDENTIFIER> ...
<IDENTIFIER> ...
<IDENTIFIER> ...
at net.sourceforge.pmd.lang.java.ast.JavaParser.generateParseException(JavaParser.java:11936)
at net.sourceforge.pmd.lang.java.ast.JavaParser.jj_consume_token(JavaParser.java:11820)
at net.sourceforge.pmd.lang.java.ast.JavaParser.MethodDeclarator(JavaParser.java:1654)
at net.sourceforge.pmd.lang.java.ast.JavaParser.MethodDeclaration(JavaParser.java:1603)
at net.sourceforge.pmd.lang.java.ast.JavaParser.ClassOrInterfaceBodyDeclaration(JavaParser.java:1239)
at net.sourceforge.pmd.lang.java.ast.JavaParser.ClassOrInterfaceBody(JavaParser.java:1194)
at net.sourceforge.pmd.lang.java.ast.JavaParser.ClassOrInterfaceDeclaration(JavaParser.java:650)
at net.sourceforge.pmd.lang.java.ast.JavaParser.TypeDeclaration(JavaParser.java:539)
at net.sourceforge.pmd.lang.java.ast.JavaParser.CompilationUnit(JavaParser.java:276)
at net.sourceforge.pmd.lang.java.AbstractJavaParser.parse(AbstractJavaParser.java:59)
at net.sourceforge.pmd.SourceCodeProcessor.parse(SourceCodeProcessor.java:111)
at net.sourceforge.pmd.SourceCodeProcessor.processSource(SourceCodeProcessor.java:175)
at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:96)
... 9 more
]]>
</error>
</pmd>
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