Files
2018-08-30 10:48:05 +01:00

163 lines
3.6 KiB
Java

import java.util.*;
public class C {
public void ex1(long[][][] a1, int ix, int len) {
long[][] a2 = null;
boolean haveA2 = ix < len && (a2 = a1[ix]) != null;
long[] a3 = null;
final boolean haveA3 = haveA2 && (a3 = a2[ix]) != null; // NPE - false positive
if (haveA3) a3[0] = 0; // NPE - false positive
}
public void ex2(boolean x, boolean y) {
String s1 = x ? null : "";
String s2 = (s1 == null) ? null : "";
if (s2 == null) {
s1 = y ? null : "";
s2 = (s1 == null) ? null : "";
}
if (s2 != null)
s1.hashCode(); // NPE - false positive
}
public void ex3(List<String> ss) {
String last = null;
for (String s : new String[] { "aa", "bb" }) {
last = s;
}
last.hashCode(); // OK
last = null;
if (!ss.isEmpty()) {
for (String s : ss) {
last = s;
}
last.hashCode(); // OK
}
}
public void ex4(Iterable<String> list, int step) {
int index = 0;
List<List<String>> result = new ArrayList<>();
List<String> slice = null;
Iterator<String> iter = list.iterator();
while (iter.hasNext()) {
String str = iter.next();
if (index % step == 0) {
slice = new ArrayList<>();
result.add(slice);
}
slice.add(str); // NPE - false positive
++index;
iter.remove();
}
}
public void ex5(boolean hasArr, int[] arr) {
int arrLen = 0;
if (hasArr) {
arrLen = arr == null ? 0 : arr.length;
}
if (arrLen > 0) {
arr[0] = 0; // NPE - false positive
}
}
public final int MY_CONST_A = 1;
public final int MY_CONST_B = 2;
public final int MY_CONST_C = 3;
public void ex6(int[] vals, boolean b1, boolean b2) {
final int switchguard;
if (vals != null && b1) {
switchguard = MY_CONST_A;
} else if (vals != null && b2) {
switchguard = MY_CONST_B;
} else {
switchguard = MY_CONST_C;
}
switch (switchguard) {
case MY_CONST_A:
vals[0] = 0; // OK
break;
case MY_CONST_C:
break;
case MY_CONST_B:
vals[0] = 0; // OK
break;
default:
throw new Exception();
}
}
public void ex7(int[] arr1) {
int[] arr2 = null;
if (arr1.length > 0) {
arr2 = new int[arr1.length];
}
for (int i = 0; i < arr1.length; i++)
arr2[i] = arr1[i]; // NPE - false positive
}
public void ex8(int x, int lim) {
boolean stop = x < 1;
int i = 0;
Object obj = new Object();
while (!stop) {
int j = 0;
while (!stop && j < lim) {
int step = (j * obj.hashCode()) % 10; // NPE - false positive
if (step == 0) {
obj.hashCode();
i += 1;
stop = i >= x;
if (!stop) {
obj = new Object();
} else {
obj = null;
}
continue;
}
j += step;
}
}
}
public void ex9(boolean cond, Object obj1) {
if (cond) {
return;
}
Object obj2 = obj1;
if (obj2 != null && obj2.hashCode() % 5 > 2) {
obj2.hashCode();
cond = true;
}
if (cond) {
obj2.hashCode(); // NPE - false positive
}
}
public void ex10(int[] a) {
int n = a == null ? 0 : a.length;
for (int i = 0; i < n; i++) {
int x = a[i]; // NPE - false positive
if (x > 7)
a = new int[n];
}
}
public void ex11(Object obj, Boolean b1) {
Boolean b2 = obj == null ? Boolean.FALSE : b1;
if (b2 == null) {
obj.hashCode(); // OK
}
if (obj == null) {
b1 = Boolean.TRUE;
}
if (b1 == null) {
obj.hashCode(); // OK
}
}
}