現已釋出!閱讀關於 11 月新增功能和修復的內容。

首次體驗豐富的程式碼導航功能

2018 年 12 月 4 日 Jonathan Carter, @lostintangent

拉取請求(Pull requests)是每天數百萬開發人員使用的關鍵協作工具,有助於促進非同步程式碼審查以及團隊和開源社群之間的知識分發。由於其廣泛的實用性和普及性,任何對 PR 審查工作流程的改進都可能對開發人員的工作效率、產品質量和釋出速度產生重大影響。

今年 9 月,我們與 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 語言支援 (redhat.java) 擴充套件。

導航所有內容

透過此體驗,你可以導航到你在審查的檔案中、作為 PR 一部分更改的其他檔案中以及同一儲存庫中的任意檔案中定義的符號(例如,類、函式、屬性)。這樣,你在整個程式碼庫上下文中理解更改的能力就不受 PR 範圍或本地環境的限制。

此外,如果你正在審查的 PR 使用了外部儲存庫中的依賴項,或者包含了被外部儲存庫中的程式碼使用的 API,你也可以直接導航到這些源!這樣,你就可以完全(更重要的是,快速)評估更改的影響,無論你的應用程式在版本控制中的組織方式如何。我們相信這是一種極其強大的功能,特別是隨著越來越多的團隊正在構建多儲存庫應用程式/微服務並嚴重依賴 OSS。

Navigating into a Mobx repo

從對 MobX 的 observable 函式的外部引用直接導航到 GitHub 上的 MobX 儲存庫

以社群為中心的設計

在幕後,此體驗由語言伺服器協議 (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.