Sourcegraph: Universelle Codesuche und Intelligenz

Die Menge an Code in der Welt explodiert. Da Software in nahezu jeder Branche zum grundlegenden Innovationstreiber wird, haben Softwareentwickler mit größeren, stärker voneinander abhängigen Codebasen zu tun. Die meisten Organisationen stellen jeden Tag neue Rekorde für die Größe ihrer Codebasis auf.

In dieser Welt fehlen traditionelle Entwicklertools wie Editoren und IDEs. Sie wurden für einzelne Entwickler entwickelt, die an einzelnen Codeteilen arbeiten, und nicht für Softwareteams, die große Codebasen in großem Maßstab entwickeln. In modernen Software-Organisationen werden das Durchsuchen massiver Codebasen, das Verstehen von unbekanntem Code und das Teilen von institutionellem Wissen zu Anliegen erster Ordnung. Softwareteams benötigen ein Tool, das diese universelle Code-Intelligenz ermöglicht.

Die Codesuche muss universell sein, um effektiv zu sein. Sie muss alle Sprachen, alle Repositorys, alle Code-Hosts und alle Konfigurationsdateien umfassen. Eine Suche, die nur auf Python oder nur auf GitHub beschränkt ist, entspricht der Indizierung von Websites durch Google, die nur mit Ruby on Rails oder Apache HTTP Server erstellt wurden - ein Nichtstarter für Entwicklungsteams, die im modernen Codeuniversum arbeiten.

Führende Technologieunternehmen wie Uber, Lyft und Yelp verwenden Sourcegraph, um dieses Codeuniversum zu erörtern. Unternehmen wie Google und Facebook haben Hunderte Millionen Dollar ausgegeben, um interne Tools ähnlich wie Sourcegraph zu erstellen. GitLab, das Unternehmen für Code-Hosting und -Entwicklung, hat kürzlich eine Partnerschaft mit Sourcegraph angekündigt, um einige der Funktionen von Sourcegraph nativ in die Benutzeroberfläche von GitLab zu integrieren.

Hauptgründe für die Verwendung von Sourcegraph

Sourcegraph ist eine Entwicklerplattform, die entwickelt wurde, um die Probleme moderner Softwareteams anzugehen. Sourcegraph befasst sich mit kritischen Schwachstellen, die Softwareentwickler und technische Leiter empfinden.

Für einzelne Entwickler sind hier die wichtigsten Gründe für die Verwendung von Sourcegraph:

  1. Bleiben Sie im Fluss, vermeiden Sie den Tod durch tausend Kontextwechsel
  2. Finden Sie die Nadel im Heuhaufen der Codebasis
  3. Machen Sie Codeüberprüfungen schnell, gründlich und weniger schmerzhaft - keine TL; DR mehr
  4. Lernen Sie anhand von Beispielen anstelle einer schlechten oder nicht vorhandenen Dokumentation
  5. Machen Sie große Refaktoren und Codeänderungen nachvollziehbar
  6. Teilen und diskutieren Sie Code ganz einfach, insbesondere mit Remote-Kollegen
  7. Es ist Open Source

Und hier sind die häufigsten Gründe, warum Ingenieure Sourcegraph in ihre Organisation einführen:

  1. Steigern Sie die tägliche Produktivität des Teams
  2. Förderung des Wissensaustauschs
  3. Förderung der organisationsweiten Einführung neuer Tools
  4. Beschleunigen Sie die Einarbeitung neuer Ingenieure
  5. Reduzieren Sie die Reaktionszeit auf Vorfälle
  6. Pflege und Verbreitung von Code-Qualitätsstandards
  7. Erstellen Sie mit der Code-as-Data-API bessere interne Entwicklertools
  8. Es ist einfach bereitzustellen und lässt sich mit Ihrem Team und Ihrer Codebasis skalieren

Bleib im Fluss

Die Programmierproduktivität stirbt oft durch tausend Kontextwechsel. Ein bekanntes Szenario ist ein Szenario, in dem ein Entwickler gerade eine Funktion oder Fehlerbehebung implementiert, aber plötzlich in einen anderen Teil der Codebasis springen muss. Vielleicht müssen sie eine bestimmte Bibliotheksfunktion nachschlagen oder herausfinden, wie sie verwendet wird. Vielleicht hat ein Kollege eine Frage zu einem anderen Code. Jetzt muss der Entwickler diese Dateien in seiner IDE öffnen und dabei ihren aktuellen Arbeitszustand zerstören, der später schmerzhaft zurückgerufen und rekonstruiert werden muss.

Diese Unterbrechungen sind destruktiv, da sie den Entwickler aus dem Flow-Status entfernen und die negativen Auswirkungen auf die Produktivität erheblich sind. Mit der browserbasierten Code-Such- und Erkundungsoberfläche von Sourcegraph kann ein Entwickler seinen Editorstatus beibehalten, während er andere Teile des Codes untersucht. Diese Beibehaltung des Arbeitszustands macht Kontextwechsel weitaus kostengünstiger, sodass einzelne Entwickler mit weniger Ärger mehr erledigen können.

Quellgraph

Finde die Nadeln im Heuhaufen

Eine häufige Aufgabe in der täglichen Softwareentwicklung ist das Nachschlagen einer bestimmten Zeichenfolge oder eines bestimmten Musters im Code. Dies kann eine Fehlermeldung sein, die in Produktionsprotokollen angezeigt wird, ein Anti-Pattern, das entfernt werden sollte, oder einfach eine eindeutige Zeichenfolge, die der Entwickler einem bestimmten Punkt von Interesse im Quellcode zuordnet.

Quellgraph

Das Finden dieser Nadeln ist oft schmerzhaft. IDEs verfügen über Suchfunktionen, der betreffende Code kann jedoch außerhalb des von der IDE geöffneten Codes vorhanden sein. Befehlszeilentools haben auch keinen Zugriff auf Code außerhalb des lokalen Dateisystems und können umständlich zu verwenden sein. Code-Hosts suchen nur über den Code, den sie hosten, und häufig ist diese Suche langsam oder von geringer Qualität. Die Codesuche muss universell sein, um effektiv zu sein.

Mit Sourcegraph verfügen Entwickler über eine Codesuche, die sich über das gesamte Codeuniversum erstreckt und vollständige Unterstützung für reguläre Ausdrücke und erweiterte Musterübereinstimmungen wie die Comby-Syntax bietet. Die Suchmaschine von Sourcegraph ist für den Quellcode optimiert und daher unglaublich schnell. Es wurde auch von Grund auf für große Codebasen und Organisationen entwickelt. Einige Organisationen verfügen über Hunderttausende von Repositorys, und Sourcegraph stellt sie jedem Entwickler zur Verfügung.

Eine ausdrucksstarke und leistungsstarke Suchsyntax ermöglicht es dem Benutzer, Ergebnisse nach Datei, Sprache, Repository und unzähligen anderen Attributen zu filtern. Sourcegraph kennt auch die Codesemantik und ermöglicht die direkte Suche nach Symbolen.

Quellgraph

Lernen Sie anhand eines Beispiels

"Wie benutze ich das?" ist eine Frage, die Entwickler Dutzende Male pro Tag stellen. Meistens ist die beste Dokumentation ein Anwendungsbeispiel. Mit der globalen Suchreferenzfunktion von Sourcegraph kann ein Entwickler Verwendungsbeispiele im gesamten Codeuniversum nachschlagen, selbst wenn das ideale Verwendungsbeispiel in einem anderen Repository vorhanden ist. Dies ist besonders hilfreich bei Codebasen, die alt, unbekannt oder schlecht dokumentiert sind.

Führen Sie Codeüberprüfungen schnell und gründlich durch

Ein allgemeiner Witz über die Codeüberprüfung besagt, dass Sie beim Senden eines Änderungssatzes mit 10 Zeilen 10 Kommentare erhalten. Wenn Sie jedoch einen Änderungssatz mit 1000 Zeilen einreichen, erhalten Sie keine Kommentare - und eine automatische Genehmigung.

Qualitätscode-Überprüfungen sind oft schmerzhaft und langsam, da herkömmliche Tools viele wesentliche Funktionen fehlen, damit der Prüfer Codeänderungen schnell verstehen kann. Sourcegraph erweitert den bestehenden Codeüberprüfungs-Workflow der Entwickler um IDE-ähnliche Code-Navigation und Tooltips.

Mit den QuickInfos zum Schweben von Quellgraphen kann der Prüfer schnell einen Blick auf Funktionsdefinitionen und Dokumentation werfen, ohne den Änderungssatz in eine lokale IDE ziehen zu müssen. Ohne die Codeüberprüfungsoberfläche zu verlassen, können Sie mit Sourcegraph zu einer Definition springen, um besser zu verstehen, wie ein Code funktioniert, auf den verwiesen wird.

Quellgraph

Sourcegraph integriert diese Code-Navigationsfunktionen direkt in die Benutzeroberfläche gängiger Tools zur Codeüberprüfung wie GitHub Pull Requests, GitLab Merge Requests und Phabricator, sodass sich die Entwicklererfahrung ohne Umstellungskosten verbessert.

Bessere Codeüberprüfungen reduzieren Fehler, halten die Codequalitätsstandards ein und erhöhen die Verbreitung des institutionellen Wissens in der gesamten technischen Organisation.

Sourcegraph Sourcegraph

Machen Sie große Refaktoren handhabbar

Mit zunehmender Codebasis werden große Refaktoren zu einem unvermeidbaren Engpass bei der Verbesserung der Codequalität und der Implementierung neuer Funktionen. Beispielsweise muss die API einer gemeinsam genutzten Bibliothek möglicherweise aktualisiert werden, um eine neue Funktion zu unterstützen. Dazu sind jedoch möglicherweise Aktualisierungen für Dutzende oder sogar Hunderte von nachgeschalteten abhängigen Personen erforderlich. Die Anzahl der Stellen im Code, die sich infolge der Aktualisierung einer gemeinsamen Abhängigkeit ändern müssen, kann leicht auf Tausende von Punkten ansteigen, die auf verschiedene Komponenten verteilt sind, die verschiedenen Teams gehören.

Sourcegraph hilft Entwicklern nicht nur dabei, die Auswirkungen eines Refactors zu verstehen (indem sie alle Orte suchen und entdecken können, an denen eine bestimmte Bibliotheksfunktion verwendet wird), sondern bietet auch einen Apparat zum Ausführen des Refactors und zum Verwalten der Kampagne für Änderungssätze und Codeüberprüfungen. Sourcegraph Campaigns ist das erste Tool dieser Art, das allen Softwareunternehmen zugänglich ist. Wie die Sourcegraph-Codesuche unterstützt Campaigns die neue Syntax für den Comby-Pattern-Matching, die benutzerfreundlicher und ausdrucksvoller ist als reguläre Ausdrücke.

Quellgraph

Fördern Sie den Wissensaustausch in Ihrem Unternehmen

Moderne Softwareteams arbeiten zusammen, um institutionelles Wissen über Code auszutauschen. Die Diskussion über Code ist jedoch aus folgenden Gründen oft schwierig:

  • Sie können keine Hyperlinks zu Dateien freigeben, die Sie in Ihrer IDE geöffnet haben
  • Herkömmliche Browser-Code-Anzeige-Tools verfügen nicht über eine gute Code-Navigation

Sourcegraph bietet das Beste aus beiden Welten: präzise und genaue Code-Navigation in einer Weboberfläche. Dies erleichtert sowohl das Teilen von Links als auch das sofortige Erkunden und Verstehen des verknüpften Codes für den Empfänger, ohne den Aufwand und die Reibung, ihn in einer lokalen IDE aufzurufen.

Quellgraph

Die gemeinsame Nutzung von Codeverbindungen wird für Remote-Engineering-Teams noch wichtiger. Sourcegraph-Links werden hunderte Male pro Tag über Chat, Issue-Tracker sowie in offiziellen Dokumentationen und Wikis geteilt. Diese werden zu wesentlichen Wissensquellen, insbesondere wenn es unmöglich ist, einen Kollegen an den Schreibtisch zu rufen.

Es ist Open Source

Sourcegraph ist Open Source Software. Der Issue Tracker ist öffentlich und das Team reagiert sehr schnell auf Fehlerberichte und Funktionsanfragen. Moderne Softwareentwickler sollten offene Tools aus den gleichen Gründen bevorzugen, aus denen sie Open-Source-Bibliotheken bevorzugen: Grundlegendes Wissen, auf dem Ihre Software und Ihr Team aufbauen, sollte für alle offen sein, damit alle verstehen, wie es funktioniert, und alle dazu beitragen können, es zu verbessern.

Steigern Sie die Gesamtproduktivität Ihres Teams

Wie kommt ein Softwareprojekt ein Jahr zurück? Ein Tag nach dem anderen. Sourcegraph hilft Ihrem Team, Termine einzuhalten, indem es die täglichen Aufgaben rationalisiert. Damit können Entwickler die Auswirkungen von Kontextwechseln minimieren, im Fluss bleiben, schnellere Codeüberprüfungen durchführen und Antworten auf Fragen wie "Wie verwende ich das?" Finden. das werden jeden Tag dutzende Male gefragt. Diese Effizienzsteigerungen summieren sich schnell. 

Förderung der organisationsweiten Einführung neuer Tools

Die meisten Sourcegraph-Benutzer verwenden es mehrmals täglich, aber viele Entwicklertools werden viel seltener verwendet. Es kann für CIOs und Direktoren der Entwicklerproduktivität eine Herausforderung sein, die Einführung neuer Tools voranzutreiben.

Beobachtbarkeits- und Leistungsmonitore, Tracer für verteilte Anwendungen, Analysegeräte für die Codeabdeckung - all dies sind Tools, die möglicherweise nicht für alle Mitglieder Ihres Teams leicht erkennbar oder zugänglich sind.

Quellgraph

Mit der Erweiterungs-API von Sourcegraph können Tools von Drittanbietern Anmerkungen zur Sourcegraph-Web-Benutzeroberfläche und zur Benutzeroberfläche von Code-Hosts wie GitHub und GitLab hinzufügen. Es gibt Erweiterungen für beliebte Standardtools wie Codecov, Datadog und Sentry, und interne Entwicklertools-Teams können auch private Erweiterungen für interne Tools erstellen.

Beschleunigen Sie die Einbindung neuer Ingenieure

Es kann schwierig sein, neue Ingenieure zu gewinnen, insbesondere wenn die technische Organisation oder Codebasis groß ist. Sourcegraph reduziert die Zeit zwischen dem Startdatum und dem ersten Commit, indem es das schnellere Verständnis des vorhandenen Codes ermöglicht. Neueinstellungen verbringen oft den größten Teil ihrer Zeit damit, in unbekannten Teilen der Codebasis herumzuspringen, um ein mentales Modell des Codes der Organisation zu erstellen. Mit der universellen Code-Navigation von Sourcegraph können sie die gesamte Codebasis mit minimalem Kontextwechsel erkunden. Durch die Möglichkeit, Links zu teilen, können sie spezifische Fragen stellen, die nicht die Zeit hochrangiger Ingenieure verschwenden.

Reduzieren Sie die Reaktionszeit auf Vorfälle

Bei der Reaktion auf einen Produktionsvorfall zählt jede Minute. Durch die Suche nach Quellgraph-Code wird die Zeit verkürzt, die erforderlich ist, um ein Problem zu beheben, da Fehlermeldungen im Quellcode leicht gefunden werden können. Oft stammt die Fehlermeldung aus einer Upstream-Abhängigkeit und ist daher mit einer IDE oder einem Befehlszeilensuchwerkzeug schwer zu finden. Sourcegraph indiziert den gesamten für Ihr Unternehmen relevanten Code und macht Fehlermeldungen sofort auffindbar.

Die Sourcegraph-Erweiterungs-API ermöglicht auch die Integration von Devops-Tools in Sourcegraph. Beispielsweise zeigt die Sentry-Erweiterung die Anzahl der Produktionsalarme an, die eine bestimmte Zeile des Instrumentierungscodes generiert. Dies liefert wertvolles Kontextwissen beim Debuggen von Vorfällen.

Quellgraph

Pflege und Verbreitung von Code-Qualitätsstandards

Mit Sourcegraph können Unternehmen Codequalitätsstandards über einige Vektoren beibehalten und verbreiten:

  • Eine effiziente, aber gründliche Codeüberprüfung mit Sourcegraph-Code-Navigation und Tooltips verhindert, dass Code von schlechter Qualität zusammengeführt wird.
  • Automatische Codequalitätsprüfer (z. B. Codecov) können über die Sourcegraph-Erweiterungs-API in die Codeüberprüfung integriert werden. Sourcegraph fügt diese Anmerkungen dem vorhandenen Codeüberprüfungstool hinzu.
  • Durch die gemeinsame Nutzung von Codelinks und die Code-Navigation im Browser können Entwickler auf Beispiele für zu emulierende Muster verweisen und von Anti-Mustern abraten.

Stellen Sie Ihre Codebasis über die API als Datensatz bereit

Sourcegraph stellt eine leistungsstarke GraphQL-API zur Verfügung. Die API wird von internen Entwicklertools-Teams verwendet, um interne Tools zu erstellen, die Sourcegraph-Funktionen wie die universelle Codesuche, die Code-Navigation und die Codestatistik nutzen. Mit Zugriffstoken können sich vertrauenswürdige Tools sicher bei Sourcegraph authentifizieren. Sourcegraph wird mit einem interaktiven API-Explorer geliefert, der das Erlernen und Experimentieren mit der API erleichtert.

Quellgraph