Skip to content

Commit 9d70358

Browse files
authored
Merge pull request #2640 from aschackmull/java/nullness-fp-tests
Java: Document two FPs with unit tests.
2 parents 9a93953 + 2dca188 commit 9d70358

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed

java/ql/test/query-tests/Nullness/C.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,4 +168,44 @@ public void ex12() {
168168
finalObj.hashCode(); // OK
169169
}
170170
}
171+
172+
private void verifyBool(boolean b) {
173+
if (!b) {
174+
throw new Exception();
175+
}
176+
}
177+
178+
public void ex13(int[] a) {
179+
int i = 0;
180+
boolean b = false;
181+
Object obj = null;
182+
while (a[++i] != 0) {
183+
if (a[i] == 1) {
184+
obj = new Object();
185+
b = true;
186+
} else if (a[i] == 2) {
187+
verifyBool(b);
188+
obj.hashCode(); // NPE - false positive
189+
}
190+
}
191+
}
192+
193+
private void verifyNotNull(Object obj) {
194+
if (obj == null) {
195+
throw new Exception();
196+
}
197+
}
198+
199+
public void ex14(int[] a) {
200+
int i = 0;
201+
Object obj = null;
202+
while (a[++i] != 0) {
203+
if (a[i] == 1) {
204+
obj = new Object();
205+
} else if (a[i] == 2) {
206+
verifyNotNull(obj);
207+
obj.hashCode(); // NPE - false positive
208+
}
209+
}
210+
}
171211
}

java/ql/test/query-tests/Nullness/NullMaybe.expected

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,7 @@
2828
| C.java:110:25:110:27 | obj | Variable $@ may be null here because of $@ assignment. | C.java:106:5:106:30 | Object obj | obj | C.java:118:13:118:22 | ...=... | this |
2929
| C.java:137:7:137:10 | obj2 | Variable $@ may be null here as suggested by $@ null guard. | C.java:131:5:131:23 | Object obj2 | obj2 | C.java:132:9:132:20 | ... != ... | this |
3030
| C.java:144:15:144:15 | a | Variable $@ may be null here as suggested by $@ null guard. | C.java:141:20:141:26 | a | a | C.java:142:13:142:21 | ... == ... | this |
31+
| C.java:188:9:188:11 | obj | Variable $@ may be null here because of $@ assignment. | C.java:181:5:181:22 | Object obj | obj | C.java:181:12:181:21 | obj | this |
32+
| C.java:207:9:207:11 | obj | Variable $@ may be null here because of $@ assignment. | C.java:201:5:201:22 | Object obj | obj | C.java:201:12:201:21 | obj | this |
3133
| F.java:11:5:11:7 | obj | Variable $@ may be null here as suggested by $@ null guard. | F.java:8:18:8:27 | obj | obj | F.java:9:9:9:19 | ... == ... | this |
3234
| F.java:17:5:17:7 | obj | Variable $@ may be null here as suggested by $@ null guard. | F.java:14:18:14:27 | obj | obj | F.java:15:9:15:19 | ... == ... | this |

0 commit comments

Comments
 (0)