Android Studio:抑制 if 语句的 lint 警告

Android Studio: suppress lint warning for if statement

我的 Android 项目中某处有这段代码:

public boolean isLoadInProgress(boolean privateLoad, boolean publicLoad) {
    if (privateLoad && privateLoadInProgress) {
        return true;
    }
    if (publicLoad && publicLoadInProgress) {
        return true;
    }
    return false;
}

我在第二个 if 语句中收到 lint 警告:'if' 语句可以简化。那显然是因为我也可以写:

return publicLoad && publicLoadInProgress;

但是,为了便于阅读,我想保持这种方式。我知道在那个地方有一些用于关闭 lint 警告的内联注释注释,但我在 Android Lint documentation 中找不到它。你能告诉我这个 annotation/comment 是什么吗?

当然可以:

In .java files, you can suppress issues with the @SuppressLint annotations. You supply the lint issue id as the argument to the annotations.

示例:

@SuppressLint("AndroidWarningId")
public boolean isLoadInProgress(boolean privateLoad, boolean publicLoad) {
    if (privateLoad && privateLoadInProgress) {
        return true;
    }
    if (publicLoad && publicLoadInProgress) {
        return true;
    }
    return false;
}


只需将 AndroidWarningId 替换为相应的警告即可,您可以在 here

中找到它们 尽管我建议以这种方式简化它:

public boolean isLoadInProgress(boolean privateLoad, boolean publicLoad) {
    if (privateLoad && privateLoadInProgress
     || publicLoad && publicLoadInProgress) {
        return true;
    }

    return false;
}

它仍然可读并且使用较少 space(虽然有点丑,但比 supresslint 好)。

您还可以使用逗号分隔列表抑制多个问题:

@SuppressLint({"NewApi","StringFormatInvalid"})

干杯!

这不是 Android Lint 错误。您可以使用:

@SuppressWarnings("RedundantIfStatement")
public static boolean isLoadInProgress(boolean privateLoad, boolean publicLoad) {
    if (privateLoad && privateLoadInProgress) {
        return true;
    }
    if (publicLoad && publicLoadInProgress) {
        return true;
    }
    return false;
}

在突出显示的 if 处,您可以使用 alt-enter 快捷方式打开上下文菜单和 select Simplify > Suppress for method(保持范围尽可能小)。

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

//noinspection SimplifiableIfStatement

在 if 语句之上的这个应该只在那个地方关闭警告。

在示例中,这将是:

public boolean isLoadInProgress(boolean privateLoad, boolean publicLoad) {
    if (privateLoad && privateLoadInProgress) {
        return true;
    }

    //noinspection SimplifiableIfStatement
    if (publicLoad && publicLoadInProgress) {
        return true;
    }
    return false;
}

您可以在您的方法上方添加 @SuppressWarnings("SimplifiableIfStatement")