– 代理会话日,2月19日

Swift 在 Visual Studio Code 中

Swift 是一种通用编程语言,既易于上手,又功能强大。它速度快、现代、安全,并且编写起来令人愉快。本文档详细介绍了在 Visual Studio Code 中设置和使用 Swift 的方法,使用了 swiftlang.swift-vscode 扩展。

Swift 扩展包括

  • 语法高亮和代码补全
  • 代码导航功能,例如“转到定义”和“查找所有引用”
  • 代码重构和快速修复
  • 支持 Swift 包管理器 (Swift Package Manager) 的包管理和任务
  • 丰富的调试支持
  • 使用 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... 命令来引导您完成该过程。 您可以通过打开命令面板并按照以下说明进行操作来找到此命令。

  • 对于 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 之前,您必须先使用命令行或 VS Code 中的任务执行 swift build 命令,然后才能使用语言特性。 这将在 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 组中。 这意味着它将出现在可以使用 CMD+Shift+B(macOS)或 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... 的命令,可用于在安装了多个工具链时在它们之间进行选择。

重要

这是一个高级功能,用于将 VS Code 配置为使用机器上的默认工具链以外的工具链。 建议使用 macOS 上的 xcode-select 或 Linux 上的 swiftly 在全局范围内在工具链之间切换。

系统可能会提示您选择要配置此新路径的位置。 您的选项是

  • 将其保存在用户设置中
  • 将其保存在工作区设置中

请记住,工作区设置优先于用户设置

Settings selection

Swift 扩展将提示您重新加载扩展,以便获取新的工具链。 您必须这样做,否则扩展将无法正常工作

Reload VS Code warning

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