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)

安裝擴充功能

  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... 指令,它會引導您完成整個過程。您可以透過開啟「指令選擇區」(Command Palette) 並遵循以下說明來找到此指令。

  • 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 還提供程式碼動作 (Code Actions) 來自動執行常見任務。VS Code 中的程式碼動作會以編輯器邊緣附近的燈泡圖示顯示(請參閱下方的螢幕截圖範例)。點擊燈泡將會顯示可用的動作,其中可能包括

  • 將目標 (Targets) 新增至您的 Package.swift
  • 將 JSON 轉換為協定 (Protocols)
  • 為您的函式新增說明文件

Package swift actions

重要

在 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 開啟

Run build task menu

建置期間發生的任何錯誤都會與 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 中的「偵錯」檢視啟動偵錯工作階段。

  1. 選擇您想要偵錯的啟動設定。
  2. 點擊綠色的執行按鈕以啟動偵錯工作階段。

可執行檔將會啟動,您可以在 Swift 程式碼中設定中斷點,程式執行到該處時就會中斷。

下方的螢幕截圖展示了偵錯「Hello World」程式的範例。它在一個中斷點處暫停,您可以看到「偵錯檢視」顯示了範圍內變數的值。您也可以將滑鼠懸停在編輯器中的識別符上,以查看其變數值

Debugging

測試總管 (Test Explorer)

Visual Studio Code 在左側邊欄提供「測試總管」檢視,可用於

  • 導覽至測試
  • 執行測試
  • 偵錯測試

Swift 擴充功能支援 XCTest 以及 Swift Testing。當您編寫測試時,它們會自動新增至測試總管中。

Inline test errors

若要偵錯測試

  1. 設定中斷點
  2. 使用 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)

請記住,工作區設定的優先順序高於使用者設定

Settings selection

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

Reload VS Code warning

© . This site is unofficial and not affiliated with Microsoft.