You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dart中如何将linter规则设为错误而非警告?(override规则配置失效)

Dart父类方法重命名后子类@override未更新导致生产严重Bug

问题场景

  • 存在Weapon类,其isMassDestruction()方法默认返回false;子类NuclearBomb重写该方法,返回true。
  • 重构时,将Weapon类的isMassDestruction()方法重命名为isDestructive()。
  • 本需同步更新NuclearBomb中的对应方法,但**override_on_non_overriding_member**警告被淹没在3737条警告和1777条提示中(项目包含大量自动生成代码),未被重视。
  • NuclearBomb中的方法名最终未更新,且分析器未抛出错误,该Bug流入生产环境,引发严重故障,导致应用出现“核弹爆炸”相关问题。

重构前代码

class Weapon {
  bool isMassDestruction() {
    return false;
  }
}

class NuclearBomb extends Weapon {
  @override
  bool isMassDestruction() {
    return true;
  }
}

重构后代码

class Weapon {
  bool isDestructive() {
    return false;
  }
}

class NuclearBomb extends Weapon {
  @override
  bool isMassDestruction() {
    return true;  // 此处为未更新的旧方法名
  }
}

已尝试的无效配置

linter:
  rules:
    override_on_non_overriding_member: error

内容的提问来源于stack exchange,提问作者TSR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 19:52:07