Visual Studio Code 中的 Swift
Swift 是一種通用程式語言,對新手友好,對專家強大。它快速、現代、安全,並且編寫起來令人愉悅。本主題詳細介紹了在 Visual Studio Code 中設定和使用 Swift,藉助 swiftlang.swift-vscode 擴充套件。
Swift 擴充套件包含
- 語法高亮和程式碼補全
- 程式碼導航功能,例如“轉到定義”和“查詢所有引用”
- 程式碼重構和快速修復
- 支援 Swift Package Manager 的包管理和任務
- 豐富的除錯支援
- 使用 XCTest 或 Swift Testing 框架進行測試
Swift 擴充套件旨在支援以下專案
- Swift Package Manager 專案(例如,使用
Package.swift) - 可以生成
compile_commands.json的專案(例如,使用 CMake)
安裝擴充套件
- 首先,安裝 Swift。如果您尚未在系統上安裝 Swift,請參閱 Swift.org 上的入門指南。
- 下載並安裝 Visual Studio Code。
- 從 VS Code Marketplace 或直接從 VS Code 擴充套件面板安裝 Swift 擴充套件。

建立新的 Swift 專案
要建立新的 Swift 專案,您可以使用 Swift 擴充套件中的 Swift: Create New Project... 命令來指導您完成整個過程。您可以透過開啟命令面板並按照以下說明找到此命令。
- macOS:CMD+Shift+P
- 其他平臺:Ctrl+Shift+P

- 從模板列表中選擇您想要建立的專案型別。
- 選擇將儲存專案的目錄。
- 為您的專案命名。
- 開啟新建立的專案。您將看到提示,詢問您是在當前視窗、新視窗中開啟專案,還是將其新增到當前工作區。預設行為可以透過
swift.openAfterCreateNewProject設定進行配置。
語言特性
Swift 擴充套件使用 SourceKit LSP 來支援語言功能。SourceKit LSP 在編輯器中提供以下功能。使用這些連結可檢視每個主題的 VS Code 文件。
SourceKit LSP 還提供程式碼操作來自動化常見任務。VS Code 中的程式碼操作顯示為編輯器邊距附近的一個燈泡(參見下圖示例)。點選燈泡將顯示可用操作,可能包括
- 將目標新增到您的
Package.swift - 將 JSON 轉換為協議
- 為函式新增文件

在 Swift 6.1 之前,您必須在專案上執行 swift build 命令,可以在命令列上執行,也可以使用 VS Code 中的任務執行。這會填充 SourceKit-LSP 中的索引。
Swift 任務
Visual Studio Code 提供任務作為執行外部工具的一種方式。請參閱透過任務與外部工具整合文件以瞭解更多資訊。
Swift 擴充套件提供了一些內建任務,可用於透過 Swift Package Manager 進行構建。您還可以透過在專案根資料夾中建立 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 開啟。

構建過程中發生的任何錯誤都會作為診斷資訊顯示在編輯器中,與 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 中的“除錯”檢視啟動除錯會話。
- 選擇您希望除錯的啟動配置。
- 點選綠色的播放按鈕以啟動除錯會話。
可執行檔案將被啟動,您可以在 Swift 程式碼中設定斷點,程式碼執行時將命中這些斷點。
下圖展示了一個除錯“Hello World”程式的示例。程式在一個斷點處暫停,您可以看到“除錯”檢視顯示了作用域內變數的值。您還可以將滑鼠懸停在編輯器中的識別符號上以檢視其變數值。

測試資源管理器
Visual Studio Code 在左側邊欄中提供了一個測試資源管理器檢視,可用於
- 導航到測試
- 執行測試
- 除錯測試
Swift 擴充套件支援 XCTest 以及 Swift Testing。當您編寫測試時,它們會自動新增到測試資源管理器中。

除錯測試
- 設定斷點
- 使用
Debug Test配置檔案執行測試、測試套件或整個測試目標。
Run Test with Coverage 配置檔案將對被測程式碼進行儀器化,並在測試執行完成後開啟程式碼覆蓋率報告。當您瀏覽覆蓋的檔案時,執行過的行號將顯示為綠色,未執行過的行將顯示為紅色。將滑鼠懸停在行號上可顯示已執行行的執行次數。“測試:顯示內聯覆蓋率”命令可用於顯示或隱藏行執行計數。
使用 標籤註解的 Swift Testing 測試可以在測試資源管理器中使用 @TestTarget:tagName 進行過濾。然後,您可以執行或除錯過濾後的測試列表。
Swift VS Code 擴充套件不支援在 Swift 5.10 或更早版本中執行 Swift Testing 測試。
高階工具鏈選擇
Swift 擴充套件會自動檢測您安裝的 Swift 工具鏈。但是,它還提供了一個名為 Swift: Select Toolchain... 的命令,如果您安裝了多個工具鏈,可以使用它在它們之間進行選擇。
這是一個高階功能,用於將 VS Code 配置為使用非預設的工具鏈。建議在 macOS 上使用 xcode-select,在 Linux 上使用 swiftly 來全域性切換工具鏈。
您可能會被要求選擇在哪裡配置此新路徑。您的選項是
- 儲存在使用者設定中
- 儲存在工作區設定中
請記住,工作區設定優先於使用者設定。

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