Статический анализ ловит возможный нулевой указатель, возвращаемый из вызова метода - PullRequest
0 голосов
/ 21 мая 2018

С помощью статического анализа возможно ли оповещение по следующему коду?

public class IntegerConversion {
    static int value; // Notice this is an int and not Integer
    public static Integer strToInt(String s) {
        Integer k;
        try {
            k= Integer.parseInt(s);
        } catch (NumberFormatException e) {
            k = null;
        }
        return k;
    }

    public static void main(String[] args) {
        // possible null pointer here as strToInt can return null
        value = strToInt("abc"); 
    }
}

Я использую spotbugs (преемник findbugs), и он правильно предупреждает о коде, еслиназначение выполняется в том же методе, как показано ниже.

public class IntegerConversion {
    static int value;
    public static void strToInt(String s) {
        Integer k;
        try {
            k= Integer.parseInt(s);
        } catch (NumberFormatException e) {
            k = null;
        }
        value = k; // spot bugs alert on this line
    }

    public static void main(String[] args) {
        strToInt("abc");
    }
}

Является ли пропущенное предупреждение в первом фрагменте кода выбором проекта или техническим ограничением?Существуют ли другие инструменты статического анализа для Java, которые могут поймать эту ошибку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...