Анализатор обнаружил, что при создании массива в качестве значения для задания его длины может использоваться переменная или выражение, имеющие отрицательное значение.
Рассмотрим пример:
void process(boolean isNotCsv) {
String str = "column1,column2";
if (isNotCsv) {
str = "content";
}
var arr = new String[str.indexOf(',')];
....
}
Значение, возвращаемое методом 'indexOf', может оказаться равным -1. Это произойдёт в том случае, если в строке не окажется указанного символа. Тогда при создании массива 'arr' в качестве его длины будет выступать отрицательное значение. Это приведёт к выбросу исключения типа 'NegativeArraySizeException'.
Исправленный вариант метода 'process' может выглядеть следующим образом:
public static void process(boolean isNotCsv) {
String str = "column1,column2";
if (isNotCsv) {
str = "content";
} else {
var arr = new String[str.indexOf(',')];
....
}
....
}
Данная диагностика классифицируется как: