现已发布!阅读有关一月份的新功能和修复。

抢先一睹丰富的代码导航体验

2018年12月4日 Jonathan Carter, @lostintangent

拉取请求 (Pull requests) 是数百万开发人员每天使用的关键协作工具,它促进了异步代码审查,并在团队和开源社区中传播知识。由于其广泛的实用性和采用率,对 PR 审查工作流程的任何改进都可能对开发人员的生产力、产品质量和发布速度产生重大影响。

九月份,我们与 GitHub 一起,宣布了 GitHub Pull Requests 扩展,该扩展使开发人员能够在编写代码的同一位置审查源代码:在他们熟悉且高度定制的编辑器内。今天,我们很高兴分享一项新体验的预览,该体验将通过对**丰富、多仓库代码导航**的支持,进一步增强编辑器内的 PR 审查。

告别肤浅的审查

为了彻底审查拉取请求,您需要了解其更改的上下文以及它们如何影响更广泛的代码库。如今,许多开发人员在浏览器中进行“轻量级审查”,这提供了一个极其便捷的工作流程,但很容易遗漏必要的上下文(例如,“此更改是否破坏了 API 的任何使用者?”)。GitHub Pull Requests 扩展通过允许您利用开发环境的功能来构建和导航正在审查的源代码,从而改善了这种体验,但仍然要求您在本地检出分支,并安装必要的平台 SDK 和语言扩展。对每个 PR 都这样做可能需要大量的时间和上下文切换,这使您不得不在快速审查远程 PR 的便利性与在本地编辑器中审查它们的强大功能之间做出选择。**我们认为开发人员应该两者兼得**。

我们正在构建的丰富代码导航体验可以帮助开发人员(通过 Visual StudioVisual Studio Code 扩展)在其开发环境中跟踪他们感兴趣的拉取请求,并且可以随时无缝导航远程托管的 PR 中的更改,而无需在本地检出这些主题分支。具体来说,它增强了您从“GitHub Pull Requests”视图打开的文件,提供了驱动其他编辑器体验(例如,悬停信息、转到定义、查找所有引用)的相同代码导航功能,但在这种情况下,**完全由云提供支持**。我们相信这可以使团队更高效,并使肤浅的审查成为过去式。

Navigating a csharp PR

在 macOS 上导航基于 C# 的 PR,甚至没有安装 C# 扩展或 .NET。

Navigating a C++ PR

在 macOS 上导航基于 C++ 的 PR,甚至没有安装 C++ 扩展。

Navigating a Java PR

在 macOS 上导航基于 Java 的 PR,甚至没有安装 Java Language Support (redhat.java) 扩展。

导航所有内容

通过这种体验,您可以导航到您正在审查的文件中定义的符号(例如类、函数、属性),导航到 PR 中更改的其他文件中定义的符号,以及导航到同一仓库中的任意文件中定义的符号。这样,您对整个代码库上下文中的更改的理解能力就不再受 PR 范围或本地环境的限制。

此外,如果正在审查的 PR 使用了外部仓库中的依赖项,或者包含被外部仓库中的代码所使用的 API,您也可以直接导航到这些源!这样,您就可以完全——更重要的是,快速地——评估更改的影响,**无论您的应用程序在版本控制中的组织方式如何**。我们认为这是一种极其强大的功能,特别是随着越来越多的团队构建多仓库应用程序/微服务并严重依赖 OSS(开源软件)。

Navigating into a Mobx repo

从对 observable 函数的外部引用直接导航到 MobX repo

以社区为中心的设计

在幕后,这种体验由对 语言服务器协议 (LSP) 的一项补充提供支持,LSP 已经是许多工具(例如 Visual Studio 和 Visual Studio Code)语言支持的基础。这项提议被称为语言服务器索引格式 (LSIF,发音类似 "else if"),它提供了一种使语言服务器持久化其运行时智能的方法,以便随后可以用于大规模回答 LSP 请求(例如,悬停和转到定义)。此外,LSIF 定义的数据模型使得可以通过丰富的源代码图以及代码与外部仓库的关系来表示仓库。

在构建此服务时,我们已经开始为各种语言(TypeScriptJava、C++ 和 C#)实现 LSIF 支持,并且我们对迄今为止的结果感到非常兴奋。然而,为了使这项工作取得成功,与社区在标准和额外的语言实现方面进行合作至关重要。要了解有关 LSIF 的更多信息,并为未来的对话做出贡献,请查看LSIF 规范草案

我们需要您的反馈!

我们很高兴分享这个丰富代码导航体验的首次预览!在它成为您可以尝试的东西之前,我们还有很多工作要做,但我们想就我们正在做的工作与社区展开公开对话。如果您有兴趣与我们的团队交流,并参与潜在的预览,您可以在这里注册。我们期待在不久的将来分享更多更新!

祝您审查愉快!

Jonathan, @lostintangent

© . This site is unofficial and not affiliated with Microsoft.