IntelliJ IDEA Constant conditions & exceptions和Return of 'null'中有非常有用的代码检查。当没有注释的方法@Nullable返回时,它们会显示警告,方法、字段或变量null的结果可能计算为。@Nullable@Nullablenull
不幸的是,这不适用于 lambda 表达式。nullIntelliJ IDEA 只是忽略了它们可能的返回。但我很确定有一种方法可以制作用于结构搜索检查的搜索模板,它将找到所有可能从 lambda 表达式返回的内容。null
到目前为止,我已经设法制作了一个模板,它找到了对方法和模板的引用,该模板使用接受通用参数并将其返回的@Nullable方法包装单行 lambda ,它不会更改代码语义并在 lambda 可能返回 null 时显示警告@NotNull.
这是我的模板:
可为空的方法:
@Nullable
$MethodType$ $Method$($ParameterType$ $Parameter$);
可空方法引用
$Qualifier$::$Method$
//Filters for $Method$:
reference = Nullable methods
具有未经检查结果的 Lambda:
($Parameter$) -> $Statement$
//Filters for $Statement$:
text = !warnIfNull
type = !void|Optional|int|boolean|long|char|short|byte
//Replace template for $Statement$:
WarnUtils.warnIfNull($Statement$)
警告工具:
@UtilityClass
public class WarnUtils {
public <T> @NotNull T warnIfNull(@NotNull T t) {
return t;
}
}
我不知道如何为多行 lambda 制作模板,而且我不喜欢用其他方法包装所有单行 lambda。
我认为脚本过滤器可能会有所帮助,但我不知道如何检查__context__lambda 是否可能返回 null。
慕运维8079593
相关分类