Visual Studio Code 中的 Swift

Swift是一种通用编程语言,对新手来说易于上手,对专家来说功能强大。 它快速、现代、安全,写起来很愉快。本主题详细介绍了如何在Visual Studio Code中设置和使用Swift,并使用swiftlang.swift-vscode扩展。

Swift延伸包括:

  • 语法高亮与代码补全
  • 代码导航功能,如“前往定义”和“查找所有引用”
  • 重构与代码快速修复
  • 包管理及支持 Swift 包管理器的任务
  • 丰富的调试支持
  • 使用 XCTest 或 Swift 测试框架进行测试

Swift扩展旨在支持以下项目:

  • Swift 包管理器项目(例如使用Package.swift)
  • 能够生成compile_commands.json(例如使用CMake)

安装扩展

  1. 首先,安装Swift。如果你的系统还没有安装Swift,请查看 Swift.org 的入门指南
  2. 下载并安装Visual Studio Code
  3. VS Code市场或直接在VS Code扩展面板中安装Swift扩展。

从扩展面板安装 swift-vscode 扩展

创建一个新的Swift项目

要创建新的Swift项目,你可以使用斯威夫特:创建新项目......指挥 Swift扩展会指导你完成整个流程。你可以打开这个命令找到 命令调色板,并按照下面的说明作。

  • macOS 版本:CMD+Shift+P
  • 其他平台:Ctrl+Shift+P

创建新项目命令,显示可用的项目模板

  1. 从模板列表中选择你想创建的项目类型。
  2. 选择项目将要存储的目录。
  3. 给你的项目起个名字。
  4. 打开新创建的项目。你将被提示在 当前窗口、新窗口,或者添加到当前工作区。该 默认行为可以通过使用swift.openAfterCreateNewProject环境。

语言特征

Swift 扩展使用 SourceKit LSP 来驱动语言功能。SourceKit LSP 提供了以下功能 编辑。请使用这些链接查看每个主题的VS代码文档:

SourceKit LSP 还提供代码作以自动化常见任务。VS Code 中的代码作 在编辑器边缘附近出现一个灯泡(见下方截图,了解 举个例子)。点击灯泡会显示可用的作 这些可能包括:

  • 向你的目标添加Package.swift
  • 将 JSON 转换为协议
  • 为你的函数添加文档

包裹快速动作

重要

在Swift 6.1之前,你必须执行快速建造你的项目中的命令也可以 在使用语言功能之前,可以在命令行或使用VS Code中的任务。 这会填充SourceKit-LSP中的索引。

快速任务

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"
    }
  ]
}

上述任务配置为建造小组。这意味着它会 出现在运行构建任务在macOS上可以通过CMD+Shift+B打开菜单,在其他平台上按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 中的调试视图启动调试会话。

  1. 选择你想要调试的启动配置。
  2. 点击绿色播放按钮启动调试会话。

执行文件会被启动,你可以在 中设置断点 你的Swift代码,在代码执行时会被触发。

下面的截图展示了调试 Hello World 程序的示例。它 在断点上暂停,你可以看到调试视图显示这些值 范围中的变量。你也可以在编辑器中将鼠标悬停在标识符上查看 它们的变量值:

调试

测试探索器

Visual Studio Code 在左侧侧栏提供了一个测试资源管理器视图,可以 可使用:

  • 为了导航到测试
  • 进行测试
  • 调试测试

Swift扩展支持XCTest以及Swift测试。 当你编写测试时,它们会自动添加到测试资源管理器中。

内联测试错误

调试测试:

  1. 设定一个断点
  2. 调试测试档案。

有覆盖的运行测试配置文件对被测代码进行分析并打开一个 测试运行完成时,代码覆盖率报告。当你浏览覆盖的文件时, 测试中执行的行号显示为绿色,执行的行号显示为绿色 未接显示为红色。鼠标悬停在行号上显示覆盖次数 台词被执行。行执行计数可以通过测试:展示直联覆盖指挥部。

Tab的Swift Testing测试可以通过以下方式在测试资源管理器中进行筛选@TestTarget:tagName.那你就可以了 运行或调试过滤后的测试列表。

重要

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

高级工具链选择

Swift扩展会自动检测你安装的Swift工具链。 不过,它还提供一个命令,称为斯威夫特:选择工具链......即 如果你安装了多个工具链,可以用来在工具链之间选择。

重要

这是一个用于将 VS Code 与工具链配置为高级功能 比你机器的默认设置更重要。建议使用XCODE-SELECT(Xcode-select)关于 macOS 或迅速在 Linux 上实现了全球工具链切换。

你可能会被提示选择配置这条新路径的位置。你的选择有 收件人:

  • 保存在用户设置里
  • 保存在工作区设置里

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

设置选择

Swift扩展程序会提示你重新加载扩展程序以实现 拿起新的工具链。你必须这样做,否则扩展不会生效 正常工作:

装填对应代码警告