跳到主要内容

implicit_reopen

实验性
可用修复

不要隐式地重新开放类。

详情

#

通过在类上使用 interfacebasefinalsealed 修饰符,或者在 Mixin 上使用 base 修饰符,作者可以控制这些类和 Mixin 是否允许在其定义的库外部被实现 (implement)、扩展 (extend) 和/或混入 (mix in)。在某些情况下,作者可能会不小心放松这些控制,从而隐式地“重新开放”类。(Mixin 不会发生类似的重新开放情况。)

此 Linter 规则旨在防止意外重新开放类,要求使用 package:meta 中的 @reopen 注解明确标记此类情况。

不好的示例

dart
interface class I {}

class C extends I {} // LINT

好的示例

dart
interface class I {}

final class C extends I {}
dart
import 'package:meta/meta.dart';

interface class I {}

@reopen
class C extends I {}

启用

#

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

analysis_options.yaml
yaml
linter:
  rules:
    - implicit_reopen

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

analysis_options.yaml
yaml
linter:
  rules:
    implicit_reopen: true