メインコンテンツにスキップ

implicit_reopen

実験的
修正が利用可能です

クラスを暗黙的に再オープンしないでください。

詳細

#

クラスにinterfacebasefinal、またはsealed修飾子を付けたり、ミックスインにbase修飾子を付けたりすることで、作成者は定義されているライブラリの外部からのクラスやミックスインの実装、拡張、および/またはミックスインを許可するかどうかを制御できます。場合によっては、作成者がこれらの制御を意図せずに緩和し、クラスを暗黙的に「再オープン」できることがあります。(ミックスインでは同様の再オープンは発生しません。)

このリンターは、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マップ構文を使用してリンタールールを構成している場合は、linter > rulesの下にimplicit_reopen: trueを追加してください。

analysis_options.yaml
yaml
linter:
  rules:
    implicit_reopen: true