跳到主要內容

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