跳到主要內容

implicit_reopen

實驗性
可用的修正

不要隱式地重新開啟類別。

詳細資訊

#

在類別上使用 interfacebasefinalsealed 修飾詞,或在 mixin 上使用 base 修飾詞,作者可以控制類別和 mixin 是否允許從定義它們的函式庫外部實作、擴充和/或混入。在某些情況下,作者可能會不小心放寬這些控制,並隱式地「重新開啟」類別。(mixin 不會發生類似的重新開啟。)

此 lint 規則可防止意外地重新開啟類別,方法是要求使用 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