Как отключить это неверное предупреждение lint для одного блока кода? - PullRequest
0 голосов
/ 21 января 2020

У меня есть небольшой код, который выдает неверное предупреждение о ворсинках:

int myfunc(@Nullable valStr) {
    int val = -1;
    if (!TextUtils.isEmpty(valStr)) {
        try {
            val = valStr.startsWith("1-"); //<== lint warning here : NullPointerException
        } catch (Exception e) {
        }
    }

    return val;
}

Этот код выдает предупреждение о ворсинках, в котором говорится, что valStr может быть null, что невозможно, поскольку я проверил valStr с помощью TextUtils.isEmpty(). Как я могу отключить это предупреждение для оператора блока if? Я не хочу отключать его для всей функции с помощью @SuppressLint.

Ответы [ 2 ]

1 голос
/ 21 января 2020

Вместо !TextUtils.isEmpty(valStr) до valStr != null. Таким образом, lint будет знать, что вы проверили значение для null.

В качестве альтернативы вы можете использовать assert так: assertNotNull(valStr)

0 голосов
/ 21 января 2020

Комментарий к простому коду для отключения предупреждения:

//noinspection SimplifiableIfStatement

В верхней части оператора if должно отключаться предупреждение только в этом месте.

В этом примере это будет:

int myfunc(@Nullable valStr) {
    int val = -1;

    //noinspection SimplifiableIfStatement
    if (!TextUtils.isEmpty(valStr)) {
        try {
            val = valStr.startsWith("1-"); //<== lint warning here : NullPointerException
        } catch (Exception e) {
        }
    }

    return val;
}
...