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

16

我在我的Android项目中的某处有以下代码:

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

在第二个if语句中,我收到了一个提示:'if'语句可以简化。这显然是因为我也可以这样写:

return publicLoad && publicLoadInProgress;

不过,为了可读性,我想保持它的原样。我知道在那个地方有一些内联注释可以关闭lint警告,但是我在Android Lint文档中找不到它。你能告诉我这个注释/评论是什么吗?


此链接包含所有的 Lint ID:http://tools.android.com/tips/lint-checks。 - Nishant
你确定这是 lint 吗?看起来像是 Android Studio/IntelliJ 会提示的东西。 - ataulm
在我看来,移除多余的if语句可以提高可读性,所以我会选择return (privateLoad && privateLoadInProgress || publicLoad && publicLoadInProgress); - Ivo
4个回答

26

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

//noinspection SimplifiableIfStatement

在if语句的顶部加上这个代码可以仅在此处关闭警告。

在这个例子中,应该是:

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

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

11
您可以在方法上方添加@SuppressWarnings("SimplifiableIfStatement")来消除警告。

10
这不是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快捷键打开上下文菜单并选择Simplify > Suppress for method(尽可能保持范围小)。

1
尽管被接受的答案 //noinspection SimplifiableIfStatement 似乎不能解决问题中描述的 Lint 警告,或者至少在我的情况下没有解决,但它确实表明你可以通过将抑制代码/注释直接放在具有 Lint 警告的特定 IF 语句之上来进一步缩小抑制范围,就像这样://noinspection RedundantIfStatement - Ben Bloodworth

0

当然:

在 .java 文件中,您可以使用 @SuppressLint 注释来抑制问题。您需要将 lint 问题 ID 作为注释的参数。

例如:

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


Just replace the AndroidWarningId with the corresponding warning, you can find those in here

Although I would suggest simplifying it this way:

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

    return false;
}

Its still readable and uses less space (kind of ugly though, but better than a supresslint).

You can also suppress more than one issue using a comma separated list:

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

Cheers!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接