内容

dart fix

dart fix 命令查找并修复两种类型的错误

  • dart analyze 识别出的分析错误,这些错误与自动修复相关联(有时称为快速修复代码操作)。

  • 更新到 Dart 和 Flutter SDK 的更新版本时,过时的 API 用法。

应用修复

#

要预览建议的更改,请使用 --dry-run 标志

$ dart fix --dry-run

要应用建议的更改,请使用 --apply 标志

$ dart fix --apply

自定义行为

#

dart fix 命令仅在通过诊断识别出“问题”时才应用修复。某些诊断(例如编译错误)是隐式启用的,而另一些诊断(例如 linter)必须在 分析选项文件 中显式启用,因为对这些诊断的个人偏好各不相同。

有时可以通过启用其他 linter 来增加可以应用的修复的数量。请注意,并非所有诊断都与修复相关联。

示例

#

假设您有以下代码

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 中引入的,因此请更新 pubspec.yaml 以在较低 SDK 约束中至少包含该版本

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 可以修复的错误。如果它找到了需要修复的错误,VS Code 会显示提示以提醒您。

VS Code notification about 'dart fix'

在运行 dart pub getdart pub upgrade 之后,如果包更改添加了 dart fix 可以修复的错误,VS Code 也可能会显示此提示。

在运行 dart fix 之前,请保存所有文件。这将确保 Dart 使用文件的最新版本。