首页 > 解决方案 > 'if' 语句中的 IntelliJ Java 检查非原始布尔值

问题描述

我想在我的 Java 代码中得到警告,其中“if”语句基于非原始布尔条件。

例如:

void anyMethod() {
   if(getCondition()) {
   ...
   }
}

Boolean getCondition() {
...
}

其中getCondition()可能返回 TRUE、FALSE 或 null

这种“if”控制可能会产生 NullPointerException,应该避免。

在 IntelliJ 中,我尝试创建自定义检查模式,但我的不起作用。如果我在 getCondition() 上明确放置 @Nullable 注释,则默认检查工作,但此解决方案仍然依赖于可能未严格完成的手动任务(将 @Nullable 放置在方法返回布尔值的任何地方)并且不涵盖代码条件是一个局部布尔变量。

如何编写 IntelliJ 检查模式来跟踪这种情况?

非常感谢。

标签: javaintellij-idea

解决方案


您可以为此创建自定义检查,如下所示:

首先转到 IntelliJ 设置页面中的检查选项卡。然后单击加号按钮,然后单击“添加搜索模板”

在此处输入图像描述

然后使用模式:

if ($expression$) {$statement$;}

将过滤器“type=java.lang.Boolean”添加到$expression$模板,将“count=[0,inf]”添加到$statement$模板。添加过滤器时,请记住将光标放在模板上。

最终结果应如下所示:

在此处输入图像描述

为检查命名、工具提示、描述和抑制 ID,您就完成了。


推荐阅读