Skip to content

Commit 7adcdb5

Browse files
committed
recreate issue
1 parent d5d5a87 commit 7adcdb5

File tree

3 files changed

+71
-0
lines changed

3 files changed

+71
-0
lines changed

spotbugs-tests/src/test/java/edu/umd/cs/findbugs/detect/FindOverridableMethodCallTest.java

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
import static edu.umd.cs.findbugs.test.CountMatcher.containsExactly;
44
import static org.hamcrest.Matchers.hasItem;
55

6+
import edu.umd.cs.findbugs.BugCollection;
7+
import edu.umd.cs.findbugs.test.SpotBugsExtension;
8+
import edu.umd.cs.findbugs.test.SpotBugsRunner;
69
import org.apache.bcel.Const;
710

811
import static org.hamcrest.MatcherAssert.assertThat;
@@ -13,8 +16,41 @@
1316
import edu.umd.cs.findbugs.annotations.Confidence;
1417
import edu.umd.cs.findbugs.test.matcher.BugInstanceMatcher;
1518
import edu.umd.cs.findbugs.test.matcher.BugInstanceMatcherBuilder;
19+
import org.junit.jupiter.api.condition.DisabledOnJre;
20+
import org.junit.jupiter.api.condition.JRE;
21+
import org.junit.jupiter.api.extension.ExtendWith;
1622

23+
import java.nio.file.Paths;
24+
25+
@ExtendWith(SpotBugsExtension.class)
1726
class FindOverridableMethodCallTest extends AbstractIntegrationTest {
27+
@Test
28+
@DisabledOnJre({ JRE.JAVA_8 })
29+
void testIssue2414_java11(SpotBugsRunner spotbugs) {
30+
BugCollection bugCollection = spotbugs.performAnalysis(Paths.get(
31+
"../spotbugsTestCases/build/classes/java/java17/overridableMethodCall/Issue2414.class"));
32+
33+
final BugInstanceMatcher bugInstanceMatcher = new BugInstanceMatcherBuilder()
34+
.bugType("MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR")
35+
// .inClass("Issue2414")
36+
// .inMethod(Const.CONSTRUCTOR_NAME)
37+
// .withConfidence(Confidence.LOW)
38+
// .atLine(line)
39+
.build();
40+
41+
assertThat(bugCollection, containsExactly(1, bugInstanceMatcher));
42+
}
43+
44+
@Test
45+
void testIssue2414_java8() {
46+
performAnalysis("overridableMethodCall/Issue2414.class");
47+
48+
final BugInstanceMatcher bugInstanceMatcher = new BugInstanceMatcherBuilder()
49+
.bugType("MC_OVERRIDABLE_METHOD_CALL_IN_CONSTRUCTOR")
50+
.build();
51+
52+
assertThat(getBugCollection(), containsExactly(0, bugInstanceMatcher));
53+
}
1854

1955
@Test
2056
void testDirectCase() {
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package overridableMethodCall;
2+
3+
import java.util.Arrays;
4+
import java.util.Collections;
5+
import java.util.List;
6+
7+
public class Issue2414 {
8+
private final static List<String> aList = Collections.unmodifiableList(Arrays.asList("de", "us"));
9+
10+
public Issue2414() {
11+
getList();
12+
}
13+
14+
private void getList() {
15+
aList.stream()
16+
.forEach(test -> test.length());
17+
}
18+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package overridableMethodCall;
2+
3+
import java.util.List;
4+
import java.util.stream.Collectors;
5+
6+
public class Issue2414 {
7+
private final static List<String> aList = List.of("de", "us");
8+
9+
public Issue2414() {
10+
getList();
11+
}
12+
13+
private void getList() {
14+
aList.stream()
15+
.forEach(test -> test.length());
16+
}
17+
}

0 commit comments

Comments
 (0)