JavaRush /Java Blog /Random-IT /Ricerca codice GitHub: trova di più, cerca di meno: GitHu...
Roman Beekeeper
Livello 35

Ricerca codice GitHub: trova di più, cerca di meno: GitHub ha lanciato un motore di ricerca

Pubblicato nel gruppo Random-IT
Ciao a tutti, cari amici! Essendo un amante delle nuove funzionalità di GitHub, mi ha molto interessato sapere che presto saremo tutti in grado di effettuare ricerche in modo rapido ed efficiente nel codebase di GitHub. Questo può essere molto comodo, soprattutto se hai bisogno di trovare un modo sofisticato per utilizzare uno strumento. "Ricerca codice GitHub: trova di più, cerca di meno" - GitHub ha lanciato un motore di ricerca - 1Ciò è particolarmente in sintonia con il fatto che in Russia è stato aperto un futuro concorrente di GitHub. Pertanto, GitHub non dovrebbe assolutamente riposare sugli allori, nonostante siano senza dubbio i leader del mercato. Dobbiamo andare avanti e crescere, altrimenti non passa nemmeno un’ora e i concorrenti raggiungono e spazzano via. E lascia che non sembri così incredibile. Ad esempio: quante persone usano ancora i telefoni Nokia? Chi sa che hanno realizzato i telefoni? Un tempo erano semplicemente irraggiungibili, indiscussi leader di mercato... E ora appaiono da qualche parte nel regno dell'errore statistico.

Prima impressione

GitHub ha creato un progetto in cui puoi cercare, navigare e analizzare il tuo codice e i miliardi di righe di codice pubblicate su GitHub. È importante notare che la ricerca è scalabile, veloce e accurata. È stato creato da zero appositamente per la ricerca del codice. La navigazione funziona per i 10 principali linguaggi di programmazione senza impostazioni (speriamo che l'elenco cresca in futuro). Puoi effettuare la ricerca utilizzando un'espressione regolare, il che è molto interessante. Sono disponibili anche altri filtri:
  • per organizzazione;
  • dai linguaggi di programmazione;
  • dal proprietario specifico;
  • per estensione del file;
  • mediante espressione regolare.
La lista è già impressionante! Si scopre che il motore di ricerca ci offre l'opportunità di creare query di ricerca complesse in cui possiamo definire chiaramente i confini lungo i quali è necessaria la ricerca. La seconda parte importante del motore è la navigazione del codice 😳 A cosa servono gli ambienti di sviluppo e perché le persone pagano per averli? Perché ci semplificano la vita, ci aiutano a navigare nel codice, in modo che la velocità di sviluppo e lettura del codice aumenti. E GitHub ora ci offre questa interessante funzionalità. Questo è incredibile. Sì, lo so, al momento esiste già qualcosa di simile alla navigazione su GitHub, ma la funzionalità è ancora molto breve e rozza. Cioè, senza un ambiente di sviluppo, puoi cercare dove vengono utilizzati determinati metodi, dove sono stati definiti. È semplicemente meraviglioso. GitHub mi rendi felice. È disponibile anche la navigazione per le importazioni nelle classi. Ciò risolve molti problemi nel trovare e studiare una particolare libreria su GitHub. Ora questo processo è accelerato molte volte. Ed è tutto gratis. Semplicemente eccellente. Sarà richiesto? Sono sicuro di sì!

Parliamo più in dettaglio della ricerca

È molto interessante dare un'occhiata e provare a cercare tu stesso: è così conveniente come dicono? Per ora, questa funzione non è disponibile pubblicamente e puoi aggiungerti alla lista d'attesa utilizzando il collegamento . Compiliamo tutti i punti lì, le domande sono semplici, non le descriverò qui. Di conseguenza, veniamo aggiunti alla lista d'attesa e andiamo avanti. Di conseguenza, la risposta sarà questa: "Ricerca codice GitHub: trova di più, cerca di meno" - GitHub ha lanciato un motore di ricerca - 2devi solo aspettare. Appena sarò aggiunto vi mostrerò sicuramente tutto. Non ritardare, aggiungi te stesso in modo da poterlo capire in seguito e usarlo a tuo piacimento) E, naturalmente, è un peccato che non puoi provare subito il nuovo strumento, quindi analizziamo la loro documentazione e descriviamo in maggiori dettagli su come possiamo utilizzare questo strumento per il nostro lavoro. Ora riguardo alla ricerca. Utilizzerà classi e costrutti che hanno senso nella libreria che sto scrivendo. Questo renderà il tutto più chiaro e più semplice per me, e spero che lo sarà anche per te.

Ricerca di base

ImageComparison è la ricerca più semplice che ricerca esattamente con la query nei nomi dei file e nel loro contenuto. Qui sembra tutto molto semplice. Se vogliamo trovare chiaramente in base al nome della classe, dove viene dichiarata e dove viene utilizzata, tale ricerca ci aiuterà in questo. Quando inserisci più parole separate da spazi, il risultato sarà una ricerca per tutte separatamente: Image Comparison , il che significa che troverà file e codice sia per Image che per Comparison . Se devi cercare una stringa contenente spazi, devi solo usare le virgolette. Ad esempio: "Confronto ImageComparison = new ImageComparison()" e la ricerca corrisponderà all'intera stringa. Per l'escape usiamo "\" come sempre. Finora tutto è intuitivo e spesso è così che si fa. Inoltre, possiamo aggiungere filtri a questa ricerca di base. Pertanto, parliamo di ciascuno di essi. Questi saranno "AND" logici per il filtro che abbiamo già creato.

Filtra per archivio

Una volta che il nostro filtro di base è pronto, possiamo restringere la ricerca ed effettuarla per repository specifici, il che è molto comodo. Non è necessario cercare in quale cartella si trova la classe, puoi semplicemente scrivere:
repo:romankh3/image-comparison ImageComparisonResult
Dove dobbiamo specificare repository:${user_name}/${repo_name} . Puoi anche cercare tra più repository semplicemente aggiungendo un OR:
repo:romankh3/image-comparison OR repo:romankh3/usage-image-comparison ImageComparisonResult
Come affermato su GitHub, al momento non supportano la ricerca nei repository in cui il nome è specificato come espressione regolare... Ciò significa che stanno pianificando di aggiungere tale funzionalità e significa che il progetto non si fermerà al dichiarato funzionalità e si svilupperà ulteriormente.

Filtra per organizzazione

La ricerca per organizzazione o utente viene eseguita esattamente allo stesso modo della ricerca per repository, solo che la parola chiave non sarà repo , ma org :
org:romankh3Confronto immagini
E poi la ricerca passerà attraverso tutti i repository dell'utente/organizzazione.

Filtra per linguaggi di programmazione

È inoltre possibile specificare una ricerca di file in un linguaggio di programmazione specifico. Qui la costruzione è la stessa del repository e dell'organizzazione, solo la parola chiave è linguaggio :
lingua:java ImageComparison
Proprio come il repository, supporta la ricerca in più lingue contemporaneamente utilizzando la parola chiave OR:
lingua: Java O lingua: Ruby ImageComparison
Un elenco completo delle lingue supportate da GitHub può essere trovato qui . Mi chiedo se BrainFuck è lì? 😂

Filtra per percorso file

Ogni file nel progetto ha il proprio percorso e puoi anche cercarlo aggiungendo un filtro. Ad esempio, c'è un file ImageComparisonResult , ha il percorso:
src/main/java/com/github/romankh3/image/comparison/model/ImageComparisonResult.java
Quindi, per trovare tutte le classi il cui percorso inizia con src/main/java/com/github/romankh3/image , è necessario:
percorso:src/main/java/com/github/romankh3/image
Può essere utile nei casi in cui non vogliamo che le lezioni di test vengano escluse dai nostri risultati di ricerca. O viceversa, solo test. Ciò rende la tua ricerca più flessibile. È possibile specificare un filtro in base al percorso del file utilizzando un'espressione regolare. Ad esempio, dobbiamo trovare
percorso:src/*/*.js

Operazioni booleane

E, naturalmente, il culmine di tutta la creazione di filtri è combinare insieme questi argomenti utilizzando operazioni booleane. Per questo abbiamo AND, OR, AND NOT. Penso che questo dovrebbe bastarci. Ad esempio, creiamo una query di ricerca complessa: codice dalla produzione Java o Kotlin per un utente/organizzazione specifico:
repo:romankh3 AND (lingua:java OR lingua:kotlin) AND NON percorso:*/test/*
E questo, vi dico, è semplicemente incredibile. La richiesta di ricerca è scritta in modo così semplice, rapido, conciso e chiaro che non ci saranno problemi nella ricerca e nella lettura della richiesta.

Un piccolo ritiro

Anche se la nostra gioia non si è ancora calmata, vorrei tornare al 2018 e ricordare una cosa... Ricordate, quando tutti scoprirono che Microsoft stava acquistando GitHub, tutti pensavano che il progetto sarebbe stato sepolto? Che il suo destino sia la strada del secondo Skype? Come hanno iniziato tutti a spostare i propri progetti su GitLab? Ma siamo onesti, sulla scia di questo clamore ho creato e subito qualcosa. Ma a dire il vero non ho mai più visitato il luogo in cui trasferivo i progetti. E in qualche modo non voglio. E perché? Ci sono anche pensieri su questo. Lascia che ti ricordi che dopo la vendita di GitHub a Bill Gates, il progetto ha aggiunto la possibilità di avere repository privati ​​gratuitamente, sono state rilasciate GitHub Actions per il processo CI/CD e molto altro ancora. E ora anche un potente motore di ricerca. Questo non sembra un desiderio di affondare il progetto. È più come se Microsoft non volesse pagare le tasse sui profitti e abbia effettuato con successo un acquisto entro la fine dell'anno per oltre 9 miliardi di dollari 😁 E dopo tutto questo hanno deciso di sviluppare questo progetto. Ed è vero che per uno sviluppatore open source questo è un ottimo posto dove archiviare il proprio codice. Puoi sviluppare completamente il tuo prodotto senza uscire da GitHub.

Alla fine

Ho scritto l'articolo tutto d'un fiato. Mi piace davvero quando le parole e le emozioni scorrono come un geyser. Questo è ciò che fa avanzare la tecnologia. Quindi teniamo il dito sul polso e non lasciamo andare la situazione. Sono sicuro che ognuno di noi dovrebbe imparare ad usarlo. Per chiunque non si sia iscritto a GitHub, consiglio vivamente di farlo. Ne vale la pena. Come sempre, amici, non dimenticate di iscrivervi al mio canale Telegram , in cui unisco tutte le mie attività pubbliche. Oltre agli articoli che pubblico qui, lì scrivo post più brevi in ​​cui tocco argomenti che mi interessano del mondo dello sviluppo e dell'IT in generale. Ci sono già più di 800 abbonati lì! E, naturalmente, il mio account GitHub , dove pubblico tutti i progetti demo per articoli, aggiorno le mie librerie e sviluppo organizzazioni open source. Questo è tutto, grazie a tutti per aver letto, non salutiamoci 👌
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION