在 VS Code 中试用

Visual Studio Code 中的 Swift

Swift 是一种通用编程语言,对新手友好,对专家强大。它快速、现代、安全且编写起来令人愉悦。本主题详细介绍了如何在 Visual Studio Code 中设置和使用 Swift,以及 swiftlang.swift-vscode 扩展。

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: 创建新项目... 命令来指导您完成此过程。您可以通过打开命令面板并按照以下说明找到此命令。

  • 对于 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 build 命令,无论是通过命令行还是使用 VS Code 中的任务。这会在 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 组中。这意味着它将出现在 运行构建任务 菜单中,该菜单可以在 macOS 上使用 CMD+Shift+B,在其他平台上使用 Ctrl+Shift+B 打开

Run build task menu

构建过程中发生的任何错误都会在编辑器中显示为诊断信息,与 SourceKit-LSP 提供的诊断信息并列。运行另一个构建任务会清除上一个构建任务的诊断信息。

调试

Visual Studio Code 提供了丰富的调试体验。有关更多信息,请参阅调试文档。

Swift 扩展依赖于 Code-LLDB 扩展来启用调试支持。

重要提示

首次启动 VS Code 时,Swift 扩展将提示您配置 LLDB 的设置。您需要将配置应用到全局(用户设置)或工作区(工作区设置),以便调试器正常工作。

Configure the Debugger

默认情况下,此扩展会为 Swift 包中的每个可执行目标创建一个启动配置。您可以通过在项目的根文件夹中添加 launch.json 文件来自行配置这些。例如,此 launch.json 启动一个带有自定义参数的 Swift 可执行文件

{
  "configurations": [
    {
      "type": "lldb",
      "name": "Debug swift-executable",
      "request": "launch",
      "sourceLanguages": ["swift"],
      "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 扩展支持 XCTestSwift Testing。当您编写测试时,它们会自动添加到“测试浏览器”中。

Inline test errors

要调试测试

  1. 设置断点
  2. 使用 调试测试 配置文件运行测试、测试套件或整个测试目标。

当测试运行完成时,运行带覆盖率的测试 配置文件会检测被测代码并打开代码覆盖率报告。当您浏览已覆盖的文件时,在测试期间执行的行号显示为绿色,而未执行的行号显示为红色。将鼠标悬停在行号上会显示已覆盖行执行的次数。可以使用 测试: 显示内联覆盖率 命令显示或隐藏行执行计数。

在“测试浏览器”中,可以使用 @TestTarget:tagName 过滤使用标签注释的 Swift Testing 测试。然后,您可以运行或调试已过滤的测试列表。

重要提示

Swift VS Code 扩展不支持在 Swift 5.10 或更早版本中运行 Swift Testing 测试。

高级工具链选择

Swift 扩展会自动检测您已安装的 Swift 工具链。但是,它还提供了一个名为 Swift: 选择工具链... 的命令,如果您安装了多个工具链,则可以使用它进行选择。

重要提示

这是一项高级功能,用于使用您机器上默认工具链以外的工具链配置 VS Code。建议在 macOS 上使用 xcode-select 或在 Linux 上使用 swiftly 来全局切换工具链。

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

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

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

Settings selection

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

Reload VS Code warning