内容

diagnostic_describe_all_properties

在调试方法中引用所有公共属性。

此规则自 Dart 2.3 起可用。

此规则有快速修复可用。

详细信息

#

应该debug 方法实现中引用所有公共属性。

Diagnosticable 的实现者应该在 debugFillProperties(...)debugDescribeChildren(...) 方法实现中引用所有公共属性,以提高运行时的可调试性。

公共属性定义为字段和 getter,它们是

  • 不是包私有的(例如,带有 _ 前缀)
  • 不是 static 或覆盖的
  • 本身不是 WidgetWidget 集合

此外,对于 Flutter 中的属性,"debug" 前缀会被特殊对待。为了诊断的目的,属性 foo 和带有前缀的属性 debugFoo 被视为有效地描述了相同的属性,并且引用其中一个就足够了。

错误示例

dart
class Absorber extends Widget {
  bool get absorbing => _absorbing;
  bool _absorbing;
  bool get ignoringSemantics => _ignoringSemantics;
  bool _ignoringSemantics;
  @override
  void debugFillProperties(DiagnosticPropertiesBuilder properties) {
    super.debugFillProperties(properties);
    properties.add(DiagnosticsProperty<bool>('absorbing', absorbing));
    // Missing reference to ignoringSemantics
  }
}

正确示例

dart
class Absorber extends Widget {
  bool get absorbing => _absorbing;
  bool _absorbing;
  bool get ignoringSemantics => _ignoringSemantics;
  bool _ignoringSemantics;
  @override
  void debugFillProperties(DiagnosticPropertiesBuilder properties) {
    super.debugFillProperties(properties);
    properties.add(DiagnosticsProperty<bool>('absorbing', absorbing));
    properties.add(DiagnosticsProperty<bool>('ignoringSemantics', ignoringSemantics));
  }
}

用法

#

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

analysis_options.yaml
yaml
linter:
  rules:
    - diagnostic_describe_all_properties