ist jetzt verfügbar! Lesen Sie über die neuen Funktionen und Fehlerbehebungen vom November.

Erster Einblick in eine reichhaltige Code-Navigationserfahrung

4. Dezember 2018 Jonathan Carter, @lostintangent

Pull-Anfragen sind ein entscheidendes Kollaborationstool für Millionen von Entwicklern jeden Tag, das asynchrone Code-Reviews und die Verteilung von Wissen zwischen Teams und Open-Source-Communities ermöglicht. Aufgrund dieser weit verbreiteten Nützlichkeit und Akzeptanz kann jede Verbesserung des PR-Review-Workflows erhebliche Auswirkungen auf die Produktivität der Entwickler, die Produktqualität und die Release-Geschwindigkeit haben.

Im September haben wir zusammen mit GitHub die GitHub Pull Requests-Erweiterung angekündigt, die es Entwicklern ermöglichte, Quellcode an dem Ort zu überprüfen, an dem sie ihn schreiben: in ihrem vertrauten und hochgradig angepassten Editor. Heute freuen wir uns, einen ersten Einblick in eine neue Erfahrung zu geben, die In-Editor-PR-Reviews mit Unterstützung für **reichhaltige Code-Navigation über mehrere Repositories hinweg** weiter verbessern wird.

Sagen Sie oberflächlichen Reviews Lebewohl

Um eine Pull-Anfrage gründlich zu überprüfen, müssen Sie den Kontext der Änderungen und deren Auswirkungen auf die breitere Codebasis verstehen. Heutzutage führen viele Entwickler "leichtgewichtige Reviews" in ihrem Browser durch, was einen äußerst bequemen Workflow bietet, aber es leicht macht, viel benötigten Kontext zu übersehen (z. B. "Verletzt diese Änderung Verbraucher der API?"). Die GitHub Pull Requests-Erweiterung hat diese Erfahrung verbessert, indem sie es Ihnen ermöglicht, die Fähigkeiten Ihrer Entwicklungsumgebung zu nutzen, um den zu überprüfenden Quellcode zu erstellen und zu navigieren. Dennoch müssen Sie weiterhin Branches lokal auschecken und die notwendigen Plattform-SDKs und Sprach-Erweiterungen installiert haben. Dies für jede PR zu tun, kann viel Zeit und Kontextwechsel erfordern, was Sie vor die Wahl stellt, ob Sie Remote-PRs bequem und schnell überprüfen oder sie leistungsstark in Ihrem lokalen Editor überprüfen möchten. **Wir sind der Meinung, dass Entwickler beides haben sollten**.

Die reichhaltige Code-Navigationserfahrung, die wir entwickeln, hilft Entwicklern, die Pull-Anfragen, an denen sie interessiert sind, von ihrer Entwicklungsumgebung aus im Auge zu behalten (über die Erweiterungen Visual Studio und Visual Studio Code) und jederzeit nahtlos durch Änderungen in remote gehosteten PRs zu navigieren, ohne diese Topic-Branches lokal auschecken zu müssen. Insbesondere werden Dateien, die Sie aus der Ansicht GitHub Pull Requests öffnen, mit denselben Code-Navigationsfunktionen angereichert, die auch andere Editor-Erfahrungen ermöglichen (z. B. Hover-Infos, Definition suchen, alle Referenzen finden), aber in diesem Fall **vollständig von der Cloud betrieben** werden. Wir glauben, dass dies Teams produktiver machen und oberflächliche Reviews zu einer Sache der Vergangenheit machen kann.

Navigating a csharp PR

Navigation durch eine C#-basierte PR unter macOS, ohne überhaupt die C#-Erweiterung oder .NET installiert zu haben.

Navigating a C++ PR

Navigation durch eine C++-basierte PR unter macOS, ohne überhaupt die C++-Erweiterung installiert zu haben.

Navigating a Java PR

Navigation durch eine Java-basierte PR unter macOS, ohne überhaupt die Java Language Support (redhat.java)-Erweiterung installiert zu haben.

Navigieren Sie durch alles

Mit dieser Erfahrung können Sie zu Symbolen (z. B. Klassen, Funktionen, Eigenschaften) navigieren, die in der von Ihnen überprüften Datei definiert sind, in anderen Dateien, die Teil der PR waren, sowie in beliebigen Dateien im selben Repository. So ist Ihre Fähigkeit, Änderungen im Kontext der gesamten Codebasis zu verstehen, nicht durch den Umfang der PR oder Ihre lokale Umgebung begrenzt.

Darüber hinaus können Sie, wenn die PR, die Sie überprüfen, Abhängigkeiten in externen Repositories verwendet oder APIs enthält, die von Code in externen Repositories genutzt werden, auch direkt zu diesen Quellen navigieren! So können Sie die Auswirkungen einer Änderung vollständig – und wichtiger noch, schnell – beurteilen, **unabhängig davon, wie Ihre Anwendung im Versionskontrollsystem organisiert ist**. Wir glauben, dass dies eine äußerst leistungsfähige Funktion ist, insbesondere da immer mehr Teams Multi-Repository-Anwendungen/Microservices entwickeln und sich stark auf OSS verlassen.

Navigating into a Mobx repo

Navigation direkt in das MobX Repository auf GitHub von einer externen Referenz auf seine observable Funktion.

Gemeinschaftsorientiertes Design

Im Hintergrund wird diese Erfahrung durch eine Ergänzung zum Language Server Protocol (LSP) ermöglicht, das bereits die Grundlage für Sprachunterstützung in einer Reihe von Tools wie Visual Studio und Visual Studio Code bildet. Dieser Vorschlag mit dem Namen Language Server Index Format (LSIF, ausgesprochen wie "else if") bietet Sprachservern eine Möglichkeit, ihre Laufzeitintelligenz zu speichern, damit diese anschließend zur Beantwortung von LSP-Anfragen im großen Maßstab (z. B. Hover und Definition suchen) verwendet werden kann. Darüber hinaus ermöglicht das von LSIF definierte Datenmodell die Darstellung von Repositories durch reichhaltige Graphen von Quellcode und die Beziehungen, die Code zu externen Repositories hat.

Im Rahmen des Aufbaus dieses Dienstes haben wir mit der Implementierung der LSIF-Unterstützung für verschiedene Sprachen begonnen ( TypeScript, Java, C++ und C#) und sind mit den bisherigen Ergebnissen äußerst zufrieden. Damit dieser Aufwand jedoch erfolgreich ist, ist es entscheidend, dass wir mit der Community sowohl am Standard als auch an zusätzlichen Sprachimplementierungen zusammenarbeiten. Um mehr über LSIF zu erfahren und sich an dieser Diskussion zu beteiligen, lesen Sie die Entwurfspezifikation von LSIF.

Wir brauchen Ihr Feedback!

Wir freuen uns, diesen ersten Einblick in die reichhaltige Code-Navigationserfahrung zu teilen! Es gibt noch viel zu tun, bevor dies etwas ist, das Sie ausprobieren können, aber wir wollten eine offene Unterhaltung mit der Community darüber beginnen, woran wir arbeiten. Wenn Sie daran interessiert sind, mit unserem Team zu chatten und an einer potenziellen Vorschau teilzunehmen, können Sie sich hier anmelden. Wir freuen uns darauf, in naher Zukunft weitere Updates zu teilen!

Viel Spaß beim Überprüfen!

Jonathan, @lostintangent

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