如何为单个代码块禁用此错误的棉绒警告?

时间:2020-01-21 08:43:48

标签: android lint android-lint

我有一个小代码,它给出了错误的棉绒警告:

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 个答案:

答案 0 :(得分:1)

执行!TextUtils.isEmpty(valStr)而不是valStr != null。通过这种方式,棉绒将知道您已经检查了null的值。

或者,您可以像这样使用assertassertNotNull(valStr)

答案 1 :(得分:0)

禁用警告的简单代码注释为:

//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;
}