跳到主要內容

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 引入了一個稱為 super initializers 的新語言特性,它允許你使用更緊湊的風格編寫 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

我們還需要確保程式碼啟用了所需的語言版本。Super initializers 在 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 使用你檔案的最新版本。