-
-
Notifications
You must be signed in to change notification settings - Fork 4.1k
UnnecessarySemicolonAfterTypeMemberDeclaration throws Exception on on Local Class #13411
Copy link
Copy link
Closed
Closed
Copy link
Description
I have read check documentation: https://checkstyle.sourceforge.io/checks/coding/unnecessarysemicolonaftertypememberdeclaration.html#UnnecessarySemicolonAfterTypeMemberDeclaration
I have downloaded the latest checkstyle from: https://checkstyle.org/cmdline.html#Download_and_Run
I have executed the cli and showed it below, as cli describes the problem better than 1,000 words
➜ src javac SwitchScope.java
➜ src cat SwitchScope.java
public class SwitchScope {
public static void main(String[] args) {
switch (args.length) {
case 0:
final int k = 12;
class Local {
int j = k;
}
case 1:
}
}
}
➜ src cat config.xml
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
"https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="Checker">
<property name="severity" value="error"/>
<property name="fileExtensions" value="java, properties, xml"/>
<module name="TreeWalker">
<module name="UnnecessarySemicolonAfterTypeMemberDeclaration"/>
</module>
</module>
➜ src java -jar checkstyle-10.12.1-all.jar -c config.xml SwitchScope.java
Starting audit...
com.puppycrawl.tools.checkstyle.api.CheckstyleException: Exception was thrown while processing SwitchScope.java
at com.puppycrawl.tools.checkstyle.Checker.processFiles(Checker.java:306)
at com.puppycrawl.tools.checkstyle.Checker.process(Checker.java:223)
at com.puppycrawl.tools.checkstyle.Main.runCheckstyle(Main.java:415)
at com.puppycrawl.tools.checkstyle.Main.runCli(Main.java:338)
at com.puppycrawl.tools.checkstyle.Main.execute(Main.java:195)
at com.puppycrawl.tools.checkstyle.Main.main(Main.java:130)
Caused by: java.lang.NullPointerException: Cannot invoke "com.puppycrawl.tools.checkstyle.api.DetailAST.getType()" because "ast" is null
at com.puppycrawl.tools.checkstyle.checks.coding.UnnecessarySemicolonAfterTypeMemberDeclarationCheck.isSemicolon(UnnecessarySemicolonAfterTypeMemberDeclarationCheck.java:236)
at com.puppycrawl.tools.checkstyle.checks.coding.UnnecessarySemicolonAfterTypeMemberDeclarationCheck.checkTypeDefinition(UnnecessarySemicolonAfterTypeMemberDeclarationCheck.java:196)
at com.puppycrawl.tools.checkstyle.checks.coding.UnnecessarySemicolonAfterTypeMemberDeclarationCheck.visitToken(UnnecessarySemicolonAfterTypeMemberDeclarationCheck.java:165)
at com.puppycrawl.tools.checkstyle.TreeWalker.notifyVisit(TreeWalker.java:335)
at com.puppycrawl.tools.checkstyle.TreeWalker.processIter(TreeWalker.java:406)
at com.puppycrawl.tools.checkstyle.TreeWalker.walk(TreeWalker.java:273)
at com.puppycrawl.tools.checkstyle.TreeWalker.processFiltered(TreeWalker.java:154)
at com.puppycrawl.tools.checkstyle.api.AbstractFileSetCheck.process(AbstractFileSetCheck.java:98)
at com.puppycrawl.tools.checkstyle.Checker.processFile(Checker.java:334)
at com.puppycrawl.tools.checkstyle.Checker.processFiles(Checker.java:293)
... 5 more
Checkstyle ends with 1 errors.
Describe what you expect in detail.
I would expect this check not to throw a Null Pointer Exception on a local class declaration within a switch statement, even if this code is unusual.
Reactions are currently unavailable