在 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)
安裝擴充套件
- 首先,安裝 Swift。如果你的系統上尚未安裝 Swift,請參閱 Swift.org 上的入門指南。
- 下載並安裝 Visual Studio Code。
- 從 VS Code Marketplace 或直接在 VS Code 擴充套件面板中安裝 Swift 擴充套件。
建立一個新的 Swift 專案
要建立一個新的 Swift 專案,你可以使用 Swift 擴充套件中的 Swift: Create New Project...
(Swift: 建立新專案...) 命令來引導你完成整個過程。你可以透過開啟命令面板並按照以下說明找到此命令。
- 對於 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 包管理器進行構建。你還可以透過在專案根資料夾中建立一個 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
(帶覆蓋率執行測試) 配置檔案會檢測被測試的程式碼,並在測試執行完成後開啟一個程式碼覆蓋率報告。當你瀏覽被覆蓋的檔案時,測試期間執行過的程式碼行號會顯示為綠色,而未被執行的則顯示為紅色。將滑鼠懸停在行號上會顯示被覆蓋行被執行的次數。可以使用 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
來全域性切換工具鏈。
系統可能會提示你選擇在哪裡配置這個新路徑。你的選項是:
- 儲存在使用者設定中
- 儲存在工作區設定中
請記住,工作區設定優先於使用者設定。
然後 Swift 擴充套件會提示你重新載入擴充套件以應用新的工具鏈。你必須這樣做,否則擴充套件將無法正常工作。