跳到主要内容

null_check_on_nullable_type_parameter

稳定
核心
可修复

不要对潜在可空的类型参数使用 null 检查。

详情

#

不要对潜在可空的类型参数使用 null 检查。

给定一个具有可空边界(例如默认边界 Object?)的泛型类型参数 T,在使用类型为 T? 的变量时,很容易引入错误的 null 检查。具体来说,常见的情况是声明 T? x; 并希望断言 x 已被设置为类型 T 的有效值。一个常见的错误是使用 x! 来进行断言。这几乎总是错误的,因为如果 T 是一个可空类型,x 可以合法地持有 null 作为类型 T 的一个值。

错误示例

dart
T run<T>(T callback()) {
  T? result;
  (() { result = callback(); })();
  return result!;
}

正确示例

dart
T run<T>(T callback()) {
  T? result;
  (() { result = callback(); })();
  return result as T;
}

启用

#

要启用 null_check_on_nullable_type_parameter 规则,请在你的 analysis_options.yaml 文件的 linter > rules 下添加 null_check_on_nullable_type_parameter

analysis_options.yaml
yaml
linter:
  rules:
    - null_check_on_nullable_type_parameter

如果你改用 YAML map 语法配置 linter 规则,请在 linter > rules 下添加 null_check_on_nullable_type_parameter: true

analysis_options.yaml
yaml
linter:
  rules:
    null_check_on_nullable_type_parameter: true