跳到主要內容

dart fix

dart fix 命令會尋找並修正兩種問題

  • dart analyze識別出的分析問題,這些問題具有相關的自動修正 (有時稱為快速修正程式碼動作)。

  • 更新至較新版本的 Dart 和 Flutter SDK 時,過時的 API 用法。

套用修正

#

若要預覽建議的變更,請使用 --dry-run 旗標

$ dart fix --dry-run

若要套用建議的變更,請使用 --apply 旗標

$ dart fix --apply

自訂行為

#

dart fix 命令僅在診斷程式識別出「問題」時才套用修正。某些診斷程式 (例如編譯錯誤) 是隱含啟用的,而其他診斷程式 (例如 lints) 則必須在分析選項檔案中明確啟用,因為這些項目的個別偏好設定有所不同。

有時您可以透過啟用額外的 lints 來增加可以套用的修正數量。請注意,並非所有診斷程式都有相關聯的修正。

範例

#

假設您有如下所示的程式碼

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 使用最新版本的檔案。