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
相关产品推荐
相关产品推荐

