A RetroSearch Logo

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

Search Query:

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

[java] NPE in `InefficientStringBuffering` with Records · Issue #3420 · pmd/pmd · GitHub

Affects PMD Version:

6.36.0

Description:

I get an exception running PMD on Gradle 7.1.1 on JDK 16.

Exception Stacktrace:

Exception applying rule InefficientStringBuffering on file /home/boris/code/test/src/main/java/a/A.java, continuing with next rule
java.lang.NullPointerException: Cannot invoke "net.sourceforge.pmd.lang.java.ast.AccessNode.isFinal()" because "accessNodeParent" is null
        at net.sourceforge.pmd.lang.java.rule.performance.InefficientStringBufferingRule.visit(InefficientStringBufferingRule.java:86)
        at net.sourceforge.pmd.lang.java.ast.ASTAdditiveExpression.jjtAccept(ASTAdditiveExpression.java:40)
        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.internal.DefaultRulechainVisitor.visit(DefaultRulechainVisitor.java:26)
        at net.sourceforge.pmd.lang.rule.AbstractRuleChainVisitor.visitAll(AbstractRuleChainVisitor.java:99)
        at net.sourceforge.pmd.RuleChain.apply(RuleChain.java:72)
        at net.sourceforge.pmd.RuleSets.apply(RuleSets.java:160)
        at net.sourceforge.pmd.SourceCodeProcessor.processSource(SourceCodeProcessor.java:200)
        at net.sourceforge.pmd.SourceCodeProcessor.processSourceCodeWithoutCache(SourceCodeProcessor.java:113)
        at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:95)
        at net.sourceforge.pmd.SourceCodeProcessor.processSourceCode(SourceCodeProcessor.java:57)
        at net.sourceforge.pmd.processor.PmdRunnable.call(PmdRunnable.java:85)
        at net.sourceforge.pmd.processor.MonoThreadProcessor.runAnalysis(MonoThreadProcessor.java:32)
        at net.sourceforge.pmd.processor.AbstractPMDProcessor.processFiles(AbstractPMDProcessor.java:139)
        at net.sourceforge.pmd.PMD.processFiles(PMD.java:359)
        at net.sourceforge.pmd.ant.internal.PMDTaskImpl.doTask(PMDTaskImpl.java:188)
        at net.sourceforge.pmd.ant.internal.PMDTaskImpl.execute(PMDTaskImpl.java:279)
        at net.sourceforge.pmd.ant.PMDTask.execute(PMDTask.java:50)
        at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:567)
        at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
        at groovy.util.AntBuilder.performTask(AntBuilder.java:335)
        at groovy.util.AntBuilder.nodeCompleted(AntBuilder.java:280)
        at org.gradle.api.internal.project.ant.BasicAntBuilder.nodeCompleted(BasicAntBuilder.java:90)
        at jdk.internal.reflect.GeneratedMethodAccessor93.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:567)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
        at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:484)
        at org.gradle.internal.metaobject.BeanDynamicObject.tryInvokeMethod(BeanDynamicObject.java:196)
        at org.gradle.internal.metaobject.AbstractDynamicObject.invokeMethod(AbstractDynamicObject.java:163)
        at org.gradle.api.internal.project.antbuilder.AntBuilderDelegate.nodeCompleted(AntBuilderDelegate.java:124)
        at groovy.util.BuilderSupport.doInvokeMethod(BuilderSupport.java:160)
        at groovy.util.BuilderSupport.invokeMethod(BuilderSupport.java:74)
        at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:44)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:148)
        at org.gradle.api.plugins.quality.internal.PmdInvoker$_runPmd_closure1.doCall(PmdInvoker.groovy:119)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        ...

Code Sample demonstrating the issue:

build.gradle:

plugins {
	id 'java'
	id 'pmd'
}

repositories {
	mavenCentral()
}

dependencies {
	pmd 'net.sourceforge.pmd:pmd-core:6.36.0'
	pmd 'net.sourceforge.pmd:pmd-java:6.36.0'

	implementation 'com.google.guava:guava:30.1.1-jre'
}

tasks.withType(Pmd).configureEach {
	ruleSetFiles = files("${rootDir}/pmd.xml")
}

src/main/java/a/A.java:

package a;

import java.io.InputStream;

import com.google.common.io.ByteStreams;

public record A(long from, long to) {
	public InputStream a() {
		return ByteStreams.limit(null, to - from);
	}
}

pmd.xml:

<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="pmd"
         xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 https://raw.githubusercontent.com/pmd/pmd/master/pmd-core/src/main/resources/ruleset_2_0_0.xsd">
    <rule ref="category/java/performance.xml">
    </rule>
</ruleset>

Steps to reproduce:

Run gradle pmdMain on the build.gradle file above.


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