參加你附近的 ,瞭解 VS Code 中的 AI 輔助開發。

在 Visual Studio Code 中使用 Swift

Swift 是一門通用程式語言,對新手友好,對專家強大。它快速、現代、安全,編寫起來充滿樂趣。本主題詳細介紹如何在 Visual Studio Code 中,透過 swiftlang.swift-vscode 擴充套件來設定和使用 Swift。

Swift 擴充套件包含:

  • 語法高亮和程式碼補全
  • 程式碼導航功能,如“轉到定義”和“查詢所有引用”
  • 程式碼重構和快速修復
  • 支援 Swift 包管理器的包管理和任務
  • 豐富的除錯支援
  • 使用 XCTest 或 Swift Testing 框架進行測試

Swift 擴充套件旨在支援以下專案:

  • Swift 包管理器專案(例如,使用 Package.swift
  • 可以生成 compile_commands.json 的專案(例如,使用 CMake)

安裝擴充套件

  1. 首先,安裝 Swift。如果你的系統上尚未安裝 Swift,請參閱 Swift.org 上的入門指南
  2. 下載並安裝 Visual Studio Code
  3. VS Code Marketplace 或直接在 VS Code 擴充套件面板中安裝 Swift 擴充套件。

Installing the swift-vscode extension from the extensions pane

建立一個新的 Swift 專案

要建立一個新的 Swift 專案,你可以使用 Swift 擴充套件中的 Swift: Create New Project... (Swift: 建立新專案...) 命令來引導你完成整個過程。你可以透過開啟命令面板並按照以下說明找到此命令。

  • 對於 macOS: CMD+Shift+P
  • 其他平臺: Ctrl+Shift+P

Create New Project command showing available project templates

  1. 從模板列表中選擇你想要建立的專案型別。
  2. 選擇專案將要儲存的目錄。
  3. 為你的專案命名。
  4. 開啟新建立的專案。系統將提示你在當前視窗中開啟專案、在新視窗中開啟,或將其新增到當前工作區。預設行為可以透過使用 swift.openAfterCreateNewProject 設定進行配置。

語言特性

Swift 擴充套件使用 SourceKit LSP 來支援語言特性。SourceKit LSP 在編輯器中提供以下功能。使用這些連結檢視每個主題的 VS Code 文件:

SourceKit LSP 還提供程式碼操作來自動化常見任務。在 VS Code 中,程式碼操作以編輯器邊欄附近的一個燈泡圖標出現(請參見下面的截圖示例)。點選燈泡將顯示可用的操作,其中可能包括:

  • 向你的 Package.swift 新增目標
  • 將 JSON 轉換為協議
  • 為你的函式新增文件

Package swift actions

重要

在 Swift 6.1 之前,你必須在專案上執行一次 swift build 命令(無論是在命令列還是使用 VS Code 中的任務),然後才能使用語言特性。這會填充 SourceKit-LSP 中的索引。

Swift 任務

Visual Studio Code 提供任務作為執行外部工具的方式。請參閱透過任務與外部工具整合文件以瞭解更多資訊。

Swift 擴充套件提供了一些內建任務,你可以用它們透過 Swift 包管理器進行構建。你還可以透過在專案根資料夾中建立一個 tasks.json 檔案來配置自定義任務。例如,這個 tasks.json 會以釋出模式構建你的 Swift 目標:

{
  "version": "2.0.0",
  "tasks": [
    {
      "type": "swift",
      "label": "Swift Build All - Release",
      "detail": "swift build --build-tests",
      "args": ["build", "--build-tests", "-c", "release"],
      "env": {},
      "cwd": "${workspaceFolder}",
      "group": "build"
    }
  ]
}

上述任務被配置在 build 組中。這意味著它將出現在 run build tasks (執行構建任務) 選單中,該選單可以在 macOS 上使用 CMD+Shift+B 或在其他平臺上使用 Ctrl+Shift+B 開啟。

Run build task menu

構建過程中出現的任何錯誤都會作為診斷資訊顯示在編輯器中,與 SourceKit-LSP 提供的診斷資訊並列。執行另一個構建任務會清除上一個構建任務的診斷資訊。

除錯

Visual Studio Code 提供了豐富的除錯體驗。請參閱除錯文件以獲取更多資訊。

Swift 擴充套件依賴 LLDB DAP 擴充套件來啟用除錯支援。

預設情況下,該擴充套件會為你的 Swift 包中的每個可執行目標建立一個啟動配置。你可以透過在專案根資料夾中新增一個 launch.json 檔案來自行配置這些。例如,這個 launch.json 會使用自定義引數啟動一個 Swift 可執行檔案:

{
  "configurations": [
    {
      "type": "swift",
      "name": "Debug swift-executable",
      "request": "launch",
      "args": ["--hello", "world"],
      "cwd": "${workspaceFolder}",
      "program": "${workspaceFolder}/.build/debug/swift-executable",
      "preLaunchTask": "swift: Build Debug swift-executable"
    }
  ]
}

你可以透過 VS Code 中的“除錯”檢視來啟動除錯會話。

  1. 選擇你希望除錯的啟動配置。
  2. 點選綠色的播放按鈕來啟動除錯會話。

可執行檔案將被啟動,你可以在你的 Swift 程式碼中設定斷點,當代碼執行到斷點時會暫停。

下面的截圖展示了一個除錯“Hello World”程式的例子。它在一個斷點處暫停,你可以看到“除錯”檢視顯示了作用域內變數的值。你也可以將滑鼠懸停在編輯器中的識別符號上以檢視它們的變數值。

Debugging

測試資源管理器

Visual Studio Code 在左側邊欄中提供了一個“測試資源管理器”檢視,可用於:

  • 導航到測試
  • 執行測試
  • 除錯測試

Swift 擴充套件支援 XCTest 以及 Swift Testing。當你編寫測試時,它們會自動新增到“測試資源管理器”中。

Inline test errors

要除錯一個測試:

  1. 設定斷點
  2. 使用 Debug Test (除錯測試) 配置檔案執行測試、測試套件或整個測試目標。

Run Test with Coverage (帶覆蓋率執行測試) 配置檔案會檢測被測試的程式碼,並在測試執行完成後開啟一個程式碼覆蓋率報告。當你瀏覽被覆蓋的檔案時,測試期間執行過的程式碼行號會顯示為綠色,而未被執行的則顯示為紅色。將滑鼠懸停在行號上會顯示被覆蓋行被執行的次數。可以使用 Test: Show Inline Coverage (測試:顯示行內覆蓋率) 命令來顯示或隱藏行執行計數。

使用 標籤 註釋的 Swift Testing 測試可以在“測試資源管理器”中使用 @TestTarget:tagName 進行篩選。然後你可以執行或除錯篩選後的測試列表。

重要

Swift VS Code 擴充套件不支援在 Swift 5.10 或更早版本中執行 Swift Testing 測試。

高階工具鏈選擇

Swift 擴充套件會自動檢測你安裝的 Swift 工具鏈。但是,它也提供了一個名為 Swift: Select Toolchain... (Swift: 選擇工具鏈...) 的命令,如果你安裝了多個工具鏈,可以用它在它們之間進行選擇。

重要

這是一個高階功能,用於將 VS Code 配置為使用非機器預設的工具鏈。建議在 macOS 上使用 xcode-select 或在 Linux 上使用 swiftly 來全域性切換工具鏈。

系統可能會提示你選擇在哪裡配置這個新路徑。你的選項是:

  • 儲存在使用者設定中
  • 儲存在工作區設定中

請記住,工作區設定優先於使用者設定。

Settings selection

然後 Swift 擴充套件會提示你重新載入擴充套件以應用新的工具鏈。你必須這樣做,否則擴充套件將無法正常工作。

Reload VS Code warning