Visual Studio代码的Swift扩展

随着Swift在更多的平台上部署,Swift也可以在更多的平台上开发,这一点很重要。Visual Studio Code的Swift扩展为Swift开发提供了一个跨平台的解决方案,支持macOS、Linux和Windows。

动机


由于在非苹果平台上缺乏一流的集成开发环境,Swift无法扩展到苹果生态系统之外。如果你在Linux或Windows上开发,就没有Xcode。

在这之前,有一些单独的组件来组成这个开发环境,比如苹果的 SourceKit-LSP 项目,以及在使用 CodeLLDB 扩展时对 Swift 版本的 LLDB 的支持,但没有任何东西可以将它们整合在一起。

Swift服务器工作组(SSWG)认为需要一个更完整的解决方案。SSWG的Swift Extension for Visual Studio Code将许多这些组件整合到一个软件包中,所有的东西都是预先配置好的,从一开始就可以工作。

特点


该扩展主要针对Swift Packager Manager(SwiftPM)项目。它由一些已经可用的组件和新的组件组成,所有这些组件都被整合到一个连贯的软件包中。

预配置的开发环境


Visual Studio Code使用一些JSON配置文件来设置你的开发环境。Swift扩展将为你的SwiftPM项目自动生成这些文件,所以你不需要手动设置它们。当你加载一个项目时,该扩展会为你项目中的所有内容创建构建任务,以及Package.swift中任何可执行文件的调试和发布版本。它还将为所有可执行文件的调试和发布构建创建调试器启动配置。

包的依赖性视图


该扩展提供了一个软件包依赖性视图,显示了你所有的软件包依赖性的列表以及你正在使用的版本。该视图可以被展开,这样你就可以检查每个依赖的内容。右键菜单允许你查看该软件包的存储库,以及用你电脑上的本地版本替换该依赖关系。标题栏中的按钮为你的软件包增加了解决、更新和重置操作。

 

SourceKit-LSP集成


语言服务器协议(LSP)是一个标准,用于在 Visual Studio Code 等源代码编辑器中提供语言功能,如符号完成和跳转定义。通过苹果的 SourceKit-LSP 实现,与 LSP 兼容的编辑器可以获得 Swift 支持。Swift扩展管理SourceKit-LSP服务器的运行,以便为Swift和C/C++源文件提供这些语言功能。

 

调试器


调试器是通过CodeLLDB调试器扩展提供的。所有与LLDB集成的艰苦工作都由CodeLLDB完成。Swift扩展通过在启动时为你的项目可执行文件创建调试启动配置来提供与CodeLLDB的集成。它还配置了CodeLLDB以使用Swift版本的LLDB。

测试资源管理器


测试浏览器提供了一个类似于Xcode测试界面的用户界面。该界面包含一个树状视图,包括所有的测试目标,每个XCTestCase类包含在这些目标中,每个单独的测试包含在这些类中。测试可以在调试器之外或在调试器中运行。你可以运行单个测试,或通过类或测试目标过滤正在运行的测试,或只是运行所有测试。UI会随着测试的成功或失败而更新。

 

多项目工作区


Visual Studio Code 允许您创建工作区,其中包括多个工作区文件夹,每个文件夹都有自己的 SwiftPM 项目。Swift扩展还支持工作区文件夹子文件夹中的SwiftPM项目。这使得你可以在一个根文件夹下拥有一个大项目的多个组件的文件夹结构,例如一个存放着许多示例项目的资源库,或一组Swift Lambdas。这使得混合语言的项目可以包含在一个文件夹结构中,比如一个包括HTML、Javascript和Swift驱动的后端的网络项目。

在容器内开发


远程-容器扩展允许你在Docker容器内运行Visual Studio Code,在该容器内编译和测试你的代码。它可以与Swift扩展一起使用,测试/调试你的Swift代码。如果你在macOS上开发,但部署到Linux上,这是特别有用的,因为Linux和macOS的性能或功能差异可以及早发现。

您还可以使用容器支持与夜间Swift Docker镜像来测试新的Swift功能,而不必安装新的操作系统或Xcode的版本。

未来


该扩展包括我们最初计划的核心功能集,但我们还没有完成,并将继续扩展我们所拥有的功能。虽然很多工作最初是由SSWG完成的,但这是一个社区项目,我们很乐意让任何有兴趣的人参与进来,作出贡献。

如果你觉得有什么东西丢失或损坏,请添加一个问题。如果你能为建立新功能或修复错误贡献时间,请与我们联系。

 

分类: 编程语言 标签: 开发 组件 扩展 调试器 文件夹 项目 软件包 视图 可以 测试 发布于: 2022-09-29 14:39:59, 点击数: