先睹為快豐富的程式碼導覽體驗
2018 年 12 月 4 日 Jonathan Carter,@lostintangent
提取請求是數百萬開發人員每天使用的重要協作工具,有助於非同步程式碼審閱以及團隊和開源社群之間的知識傳播。由於其廣泛的實用性和採用率,PR 審閱工作流程的任何進展都可能對開發人員生產力、產品品質和發布速度產生重大影響。
在 9 月,我們與 GitHub 一起宣布推出 GitHub Pull Requests 擴充功能,使開發人員能夠在編寫原始碼的同一個地方(在其熟悉且高度自訂的編輯器內)審閱原始碼。今天,我們很高興分享一項新體驗的搶先看,這項體驗將透過支援豐富的多儲存庫程式碼導覽進一步增強編輯器內 PR 審閱。
告別膚淺的審閱
為了徹底審閱提取請求,您需要了解其變更的上下文,以及這些變更如何影響更廣泛的程式碼庫。如今,許多開發人員在其瀏覽器中進行「輕量級審閱」,這提供了一個極其方便的工作流程,但很容易錯過非常需要的上下文(例如,「此變更是否會破壞任何 API 的使用者?」)。GitHub Pull Requests 擴充功能透過讓您利用開發環境的功能來建置和導覽正在審閱的原始碼,從而改善了這種體驗,但仍然需要您在本機簽出分支,並安裝必要的平台 SDK 和語言擴充功能。為每個 PR 執行此操作可能需要大量的時間和情境切換,這讓您需要在快速審閱遠端 PR 的便利性與在本機編輯器中審閱它們的強大功能之間做出選擇。我們認為開發人員應該兩者兼得。
我們正在建置的豐富程式碼導覽體驗,可協助開發人員從其開發環境(透過 Visual Studio 和 Visual Studio Code 擴充功能)追蹤他們感興趣的提取請求,並隨時開始無縫導覽跨遠端託管 PR 的變更,而無需在本機簽出這些主題分支。具體來說,它使用與驅動其他編輯器體驗相同的程式碼導覽功能(例如,懸停資訊、跳到定義、尋找所有參考)來增強您從GitHub Pull Requests檢視中開啟的檔案,但在這種情況下,完全由雲端驅動。我們相信這可以使團隊更具生產力,並使膚淺的審閱成為過去。
在 macOS 上導覽基於 C# 的 PR,甚至無需安裝 C# 擴充功能或 .NET。
在 macOS 上導覽基於 C++ 的 PR,甚至無需安裝 C++ 擴充功能。
在 macOS 上導覽基於 Java 的 PR,甚至無需安裝 Java 語言支援 (redhat.java) 擴充功能。
導覽所有事物
透過此體驗,您可以導覽至在您正在審閱的檔案中、在作為 PR 一部分變更的其他檔案中,以及在同一儲存庫中的任意檔案中定義的符號(例如,類別、函式、屬性)。這樣,您在整個程式碼庫上下文中理解變更的能力不受 PR 或本機環境範圍的限制。
此外,如果您正在審閱的 PR 使用外部儲存庫中的依賴項,或包含外部儲存庫中的程式碼所使用的 API,您也可以直接導覽至這些來源!這樣,您可以完整且更重要的是快速地評估變更的影響,無論您的應用程式如何在版本控制中組織。我們相信這是一項非常強大的功能,尤其是在越來越多的團隊正在建置多儲存庫應用程式/微服務並嚴重依賴 OSS 的情況下。
直接從對其 MobX 儲存庫 的外部參考導覽到 GitHub 上的 observable 函式。
以社群為中心的設計
在幕後,此體驗由語言伺服器協定 (LSP) 的新增功能提供支援,語言伺服器協定已經是許多工具(例如 Visual Studio 和 Visual Studio Code)的語言支援基礎。此提案稱為語言伺服器索引格式 (LSIF,發音類似「else if」),提供了一種語言伺服器持久保存其執行階段智慧的方法,以便後續可用於大規模回答 LSP 請求(例如,懸停和跳到定義)。此外,LSIF 定義的資料模型使儲存庫能夠透過豐富的原始碼圖以及程式碼與外部儲存庫的關係來表示。
作為建置此服務的一部分,我們已開始實作對各種語言(TypeScript、Java、C++ 和 C#)的 LSIF 支援,並且我們對目前的成果感到非常興奮。但是,為了使這項工作取得成功,我們與社群在標準以及其他語言實作方面進行合作至關重要。若要深入了解 LSIF,並參與未來關於此議題的討論,請查看LSIF 規格草案。
我們需要您的意見反應!
我們很高興分享豐富程式碼導覽體驗的首次預覽!在您可以試用之前,我們還有很多工作要做,但我們想開始與社群公開討論我們正在做的事情。如果您有興趣與我們的團隊聊天並參與潛在的預覽,您可以在此處註冊。我們期待在不久的將來分享更多更新!
審閱愉快!
Jonathan,@lostintangent