Visual Studio Code 中的 Swift
Swift 是一種通用程式語言,既易於新手入門,也具備足以滿足專家的強大功能。它快速、現代、安全,並且編寫起來充滿樂趣。本主題將詳細介紹如何使用 swiftlang.swift-vscode 擴充功能,在 Visual Studio Code 中設定並使用 Swift。
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... 指令,它會引導您完成整個過程。您可以透過開啟「指令選擇區」(Command Palette) 並遵循以下說明來找到此指令。
- macOS:CMD+Shift+P
- 其他平台:Ctrl+Shift+P

- 從範本清單中選擇您要建立的專案類型。
- 選擇儲存專案的目錄。
- 為您的專案命名。
- 開啟新建立的專案。系統會提示您在目前視窗、新視窗中開啟專案,或將其新增至目前的工作區。您可以透過
swift.openAfterCreateNewProject設定來調整預設行為。
語言功能
Swift 擴充功能使用 SourceKit LSP 來提供語言功能。SourceKit LSP 在編輯器中提供以下功能。請使用這些連結查看每個主題的 VS Code 文件
SourceKit LSP 還提供程式碼動作 (Code Actions) 來自動執行常見任務。VS Code 中的程式碼動作會以編輯器邊緣附近的燈泡圖示顯示(請參閱下方的螢幕截圖範例)。點擊燈泡將會顯示可用的動作,其中可能包括
- 將目標 (Targets) 新增至您的
Package.swift - 將 JSON 轉換為協定 (Protocols)
- 為您的函式新增說明文件

在 Swift 6.1 之前,您必須在命令列或使用 VS Code 中的任務對專案執行 swift build 指令,語言功能才能使用。這會填充 SourceKit-LSP 中的索引。
Swift 任務 (Tasks)
Visual Studio Code 提供「任務」作為執行外部工具的一種方式。請參閱 透過任務整合外部工具 文件以了解更多資訊。
Swift 擴充功能提供了一些內建任務,可讓您透過 Swift Package Manager 進行建置。您也可以透過在專案根目錄中建立 tasks.json 檔案來設定自訂任務。例如,以下 tasks.json 會以發行模式 (release mode) 建置您的 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 提供豐富的偵錯體驗。請參閱 偵錯 (Debugging) 文件以取得更多資訊。
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」程式的範例。它在一個中斷點處暫停,您可以看到「偵錯檢視」顯示了範圍內變數的值。您也可以將滑鼠懸停在編輯器中的識別符上,以查看其變數值

測試總管 (Test Explorer)
Visual Studio Code 在左側邊欄提供「測試總管」檢視,可用於
- 導覽至測試
- 執行測試
- 偵錯測試
Swift 擴充功能支援 XCTest 以及 Swift Testing。當您編寫測試時,它們會自動新增至測試總管中。

若要偵錯測試
- 設定中斷點
- 使用
Debug Test設定檔執行測試、測試套件或整個測試目標。
Run Test with Coverage 設定檔會檢測被測試的程式碼,並在測試執行完成後開啟程式碼覆蓋率報告。當您瀏覽已覆蓋的檔案時,測試期間執行的行號會顯示為綠色,未執行的則顯示為紅色。將滑鼠懸停在行號上會顯示該行被執行的次數。行執行計數可以使用 Test: Show Inline Coverage 指令來顯示或隱藏。
使用 標籤 (tags) 標註的 Swift Testing 測試,可以使用 @TestTarget:tagName 在測試總管中進行篩選。然後,您可以執行或偵錯篩選後的測試清單。
Swift VS Code 擴充功能不支援在 Swift 5.10 或更早版本中執行 Swift Testing 測試。
進階工具鏈選擇
Swift 擴充功能會自動偵測您安裝的 Swift 工具鏈。不過,它也提供了一個名為 Swift: Select Toolchain... 的指令,如果您安裝了多個工具鏈,可以使用該指令在它們之間進行選擇。
這是一項進階功能,用於將 VS Code 設定為使用機器預設值以外的工具鏈。建議在 macOS 上使用 xcode-select,或在 Linux 上使用 swiftly 來全域切換工具鏈。
系統可能會提示您選擇在哪裡設定此新路徑。您的選項為
- 儲存在使用者設定 (User Settings)
- 儲存在工作區設定 (Workspace Settings)
請記住,工作區設定的優先順序高於使用者設定

隨後 Swift 擴充功能會提示您重新載入擴充功能,以便採用新的工具鏈。您必須這樣做,否則擴充功能將無法正常運作
