A RetroSearch Logo

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

Search Query:

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

[java] TypeTestUtil fails with NPE for anonymous class · Issue #2756 · pmd/pmd · GitHub

Affects PMD Version:

6.27.0

Description:

NPE in TypeTestUtil::isA("any", anonymousTypeNode)

Problematic code is https://github.com/pmd/pmd/blob/master/pmd-java/src/main/java/net/sourceforge/pmd/lang/java/types/TypeTestUtil.java#L178

Because an anonymous class does not have a canonical name, this method fails with NPE.

Exception Stacktrace:

java.lang.NullPointerException
    at net.sourceforge.pmd.lang.java.types.TypeTestUtil.isExactlyA (TypeTestUtil.java:178)
    at net.sourceforge.pmd.lang.java.rule.errorprone.CloseResourceRule.isAllowedResourceType (CloseResourceRule.java:291)
    at net.sourceforge.pmd.lang.java.rule.errorprone.CloseResourceRule.isNotAllowedResourceType (CloseResourceRule.java:282)
    at net.sourceforge.pmd.lang.java.rule.errorprone.CloseResourceRule.shouldVarOfTypeBeClosedInMethod (CloseResourceRule.java:277)
    at net.sourceforge.pmd.lang.java.rule.errorprone.CloseResourceRule.checkForResources (CloseResourceRule.java:166)
    at net.sourceforge.pmd.lang.java.rule.errorprone.CloseResourceRule.visit (CloseResourceRule.java:153)
    at net.sourceforge.pmd.lang.java.ast.ASTMethodDeclaration.jjtAccept (ASTMethodDeclaration.java:37)
    at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit (AbstractJavaRule.java:220)
    at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit (AbstractJavaRule.java:267)
    at net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceBodyDeclaration.jjtAccept (ASTClassOrInterfaceBodyDeclaration.java:44)
    at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit (AbstractJavaRule.java:220)
    at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit (AbstractJavaRule.java:262)
    at net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceBody.jjtAccept (ASTClassOrInterfaceBody.java:35)
    at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit (AbstractJavaRule.java:220)
    at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit (AbstractJavaRule.java:232)
    at net.sourceforge.pmd.lang.java.ast.ASTClassOrInterfaceDeclaration.jjtAccept (ASTClassOrInterfaceDeclaration.java:56)
    at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit (AbstractJavaRule.java:220)
    at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit (AbstractJavaRule.java:417)
    at net.sourceforge.pmd.lang.java.ast.ASTTypeDeclaration.jjtAccept (ASTTypeDeclaration.java:39)
    at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit (AbstractJavaRule.java:220)
    at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visit (AbstractJavaRule.java:392)
    at net.sourceforge.pmd.lang.java.ast.ASTCompilationUnit.jjtAccept (ASTCompilationUnit.java:44)
    at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.visitAll (AbstractJavaRule.java:163)
    at net.sourceforge.pmd.lang.java.rule.AbstractJavaRule.apply (AbstractJavaRule.java:157)
    at net.sourceforge.pmd.lang.rule.AbstractDelegateRule.apply (AbstractDelegateRule.java:336)
    at net.sourceforge.pmd.RuleSet.apply (RuleSet.java:575)
    at net.sourceforge.pmd.RuleSets.apply (RuleSets.java:148)
    at net.sourceforge.pmd.SourceCodeProcessor.processSource (SourceCodeProcessor.java:194)
    at net.sourceforge.pmd.SourceCodeProcessor.processSourceCodeWithoutCache (SourceCodeProcessor.java:107)
    at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode (SourceCodeProcessor.java:89)
    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)

Code Sample demonstrating the issue:

    @Test
    public void testBundleReloadUrlNotNull() throws IOException {
        final AtomicBoolean closed = new AtomicBoolean();

        final InputStream inputStream = new InputStream() {
            @Override
            public int read() {
                return -1;
            }

            @Override
            public void close() {
                closed.set(true);
            }
        };
        final URLConnection urlConnection = new URLConnection(null) {
            @Override
            public void connect() {
                // no code
            }

            @Override
            public InputStream getInputStream() {
                return inputStream;
            }
        };
        final URL url = new URL("test", null, 0, "", new URLStreamHandler() {
            @Override
            protected URLConnection openConnection(URL u) {
                return urlConnection;
            }
        });

        final LocalizedMessage.Utf8Control control = new LocalizedMessage.Utf8Control();
        final ResourceBundle bundle = control.newBundle(
                "com.puppycrawl.tools.checkstyle.checks.coding.messages", Locale.ENGLISH,
                "java.class", new TestUrlsClassLoader(url), true);

        assertNotNull(bundle, "Bundle should not be null when stream is not null");
        assertFalse(urlConnection.getUseCaches(), "connection should not be using caches");
        assertTrue(closed.get(), "connection should be closed");
    }

Steps to reproduce:

Failed build: https://travis-ci.org/github/checkstyle/checkstyle/jobs/722974486
Full source of LocalizedMessageTest.java

mvn -e clean test-compile pmd:check spotbugs:check on latest checkstyle master


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