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)
安装扩展
- 首先,安装 Swift。 如果您的系统上尚未安装 Swift,请参阅 Swift.org 上的《入门指南》。
- 下载并安装 Visual Studio Code。
- 从 VS Code Marketplace 或直接从 VS Code 扩展窗格安装 Swift 扩展。

创建新的 Swift 项目
要创建一个新的 Swift 项目,您可以使用 Swift 扩展中的 Swift: Create New Project... 命令来引导您完成该过程。 您可以通过打开命令面板并按照以下说明进行操作来找到此命令。
- 对于 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 之前,您必须先使用命令行或 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(其他平台)打开的 运行构建任务 菜单中

构建过程中发生的任何错误都会作为诊断信息出现在编辑器中,以及 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... 的命令,可用于在安装了多个工具链时在它们之间进行选择。
这是一个高级功能,用于将 VS Code 配置为使用机器上的默认工具链以外的工具链。 建议使用 macOS 上的 xcode-select 或 Linux 上的 swiftly 在全局范围内在工具链之间切换。
系统可能会提示您选择要配置此新路径的位置。 您的选项是
- 将其保存在用户设置中
- 将其保存在工作区设置中
请记住,工作区设置优先于用户设置

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