Skip to content

Commit 9fe8c5e

Browse files
committed
[java] UselessPureMethodCall: add IntStream/LongStream/DoubleStream to known-pure methods - fix pmd#6517
Add primitive stream types (IntStream, LongStream, DoubleStream) to KNOWN_PURE_METHODS so that any discarded non-void method call on these types is reported, not just peek. Previously only java.util.stream.Stream was listed; the three primitive stream variants were missing, causing a false negative for peek and all other non-void methods on those types.
1 parent 4339980 commit 9fe8c5e

2 files changed

Lines changed: 30 additions & 0 deletions

File tree

pmd-java/src/main/java/net/sourceforge/pmd/lang/java/rule/internal/JavaRuleUtil.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ public final class JavaRuleUtil {
6060
// actually not all of them, probs only stream of some type
6161
// arg which doesn't implement Closeable...
6262
"java.util.stream.Stream#_(_*)",
63+
"java.util.stream.IntStream#_(_*)",
64+
"java.util.stream.LongStream#_(_*)",
65+
"java.util.stream.DoubleStream#_(_*)",
6366
"java.util.Collection#contains(_)",
6467
"java.util.Collection#size()",
6568
"java.util.List#get(int)",

pmd-java/src/test/resources/net/sourceforge/pmd/lang/java/rule/errorprone/xml/UselessPureMethodCall.xml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -455,4 +455,31 @@ class Tester {
455455
}
456456
]]></code>
457457
</test-code>
458+
459+
<test-code>
460+
<description>[java] UselessPureMethodCall false negative for primitive stream peek #6517</description>
461+
<expected-problems>4</expected-problems>
462+
<expected-linenumbers>8,11,14,17</expected-linenumbers>
463+
<code><![CDATA[
464+
import java.util.stream.Stream;
465+
import java.util.stream.IntStream;
466+
import java.util.stream.LongStream;
467+
import java.util.stream.DoubleStream;
468+
469+
public class a {
470+
public void tp() {
471+
Stream.of("A", "B").peek(System.out::println);
472+
}
473+
public void fn1() {
474+
IntStream.of(1, 2).peek(System.out::println);
475+
}
476+
public void fn2() {
477+
LongStream.of(1, 2).peek(System.out::println);
478+
}
479+
public void fn3() {
480+
DoubleStream.of(1.0, 2.0).peek(System.out::println);
481+
}
482+
}
483+
]]></code>
484+
</test-code>
458485
</test-data>

0 commit comments

Comments
 (0)