在 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 市场或直接在 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 添加目标 (targets)
  • 将 JSON 转换为协议
  • 为您的函数添加文档

Package swift actions

重要

在 Swift 6.1 之前,在使用语言功能之前,必须在命令行或使用 VS Code 中的任务对项目执行 swift build 命令。这将填充 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 打开

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 命令显示或隐藏行执行计数。

使用 标签 (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 来全局切换工具链。

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

  • 保存到用户设置
  • 保存到工作区设置

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

Settings selection

然后,Swift 扩展将提示您重新加载扩展以启用新工具链。您必须这样做,否则扩展将无法正常工作

Reload VS Code warning

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