Sourcegraph: ricerca di codice universale e intelligenza

La quantità di codice nel mondo sta esplodendo. Poiché il software diventa il motore fondamentale dell'innovazione in quasi tutti i settori, gli sviluppatori di software si trovano a dover gestire basi di codice più grandi e interdipendenti. La maggior parte delle organizzazioni stabilisce ogni giorno nuovi record per la dimensione della propria base di codice.

In questo mondo, gli strumenti di sviluppo tradizionali come gli editor e gli IDE non sono all'altezza. Sono stati progettati per singoli sviluppatori che lavorano su singole parti di codice, piuttosto che per team di software che sviluppano basi di codice di grandi dimensioni su larga scala. Nelle moderne organizzazioni di software, la ricerca in enormi basi di codice, la comprensione di codici non familiari e la condivisione di conoscenze istituzionali diventano preoccupazioni di primo livello. I team del software hanno bisogno di uno strumento che consenta questa intelligenza del codice universale.

La ricerca del codice deve essere universale per essere efficace: deve comprendere tutte le lingue, tutti i repository, tutti gli host di codice e tutti i file di configurazione. La ricerca limitata solo a Python o solo a GitHub è come l'indicizzazione di Google solo per i siti Web creati con Ruby on Rails o Apache HTTP Server, un punto di partenza per i team di sviluppo che lavorano nell'universo moderno del codice.

Le principali società tecnologiche come Uber, Lyft e Yelp utilizzano Sourcegraph per affrontare questo universo di codice. Aziende come Google e Facebook hanno speso centinaia di milioni di dollari per creare strumenti interni simili a Sourcegraph. GitLab, la società di code hosting e devops, ha recentemente annunciato una partnership con Sourcegraph per integrare nativamente alcune delle funzionalità di Sourcegraph nell'interfaccia utente di GitLab.

Principali motivi per utilizzare Sourcegraph

Sourcegraph è una piattaforma per sviluppatori progettata per affrontare i problemi affrontati dai moderni team di software. Sourcegraph affronta i punti deboli critici avvertiti da ingegneri del software e leader di ingegneria.

Per i singoli sviluppatori, ecco i principali motivi per utilizzare Sourcegraph:

  1. Resta in flusso, evita la morte con mille cambi di contesto
  2. Trova l'ago nel pagliaio della base dei codici
  3. Rendi le revisioni del codice rapide, approfondite e meno dolorose: niente più TL; DR
  4. Impara con l'esempio invece di una documentazione scarsa o inesistente
  5. Rendi trattabili i grandi refattori e le modifiche al codice
  6. Condividi e discuti facilmente il codice, soprattutto con i colleghi remoti
  7. È open source

Ed ecco i motivi più comuni per cui i leader dell'ingegneria introducono Sourcegraph nella loro organizzazione:

  1. Aumenta la produttività quotidiana del team
  2. Incoraggia la condivisione delle conoscenze
  3. Promuovi l'adozione di nuovi strumenti in tutta l'organizzazione
  4. Accelera l'onboarding di nuovi ingegneri
  5. Riduci i tempi di risposta agli incidenti
  6. Mantenere e diffondere gli standard di qualità del codice
  7. Crea strumenti di sviluppo interni migliori con l'API code-as-data
  8. È facile da distribuire e scalabile con il tuo team e la base di codice

Rimani in flusso

La produttività della programmazione spesso muore di morte per mille cambi di contesto. Uno scenario familiare è quello in cui uno sviluppatore sta implementando una funzionalità o una correzione di bug, ma improvvisamente deve passare a una parte diversa della base di codice. Forse hanno bisogno di cercare una certa funzione di libreria o capire come usarla. Forse un collega ha una domanda su qualche altro pezzo di codice. Ora, lo sviluppatore deve aprire quei file nel loro IDE e, così facendo, distruggere il loro attuale stato di lavoro, che dovrà essere dolorosamente richiamato e ricostruito in seguito.

Queste interruzioni sono distruttive, perché portano lo sviluppatore fuori da Flow State e l'impatto negativo sulla produttività è significativo. L'interfaccia di ricerca ed esplorazione del codice basata su browser di Sourcegraph consente a uno sviluppatore di mantenere lo stato dell'editor mentre esplora altre parti del codice. Questa conservazione dello stato di funzionamento rende i cambi di contesto molto meno costosi, consentendo ai singoli sviluppatori di fare di più con meno fastidi.

Sourcegraph

Trova gli aghi nel pagliaio

Un'attività comune nell'ingegneria del software quotidiana è la ricerca di una stringa o di un modello specifico nel codice. Questo potrebbe essere un messaggio di errore che viene visualizzato nei registri di produzione, un anti-pattern che dovrebbe essere rimosso o semplicemente una stringa univoca che lo sviluppatore associa a un particolare punto di interesse nel codice sorgente.

Sourcegraph

Trovare questi aghi è spesso doloroso. Gli IDE hanno capacità di ricerca, ma il codice in questione potrebbe esistere al di fuori di ciò che l'IDE ha aperto. Inoltre, gli strumenti della riga di comando non hanno accesso al codice al di fuori del filesystem locale e possono essere scomodi da usare. Gli host del codice eseguono ricerche solo sul codice che ospitano e spesso la ricerca è lenta o di bassa qualità. La ricerca del codice deve essere universale per essere efficace.

Con Sourcegraph, gli sviluppatori hanno una ricerca del codice che abbraccia l'intero universo di codice, con il pieno supporto per le espressioni regolari e una corrispondenza di pattern più avanzata come la sintassi Comby. Il motore di ricerca di Sourcegraph è ottimizzato per il codice sorgente, quindi è incredibilmente veloce. È stato anche progettato da zero per adattarsi a basi di codici e organizzazioni di grandi dimensioni. Alcune organizzazioni hanno centinaia di migliaia di repository e Sourcegraph li mette tutti a portata di mano di ogni sviluppatore.

Una sintassi di ricerca espressiva e potente consente all'utente di filtrare i risultati per file, lingua, repository e una miriade di altri attributi. Sourcegraph è anche a conoscenza della semantica del codice e consente la ricerca diretta dei simboli.

Sourcegraph

Impara con l'esempio

"Come lo uso?" è una domanda che gli sviluppatori fanno dozzine di volte al giorno. Il più delle volte, la migliore documentazione è un esempio di utilizzo. La funzione di ricerca-riferimento globale di Sourcegraph consente a uno sviluppatore di cercare esempi di utilizzo nell'universo del codice, anche se l'esempio di utilizzo ideale esiste in un altro repository. Ciò è particolarmente utile nei codici che sono vecchi, sconosciuti o scarsamente documentati.

Effettua revisioni del codice rapide e approfondite

Una battuta comune sulla revisione del codice dice che se invii un changeset di 10 righe, riceverai 10 commenti, ma se invii un changeset di mille righe, non riceverai alcun commento e un'approvazione automatica.

Le revisioni del codice di qualità sono spesso dolorose e lente, perché gli strumenti tradizionali mancano di molte funzionalità essenziali per aiutare il revisore a comprendere rapidamente le modifiche al codice. Sourcegraph aggiunge la navigazione del codice in stile IDE e suggerimenti al flusso di lavoro di revisione del codice esistente degli sviluppatori.

I tooltip al passaggio del mouse su Sourcegraph consentono al revisore di dare una rapida occhiata alle definizioni delle funzioni e alla documentazione senza dover scaricare il changeset in un IDE locale. Senza lasciare l'interfaccia di revisione del codice, Sourcegraph ti consente di passare a una definizione per comprendere più a fondo come funziona un pezzo di codice referenziato.

Sourcegraph

Sourcegraph integra queste funzionalità di navigazione del codice direttamente nell'interfaccia utente di strumenti di revisione del codice popolari come GitHub Pull Requests, GitLab Merge Requests e Phabricator, quindi l'esperienza dello sviluppatore migliora senza alcun costo di cambio.

Migliori revisioni del codice riducono i bug, mantengono gli standard di qualità del codice e aumentano la diffusione della conoscenza istituzionale in tutta l'organizzazione di progettazione.

Sourcegraph Sourcegraph

Rendi trattabili i grandi refactor

Man mano che le basi di codice crescono, i refattori su larga scala diventano un collo di bottiglia inevitabile per migliorare la qualità del codice e implementare nuove funzionalità. Ad esempio, potrebbe essere necessario aggiornare l'API di una libreria condivisa per supportare una nuova funzionalità, ma ciò potrebbe richiedere aggiornamenti per dozzine o addirittura centinaia di dipendenti a valle. Il numero di posizioni nel codice che devono cambiare a seguito dell'aggiornamento di una dipendenza condivisa può facilmente raggiungere migliaia di punti distribuiti su diversi componenti di proprietà di diversi team.

Sourcegraph non solo aiuta gli sviluppatori a comprendere l'impatto di un refactor (consentendo loro di cercare e scoprire tutti i luoghi in cui viene utilizzata una particolare funzione di libreria), ma fornisce anche un apparato per eseguire il refactoring e gestire la campagna di changeset e revisioni del codice. Sourcegraph Campaigns è il primo strumento del suo genere accessibile a tutte le aziende di software. Come la ricerca del codice Sourcegraph, Campaigns supporta la nuova sintassi di corrispondenza dei modelli Comby, che è più intuitiva ed espressiva rispetto alle espressioni regolari.

Sourcegraph

Incoraggia la condivisione delle conoscenze all'interno della tua organizzazione

I team di software moderni collaborano per condividere la conoscenza istituzionale del codice. Ma discutere del codice è spesso difficile per questi motivi:

  • Non puoi condividere collegamenti ipertestuali ai file che hai aperto nel tuo IDE
  • I tradizionali strumenti di visualizzazione del codice del browser non hanno una buona navigazione del codice

Sourcegraph offre il meglio di entrambi i mondi: navigazione del codice precisa e accurata in un'interfaccia web. Ciò semplifica sia la condivisione dei collegamenti sia per il destinatario l'avvio immediato dell'esplorazione e della comprensione del codice collegato a, senza il fastidio e l'attrito di estrarlo in un IDE locale.

Sourcegraph

La condivisione del code link diventa ancora più importante per i team di ingegneri remoti. I link Sourcegraph vengono condivisi centinaia di volte al giorno tramite chat, rilevatori di problemi e documentazione ufficiale e wiki. Questi diventano canali essenziali della conoscenza soprattutto quando è impossibile chiamare un collega alla propria scrivania.

È open source

Sourcegraph è un software open source. Il rilevatore di problemi è pubblico e il team è molto attento alle segnalazioni di bug e alle richieste di funzionalità. Gli sviluppatori di software moderni dovrebbero favorire gli strumenti aperti per gli stessi motivi per cui prediligono le librerie open source: la conoscenza di base su cui sono costruiti il ​​software e il team dovrebbe essere aperta a tutti, in modo che tutti possano capire come funziona e tutti possano contribuire a migliorarla.

Aumenta la produttività complessiva del tuo team

Come fa un progetto software ad essere indietro di un anno? Un giorno alla volta. Sourcegraph aiuta il tuo team a stare al passo con le scadenze semplificando le attività quotidiane. Consente agli sviluppatori di ridurre al minimo l'impatto dei cambi di contesto, rimanere aggiornati, eseguire revisioni del codice più rapide e trovare la risposta a domande come "Come si usa?" che vengono richiesti decine di volte ogni giorno. Questi aumenti di efficienza si sommano rapidamente. 

Promuovi l'adozione di nuovi strumenti in tutta l'organizzazione

La maggior parte degli utenti di Sourcegraph lo utilizza più volte al giorno, ma molti strumenti di sviluppo vengono utilizzati molto meno frequentemente. Promuovere l'adozione di nuovi strumenti può rappresentare una sfida per CIO e direttori della produttività degli sviluppatori.

Monitoraggio dell'osservabilità e delle prestazioni, tracciatori di applicazioni distribuiti, analizzatori di copertura del codice: sono tutti strumenti che potrebbero non essere facilmente individuabili o accessibili da tutti i membri del team.

Sourcegraph

L'estensione API di Sourcegraph consente a strumenti di terze parti di aggiungere annotazioni all'interfaccia utente web di Sourcegraph e all'interfaccia utente di host di codice come GitHub e GitLab. Esistono estensioni per strumenti comuni come Codecov, Datadog e Sentry e i team di strumenti interni per sviluppatori possono creare estensioni private anche per strumenti interni.

Accelera l'onboarding di nuovi ingegneri

Può essere difficile inserire nuovi ingegneri, soprattutto se l'organizzazione ingegneristica o la base di codice è grande. Sourcegraph riduce il tempo tra la data di inizio e il primo commit consentendo una comprensione più rapida del codice esistente. I neoassunti spesso trascorrono la maggior parte del loro tempo saltando intorno a parti non familiari del codice base per costruire un modello mentale del codice dell'organizzazione. La navigazione universale del codice di Sourcegraph consente loro di esplorare l'intera base di codice con un cambio di contesto minimo e la possibilità di condividere collegamenti consente loro di porre domande specifiche che non fanno perdere tempo agli ingegneri senior.

Riduci i tempi di risposta agli incidenti

Ogni minuto conta quando si risponde a un incidente di produzione. La ricerca del codice Sourcegraph riduce il tempo necessario per causare un problema alla radice, facilitando l'individuazione dei messaggi di errore nel codice sorgente. Spesso, il messaggio di errore proviene da una dipendenza a monte ed è quindi difficile da trovare utilizzando un IDE o uno strumento di ricerca dalla riga di comando. Sourcegraph indicizza tutto il codice rilevante per la tua organizzazione e rende i messaggi di errore immediatamente individuabili.

L'estensione API Sourcegraph consente anche l'integrazione di strumenti devops in Sourcegraph. Ad esempio, l'estensione Sentry visualizza il numero di avvisi di produzione generati da una particolare riga di codice di strumentazione. Ciò fornisce preziose conoscenze contestuali durante il debug degli incidenti.

Sourcegraph

Mantenere e diffondere gli standard di qualità del codice

Sourcegraph consente alle organizzazioni di mantenere e diffondere standard di qualità del codice attraverso alcuni vettori:

  • Una revisione del codice efficiente ma approfondita, con la navigazione del codice Sourcegraph e le descrizioni comandi, impedisce l'unione di codice di scarsa qualità.
  • I controlli automatici della qualità del codice (ad esempio, Codecov) possono essere integrati nella revisione del codice tramite l'API dell'estensione Sourcegraph. Sourcegraph aggiunge queste annotazioni allo strumento di revisione del codice esistente.
  • La condivisione del collegamento di codice e la navigazione nel codice nel browser consentono agli sviluppatori di fare riferimento a esempi di modelli da emulare e gli anti-modelli da scoraggiare.

Esponi la tua base di codice come set di dati tramite API

Sourcegraph espone una potente API GraphQL. L'API viene utilizzata dai team di strumenti di sviluppo interni per creare strumenti interni che sfruttano le funzionalità di Sourcegraph come la ricerca universale del codice, la navigazione nel codice e le statistiche del codice. I token di accesso consentono a strumenti affidabili di autenticarsi in Sourcegraph in modo sicuro. Sourcegraph viene fornito con un esploratore API interattivo, che semplifica l'apprendimento e la sperimentazione con l'API.

Sourcegraph