Анализатор обнаружил, что при создании массива в качестве значения для задания его длины может использоваться переменная или выражение, имеющие отрицательное значение.
Рассмотрим пример:
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(',')]; .... } .... }
Данная диагностика классифицируется как: