为 Swift 开发配置 VS Code
Visual Studio Code (VS Code) 是一款流行的通用编辑器,它通过可扩展性支持多种语言。Swift 扩展为编辑器带来了 Swift 语言特有的功能,为在所有平台上开发 Swift 应用程序提供了无缝体验。
Swift 扩展包括:
- 语法高亮和代码补全
- 代码导航功能,例如转到定义和查找所有引用
- 代码重构和快速修复
- 包管理和任务,支持 Swift Package Manager
- 丰富的调试支持
- 使用 XCTest 或 Swift Testing 框架进行测试
Swift 扩展旨在支持以下项目:
- Swift Package Manager 项目(例如,使用
Package.swift
) - 可以生成
compile_commands.json
的项目(例如,使用 CMake)
安装扩展
- 首先,安装 Swift。如果你的系统上尚未安装 Swift,请参阅 上的入门指南。
- 下载并安装 Visual Studio Code。
- 从 VS Code 市场或直接从 VS Code 扩展面板中安装 Swift 扩展。
创建新的 Swift 项目
要创建新的 Swift 项目,你可以使用 Swift 扩展中的 Swift: Create New Project...
命令来指导你完成该过程。你可以通过打开命令面板并按照以下说明找到此命令。
- 对于 macOS:
CMD + Shift + P
- 其他平台:
Ctrl + Shift + P
- 在命令面板中,搜索
Swift: Create New Project...
命令。 - 从模板列表中选择你要创建的项目类型。
- 选择项目将要存储的目录。
- 为你的项目命名。
- 打开新创建的项目。系统将提示你在当前窗口、新窗口中打开项目,或将其添加到当前工作区。默认行为可以使用
swift.openAfterCreateNewProject
设置进行配置。
语言功能
Swift 扩展使用 SourceKit-LSP 来支持语言功能。SourceKit-LSP 在编辑器中提供以下功能。使用这些链接查看每个主题的 VS Code 文档:
SourceKit-LSP 还提供代码操作来自动化常见任务。VS Code 中的代码操作在编辑器边距附近显示为灯泡图标(请参阅下面的屏幕截图以获取示例)。单击灯泡将显示可用的操作,其中包括:
- 将目标添加到你的
Package.swift
- 将 JSON 转换为协议
- 为你的函数添加文档
在使用语言功能之前,你必须在命令行或使用 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
组中。这意味着它将出现在 运行生成任务
菜单中,该菜单可以使用 macOS 上的 CMD + Shift + B
或其他平台上的 Ctrl + Shift + B
打开
构建期间发生的任何错误都会在编辑器中显示为诊断信息,与 SourceKit-LSP 提供的诊断信息一起显示。运行另一个构建任务会清除来自先前构建任务的诊断信息。
调试
Visual Studio Code 提供了丰富的调试体验。有关更多信息,请参阅调试文档。
Swift 扩展依赖于 Code-LLDB 扩展来启用调试支持。
首次启动 VS Code 时,Swift 扩展将提示你配置 LLDB 的设置。你需要全局应用配置(用户设置)或应用于你的工作区(工作区设置),以便调试器正常工作。
默认情况下,该扩展会为你的 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 中的调试视图启动调试会话。
- 选择你要调试的启动配置。
- 单击绿色播放按钮以启动调试会话。
可执行文件将启动,你可以在 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 扩展不支持在 Swift 5.10 或更早版本中运行 Swift Testing 测试。
高级工具链选择
Swift 扩展会自动检测你安装的 Swift 工具链。但是,它也提供了一个名为 Swift: Select Toolchain...
的命令,如果安装了多个工具链,可以使用它在工具链之间进行选择。
这是一个高级功能,用于使用非机器默认工具链的工具链配置 VS Code。建议在 macOS 上使用 xcode-select
或在 Linux 上使用 swiftly
在全局范围内切换工具链。
系统可能会提示你选择配置新路径的位置。你的选项是:
- 将其保存在用户设置中
- 将其保存在工作区设置中
请记住,工作区设置优先于用户设置
然后,Swift 扩展将提示你重新加载扩展,以便获取新的工具链。你必须这样做,否则扩展将无法正常工作
贡献者
此扩展由 Swift 社区的成员开发,并由 Swift 服务器工作组维护。