# V6111. Potentially negative value is used as the size of an array.

Анализатор обнаружил, что при создании массива в качестве значения для задания его длины может использоваться переменная или выражение, имеющие отрицательное значение.

Рассмотрим пример:

    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(',')];
            ....
        }
        ....
    }

Данная диагностика классифицируется как:

CWE-839