跳到主要内容

unnecessary_overrides

稳定
核心
可修复

不要覆盖方法来调用具有相同参数的超类方法。

详情

#

不要覆盖方法来调用具有相同参数的超类方法。

dart
class A extends B {
  @override
  void foo() {
    super.foo();
  }
}

dart
class A extends B {
  @override
  void foo() {
    doSomethingElse();
  }
}

在以下情况下,覆盖成员是有效的:

  • 如果类型(返回类型或参数类型)与超类成员不完全相同,
  • 如果为其中一个参数添加了 covariant 关键字,
  • 如果成员上存在文档注释,
  • 如果成员具有除 @override 之外的注解,
  • 如果成员没有用 @protected 注解,而超类成员有。

noSuchMethod 是一个特殊方法,不受此规则检查。

启用

#

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

analysis_options.yaml
yaml
linter:
  rules:
    - unnecessary_overrides

如果你使用的是 YAML 映射语法来配置 linter 规则,请在 linter > rules 下添加 unnecessary_overrides: true

analysis_options.yaml
yaml
linter:
  rules:
    unnecessary_overrides: true