随着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类包含在这些目标中,每个单独的测试包含在这些类中。测试可以在调试器之外或在调试器中运行。你可以运行单个的测试,或通过类或测试目标过滤正在运行的测试,或只是运行所有的测试。当测试成功或失败时,用户界面会更新:

多项目工作区
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完成的,但这是一个社区项目,我们很乐意让任何有兴趣的人参与进来。