mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
Java: Add some more nullness tests.
This commit is contained in:
@@ -515,4 +515,46 @@ public class B {
|
||||
if (c == 100) { return; }
|
||||
o.hashCode(); // NPE
|
||||
}
|
||||
|
||||
public void testFinally(int[] xs, int[] ys) {
|
||||
if (xs.length == 0) return;
|
||||
if (ys.length == 0) return;
|
||||
String s1 = null;
|
||||
String s2 = null;
|
||||
for (int x : xs) {
|
||||
try {
|
||||
if (x == 0) { break; }
|
||||
s1 = "1";
|
||||
for (int y : ys) {
|
||||
if (y == 0) { break; }
|
||||
s2 = "2";
|
||||
}
|
||||
} finally {
|
||||
}
|
||||
s1.hashCode(); // OK
|
||||
s2.hashCode(); // NPE
|
||||
}
|
||||
s1.hashCode(); // NPE - false negative, Java CFG lacks proper edge label
|
||||
}
|
||||
|
||||
public void lenCheck(int[] xs, int n, int t) {
|
||||
if (n > 42) return;
|
||||
if (maybe) {}
|
||||
if (n > 0 && (xs == null || xs.length < n)) {
|
||||
return;
|
||||
}
|
||||
if (maybe) {}
|
||||
if (n > 21) return;
|
||||
if (maybe) {}
|
||||
for (int i = 0; i < n; ++i) {
|
||||
xs[i]++; // Spurious NPE - false positive
|
||||
}
|
||||
}
|
||||
|
||||
public void rangetest(int n) {
|
||||
String s = null;
|
||||
if (n < 0 || n > 10) s = "A";
|
||||
if (n > 100) s.hashCode(); // Spurious NPE - false positive
|
||||
if (n == 42) s.hashCode(); // Spurious NPE - false positive
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,10 @@
|
||||
| B.java:465:9:465:9 | x | Variable $@ may be null at this access because of $@ assignment. | B.java:458:5:458:28 | Object x | x | B.java:470:9:470:16 | ...=... | this |
|
||||
| B.java:487:9:487:9 | x | Variable $@ may be null at this access because of $@ assignment. | B.java:476:5:476:20 | Object x | x | B.java:476:12:476:19 | x | this |
|
||||
| B.java:516:5:516:5 | o | Variable $@ may be null at this access as suggested by $@ null guard. | B.java:511:25:511:32 | o | o | B.java:512:22:512:30 | ... == ... | this |
|
||||
| B.java:535:7:535:8 | s2 | Variable $@ may be null at this access because of $@ assignment. | B.java:523:5:523:21 | String s2 | s2 | B.java:523:12:523:20 | s2 | this |
|
||||
| B.java:550:7:550:8 | xs | Variable $@ may be null at this access as suggested by $@ null guard. | B.java:540:24:540:31 | xs | xs | B.java:543:19:543:28 | ... == ... | this |
|
||||
| B.java:557:18:557:18 | s | Variable $@ may be null at this access because of $@ assignment. | B.java:555:5:555:20 | String s | s | B.java:555:12:555:19 | s | this |
|
||||
| B.java:558:18:558:18 | s | Variable $@ may be null at this access because of $@ assignment. | B.java:555:5:555:20 | String s | s | B.java:555:12:555:19 | s | this |
|
||||
| C.java:9:44:9:45 | a2 | Variable $@ may be null at this access as suggested by $@ null guard. | C.java:6:5:6:23 | long[][] a2 | a2 | C.java:7:34:7:54 | ... != ... | this |
|
||||
| C.java:9:44:9:45 | a2 | Variable $@ may be null at this access because of $@ assignment. | C.java:6:5:6:23 | long[][] a2 | a2 | C.java:6:14:6:22 | a2 | this |
|
||||
| C.java:10:17:10:18 | a3 | Variable $@ may be null at this access as suggested by $@ null guard. | C.java:8:5:8:21 | long[] a3 | a3 | C.java:9:38:9:58 | ... != ... | this |
|
||||
|
||||
Reference in New Issue
Block a user