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. Ciò è 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.
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: devi 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.
GO TO FULL VERSION