Hallo zusammen, liebe Freunde! Als Liebhaber neuer Funktionen auf GitHub war es für mich sehr interessant zu erfahren, dass wir bald alle in der Lage sein werden, die GitHub-Codebasis schnell und effizient zu durchsuchen. Dies kann sehr praktisch sein, insbesondere wenn Sie eine ausgefeilte Möglichkeit zur Verwendung eines Werkzeugs finden müssen. Dies spiegelt sich insbesondere in der Tatsache wider, dass in Russland ein zukünftiger Konkurrent von GitHub eröffnet wurde. Daher sollte sich GitHub auf keinen Fall auf seinen Lorbeeren ausruhen, obwohl sie zweifellos Marktführer sind. Wir müssen weitermachen und uns weiterentwickeln, sonst dauert es nicht einmal eine Stunde und die Konkurrenz wird aufholen und uns davonmachen. Und lassen Sie es nicht so unglaublich erscheinen. Als Beispiel: Wie viele Menschen nutzen noch Nokia-Handys? Wer weiß überhaupt, dass sie Telefone hergestellt haben? Früher waren sie einfach unerreichbare, unangefochtene Marktführer ... Und jetzt tauchen sie irgendwo im Bereich statistischer Fehler auf.
Erster Eindruck
GitHub hat ein Projekt erstellt, in dem Sie Ihren Code und die Milliarden von auf GitHub veröffentlichten Codezeilen durchsuchen, navigieren und analysieren können. Es ist wichtig zu beachten, dass die Suche skalierbar, schnell und genau ist. Es wurde von Grund auf speziell für die Codesuche erstellt. Die Navigation funktioniert für 10 große Programmiersprachen ohne Einstellungen (wir hoffen, dass die Liste in Zukunft wächst). Sie können mit einem regulären Ausdruck suchen, was sehr cool ist. Weitere Filter sind ebenfalls verfügbar:- nach Organisation;
- nach Programmiersprachen;
- durch einen bestimmten Eigentümer;
- nach Dateierweiterung;
- durch regulären Ausdruck.
Lassen Sie uns ausführlicher über die Suche sprechen
Es ist sehr interessant, einen Blick darauf zu werfen und selbst herauszufinden: Ist es so bequem, wie man sagt? Diese Funktion ist derzeit nicht öffentlich verfügbar und Sie können sich über den Link zur Warteliste hinzufügen . Wir füllen dort alle Punkte aus, die Fragen sind einfach, ich werde sie hier nicht beschreiben. Dadurch werden wir auf die Warteliste gesetzt und gehen weiter. Daher lautet die Antwort: Sie müssen einfach warten. Sobald ich hinzugefügt bin, werde ich euch auf jeden Fall alles zeigen. Zögern Sie nicht, fügen Sie sich selbst hinzu, damit Sie es später herausfinden und zu Ihrer Freude nutzen können.) Und natürlich ist es schade, dass Sie das neue Tool nicht sofort ausprobieren können, also analysieren wir deren Dokumentation und beschreiben sie in Erfahren Sie mehr darüber, wie wir dieses Tool für unsere Arbeit nutzen können. Nun zur Suche. Es werden Klassen und Konstrukte verwendet, die in der Bibliothek , die ich schreibe, sinnvoll sind . Dadurch wird es für mich klarer und einfacher, und ich hoffe, dass es auch für Sie einfacher wird.Einfache Suche
ImageComparison ist die einfachste Suche, die genau mit der Abfrage in Dateinamen und deren Inhalten sucht. Hier scheint alles sehr einfach zu sein. Wenn wir anhand des Klassennamens eindeutig herausfinden möchten, wo sie deklariert ist und wo sie verwendet wird, hilft uns eine solche Suche dabei. Wenn Sie mehrere durch Leerzeichen getrennte Wörter eingeben, wird als Ergebnis eine Suche nach allen Wörtern separat durchgeführt: Bildvergleich . Das bedeutet, dass Dateien und Code sowohl für Bild als auch für Vergleich gefunden werden . Wenn Sie nach einer Zeichenfolge suchen müssen, die Leerzeichen enthält, müssen Sie nur Anführungszeichen verwenden. Beispiel: „ImageComparison-Vergleich = new ImageComparison()“ und dann wird bei der Suche die gesamte Zeichenfolge gefunden. Zum Escapen verwenden wir wie immer „\“. Bisher ist alles intuitiv und oft wird es auch so gemacht. Darüber hinaus können wir dieser einfachen Suche Filter hinzufügen. Lassen Sie uns daher über jeden von ihnen sprechen. Dies sind logische „UNDs“ für den Filter, den wir bereits erstellt haben.Nach Repository filtern
Sobald unser Basisfilter fertig ist, können wir unsere Suche eingrenzen und nach einem bestimmten Repository suchen, was sehr praktisch ist. Sie müssen nicht nach dem Ordner suchen, in dem sich die Klasse befindet, Sie können einfach schreiben:
repo:romankh3/image-comparison ImageComparisonResult
Wo wir repo:${user_name}/${repo_name} angeben müssen . Sie können auch mehrere Repositorys durchsuchen, indem Sie einfach ein ODER hinzufügen:
repo:romankh3/image-comparison ODER repo:romankh3/usage-image-comparison ImageComparisonResult
Wie auf GitHub angegeben, unterstützen sie derzeit keine Suche in Repositories, in denen der Name als regulärer Ausdruck angegeben wird... Das bedeutet, dass sie planen, eine solche Funktion hinzuzufügen, und das bedeutet, dass das Projekt nicht beim Deklarierten stehen bleibt Funktionalität und wird weiterentwickelt.
Nach Organisation filtern
Die Suche nach Organisation oder Benutzer erfolgt genauso wie die Suche nach Repository, nur dass das Schlüsselwort nicht repo , sondern org lautet :
org:romankh3 Bildvergleich
Anschließend durchsucht die Suche alle Repositories des Benutzers/der Organisation.
Filtern Sie nach Programmiersprachen
Sie können auch eine Suche nach Dateien in einer bestimmten Programmiersprache festlegen. Hier ist der Aufbau derselbe wie für das Repository und die Organisation, nur das Schlüsselwort ist Sprache :
Sprache: Java ImageComparison
Genau wie das Repository unterstützt es die Suche in mehreren Sprachen gleichzeitig mit dem Schlüsselwort OR:
language:java ODER language:ruby ImageComparison
Eine vollständige Liste der von GitHub unterstützten Sprachen finden Sie hier . Ich frage mich, ob BrainFuck da ist? 😂
Nach Dateipfad filtern
Jede Datei im Projekt hat ihren eigenen Pfad und Sie können sie auch durchsuchen, indem Sie einen Filter hinzufügen. Es gibt beispielsweise eine Datei ImageComparisonResult mit dem Pfad:
src/main/java/com/github/romankh3/image/comparison/model/ImageComparisonResult.java
Um also alle Klassen zu finden, deren Pfad mit src/main/java/com/github/romankh3/image beginnt , benötigen Sie:
Pfad:src/main/java/com/github/romankh3/image
Kann in Fällen nützlich sein, in denen wir nicht möchten, dass Testklassen aus unseren Suchergebnissen ausgeschlossen werden. Oder umgekehrt, nur Tests. Dies macht Ihre Suche flexibler. Ein Filter nach Dateipfad kann mithilfe eines regulären Ausdrucks angegeben werden. Zum Beispiel müssen wir finden
Pfad:src/*/*.js
Boolesche Operationen
Und natürlich besteht der Höhepunkt aller Filterkonstruktionen darin, diese Materie mithilfe boolescher Operationen zu kombinieren. Dafür gibt es UND, ODER UND NICHT. Ich denke, das sollte für uns ausreichen. Erstellen wir zum Beispiel eine komplexe Suchabfrage: Code aus der Java- oder Kotlin-Produktion für einen bestimmten Benutzer/eine bestimmte Organisation:
repo:romankh3 AND (Sprache:Java ODER Sprache:Kotlin) UND NICHT Pfad:*/test/*
Und das, sage ich Ihnen, ist einfach unglaublich. Die Suchanfrage ist so einfach, schnell, prägnant und klar formuliert, dass es beim Suchen und Lesen der Anfrage keine Probleme geben wird.
GO TO FULL VERSION