0%

【文章翻譯】Quick fixes for analysis issues

【文章內容使用 Gemini 1.5 Pro 自動翻譯產生】

快速修復分析問題

如果您像我一樣,太多的開發時間都花在修復分析器找到的問題(診斷)上。如果您曾經希望它可以更容易,那麼我有一些好消息要告訴您。分析器產生的許多診斷都可以使用快速修復自動修復。

快速修復 是一種自動編輯,旨在修復特定診斷報告的問題。在 Dart 診斷訊息 文章中,我們查看了以下程式碼:

更正訊息建議了兩種解決問題的方法:「嘗試使存取成為條件式(使用 ‘?.’)或向目標添加 null 檢查(’!’)。」

如果您點擊突出顯示的區域(帶有紅色波浪線的區域),您會在編輯器左側看到一個燈泡圖示。如果您將滑鼠懸停在它上面,則可以點擊以打開包含可用快速修復的選單。

選單中提供了兩種建議的更正。選擇其中一個會將更改應用於您的程式碼。例如,如果您選擇第一個修復,它會將程式碼更新為以下內容:

讓我們先快速了解一下如何在 IntelliJ IDEAVisual Studio Code 中應用修復,然後再看一個更強大的快速修復示例。

IntelliJ IDEA

編輯器中的上下文動作選單如下所示:

您可以透過從編輯器中的上下文選單中選擇「顯示上下文動作」或使用其鍵盤等效項(Windows 和 Linux 上為 Alt+Enter,macOS 上為 Option+Enter)來存取相同的列表。

當您將滑鼠懸停在突出顯示的區域上時,您也可以直接從懸停文字中調用這些修復。如果修復太多,則還有一個 更多動作 項目也會打開選單:

如果這還不夠,您還可以從 Dart 分析視圖中的上下文選單中調用可用的修復:

Visual Studio Code

編輯器中的程式碼動作選單如下所示:

前兩項是快速修復,其他項是重構。您可以透過使用其鍵盤等效項(Windows 和 Linux 上為 **Control+.**,MacOS 上為 **Command+.**)或從編輯器中的懸停文字中選擇 快速修復… 來存取相同的列表:

您也可以從「問題」面板中的上下文選單中調用它們:

另一個例子

雖然上面的修復可以節省您查找更正訊息然後手動進行編輯的時間和精力,但不可否認,添加單個字元並不是一個很大的時間節約。但是,某些修復可以提高生產力。請考慮以下程式碼:

診斷告訴您「await 表達式只能在異步函數中使用。」假設您不想使用同步 I/O,則更正方法是用 async 關鍵字標記函數的主體。這樣做會導致另一個錯誤,告訴您方法的返回類型需要是 Future,因此您最終還需要更新返回類型。

幸運的是,有一個針對原始問題的快速修復:

選擇此修復不僅會添加修飾符,還會更新返回類型,讓您一步即可解決問題:

總結

並非每個問題都可以自動修復,並且並非每個可以修復的問題都有快速修復。儘管如此,下次您需要修復診斷時,絕對值得檢查一下是否有可用的快速修復。如果您沒有看到應該有快速修復的診斷的修復,請透過 建立 dart-lang/sdk 問題 告知我們。


分析問題的快速修復 最初發佈在 Dart 上的 Medium,人們在那裡透過突出顯示和回應這個故事來繼續討論。