目次

dart fix

dart fixコマンドは、2種類のIssueを検出して修正します。

  • dart analyzeによって識別された、自動修正(クイックフィックスまたはコードアクションと呼ばれることもあります)に関連付けられた分析Issue。

  • DartおよびFlutter SDKの新しいリリースに更新する際の、古いAPIの使用。

修正を適用する

#

提案された変更をプレビューするには、--dry-runフラグを使用します。

$ dart fix --dry-run

提案された変更を適用するには、--applyフラグを使用します。

$ dart fix --apply

動作をカスタマイズする

#

dart fixコマンドは、診断によって「問題」が識別された場合にのみ修正を適用します。コンパイルエラーなどの一部の診断は暗黙的に有効になっていますが、lintなど、その他は分析オプションファイルで明示的に有効にする必要があります。これは、これらの設定はユーザーごとに異なるためです。

追加のlintを有効にすることで、適用できる修正の数を増やすことができます。ただし、すべての診断に修正が関連付けられているわけではありません。

#

このようなコードがあるとします。

dart
class Vector2d {
  final double x, y;
  Vector2d(this.x, this.y);
}

class Vector3d extends Vector2d {
  final double z;
  Vector3d(final double x, final double y, this.z) : super(x, y);
}

Dart 2.17では、スーパーイニシャライザと呼ばれる新しい言語機能が導入されました。これにより、よりコンパクトなスタイルでVector3dのコンストラクタを作成できます。

dart
class Vector3d extends Vector2d {
  final double z;
  Vector3d(super.x, super.y, this.z);
}

この機能を使用するように既存のコードをアップグレードし、後でこの機能の使用を忘れた場合にアナライザーが警告するようにdart fixを有効にするには、analysis_options.yamlファイルを次のように設定します。

yaml
linter:
  rules:
    - use_super_parameters

また、必要な言語バージョンを有効にすることも必要です。スーパーイニシャライザはDart 2.17で導入されたため、下限のSDK制約に少なくともそれ以上を指定するようにpubspec.yamlを更新します。

yaml
environment:
  sdk: ">=2.17.0 <4.0.0"

提案された変更を表示すると、次のようになります。

$ dart fix --dry-run
Computing fixes in myapp (dry run)... 9.0s

1 proposed fixes in 1 files.

lib/myapp.dart
  use_super_parameters • 1 fix

分析結果と動作のカスタマイズの詳細については、静的解析のカスタマイズを参照してください。

VS Codeのサポート

#

VS Codeでプロジェクトを開くと、Dartプラグインはdart fixで修復できるIssueがないかプロジェクトをスキャンします。修復可能なIssueが見つかった場合、VS Codeにはそれを思い出させるプロンプトが表示されます。

VS Code notification about 'dart fix'

dart pub getまたはdart pub upgradeを実行した後、パッケージの変更によってdart fixで修復できるIssueが追加された場合にも、VS Codeにこのプロンプトが表示される場合があります。

dart fixを実行する前に、すべてのファイルを保存してください。これにより、Dartは最新のファイルバージョンを使用します。