A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/pmd/pmd/issues/4751 below:

[java] PMD crashes when analyzing CloseResource Rule · Issue #4751 · pmd/pmd · GitHub

Affects PMD Version:7.0.0-rc4

Rule: CloseResource

Please provide the rule name and a link to the rule documentation:
https://docs.pmd-code.org/latest/pmd_rules_java_errorprone.html#closeresource

Description:
I observed a crash when performing static analysis with PMD. When analyzing a directory containing SubClass.java and BaseClass.java, PMD crashes. Input classes are listed below:

Code Sample demonstrating the issue:
BaseClass.java

import java.io.InputStream;


public abstract class BaseClass
{
   final InputStream _config;
   protected BaseClass(InputStream _config) {


       this._config = _config;
   }
}

SubClass.java

import java.io.*;


public final class SubClass extends BaseClass
{
   protected SubClass(InputStream in) {
       super(in);
   }
   public void doBootstrap() throws IOException
   {
       Reader r = new InputStreamReader(_config);
   }
}

Expected outcome: I expect PMD to run successfully when analyzing a directory containing SubClass.java and BaseClass.java, similar to when they are written in the same file.

Exception Stacktrace:

org.apache.commons.lang3.exception.ContextedRuntimeException: java.lang.NullPointerException
Exception Context:
        [1:Rule applied on node=!debug only! [CompilationUnit:1:1]import java.io.*;

public final class SubClass extends BaseClass
{
    protected SubClass(InputStream in) {
        super(in);
    }
    pu(truncated)]
---------------------------------
        at net.sourceforge.pmd.util.AssertionUtil.contexted(AssertionUtil.java:232)
        at net.sourceforge.pmd.lang.rule.internal.RuleApplicator.applyOnIndex(RuleApplicator.java:77)
        at net.sourceforge.pmd.lang.rule.internal.RuleApplicator.apply(RuleApplicator.java:55)
        at net.sourceforge.pmd.RuleSets.apply(RuleSets.java:158)
        at net.sourceforge.pmd.lang.impl.PmdRunnable.processSource(PmdRunnable.java:140)
        at net.sourceforge.pmd.lang.impl.PmdRunnable.run(PmdRunnable.java:80)
        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: java.lang.NullPointerException
        at net.sourceforge.pmd.lang.java.rule.errorprone.CloseResourceRule.isWrappingResourceSpecifiedInTry(CloseResourceRule.java:289)
        at net.sourceforge.pmd.lang.java.rule.errorprone.CloseResourceRule.checkForResources(CloseResourceRule.java:174)
        at net.sourceforge.pmd.lang.java.rule.errorprone.CloseResourceRule.visit(CloseResourceRule.java:162)
        at net.sourceforge.pmd.lang.java.ast.ASTMethodDeclaration.acceptVisitor(ASTMethodDeclaration.java:58)
        at net.sourceforge.pmd.lang.java.ast.AbstractJavaNode.acceptVisitor(AbstractJavaNode.java:38)
        at net.sourceforge.pmd.lang.java.ast.JavaParserVisitor.visitNode(JavaParserVisitor.java:22)
        at net.sourceforge.pmd.lang.java.ast.JavaVisitor.visitJavaNode(JavaVisitor.java:6)
        at net.sourceforge.pmd.lang.java.ast.JavaVisitor.visit(JavaVisitor.java:25)
        at net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceBody.acceptVisitor(ASTClassOrInterfaceBody.java:26)
        at net.sourceforge.pmd.lang.java.ast.AbstractJavaNode.acceptVisitor(AbstractJavaNode.java:38)
        at net.sourceforge.pmd.lang.java.ast.JavaParserVisitor.visitNode(JavaParserVisitor.java:22)
        at net.sourceforge.pmd.lang.java.ast.JavaVisitor.visitJavaNode(JavaVisitor.java:6)
        at net.sourceforge.pmd.lang.java.ast.JavaVisitor.visit(JavaVisitor.java:11)
        at net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceDeclaration.acceptVisitor(ASTClassOrInterfaceDeclaration.java:38)
        at net.sourceforge.pmd.lang.java.ast.AbstractJavaNode.acceptVisitor(AbstractJavaNode.java:38)
        at net.sourceforge.pmd.lang.java.ast.JavaParserVisitor.visitNode(JavaParserVisitor.java:22)
        at net.sourceforge.pmd.lang.java.ast.JavaVisitor.visitJavaNode(JavaVisitor.java:6)
        at net.sourceforge.pmd.lang.java.ast.JavaVisitor.visit(JavaVisitor.java:7)
        at net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit.acceptVisitor(ASTCompilationUnit.java:83)
        at net.sourceforge.pmd.lang.java.ast.AbstractJavaNode.acceptVisitor(AbstractJavaNode.java:38)
        at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.apply(AbstractJavaRule.java:24)
        at net.sourceforge.pmd.lang.rule.internal.RuleApplicator.applyOnIndex(RuleApplicator.java:75)
        ... 9 more

Running PMD through: CLI


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