JavaRush /Java-Blog /Random-DE /GitHub-Codesuche: Mehr finden, weniger suchen – GitHub ha...

GitHub-Codesuche: Mehr finden, weniger suchen – GitHub hat eine Suchmaschine gestartet

Veröffentlicht in der Gruppe Random-DE
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. „GitHub-Codesuche: Mehr finden, weniger suchen“ – GitHub hat eine Suchmaschine gestartet – 1Dies 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.
Die Liste ist schon beeindruckend! Es stellt sich heraus, dass die Suchmaschine uns die Möglichkeit gibt, komplexe Suchanfragen zu erstellen, bei denen wir die Grenzen, entlang derer die Suche erforderlich ist, klar definieren können. Der zweite wichtige Teil der Engine ist die Code-Navigation 😳 Wofür sind Entwicklungsumgebungen praktisch und warum zahlen die Leute Geld dafür? Denn sie erleichtern uns das Leben, helfen uns bei der Navigation durch den Code, sodass die Geschwindigkeit beim Entwickeln und Lesen von Code steigt. Und GitHub bietet uns jetzt dieses coole Feature. Das ist unglaublich. Ja, ich weiß, dass es in GitHub im Moment bereits so etwas wie eine Navigation gibt, aber die Funktionalität ist noch sehr kurz und grob. Das heißt, ohne Entwicklungsumgebung können Sie suchen, wo bestimmte Methoden verwendet werden und wo sie definiert wurden. Es ist einfach wunderbar. GitHub, du machst mich glücklich. Eine Navigation für Importe in Klassen ist ebenfalls verfügbar. Dies löst viele Probleme beim Auffinden und Studieren einer bestimmten Bibliothek auf GitHub. Nun wird dieser Prozess um ein Vielfaches beschleunigt. Und es ist alles kostenlos. Einfach ausgezeichnet. Wird er gefragt sein? Ich bin sicher, ja!

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: „GitHub-Codesuche: Mehr finden, weniger suchen“ – GitHub hat eine Suchmaschine gestartet – 2Sie 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.

Ein kleiner Rückzugsort

Obwohl unsere Freude noch nicht abgekühlt ist, würde ich gerne ins Jahr 2018 zurückkehren und mich an etwas erinnern ... Erinnern Sie sich daran, als alle herausfanden, dass Microsoft GitHub kaufte, dachten alle, dass das Projekt begraben würde? Dass sein Schicksal der Weg des zweiten Skype ist? Wie haben alle angefangen, ihre Projekte auf GitLab zu verschieben? Aber seien wir ehrlich, im Zuge dieses Hypes habe ich etwas geschaffen und etwas erlitten. Aber ehrlich gesagt habe ich den Ort, an den ich die Projekte verlegt habe, nie wieder besucht. Und irgendwie will ich es nicht. Und warum? Auch dazu gibt es Gedanken. Ich möchte Sie daran erinnern, dass das Projekt nach dem Verkauf von GitHub an Bill Gates die Möglichkeit hinzugefügt hat, private Repositories kostenlos zu haben, GitHub-Aktionen für den CI/CD-Prozess veröffentlicht wurden und vieles mehr. Und jetzt auch eine leistungsstarke Suchmaschine. Das klingt nicht nach dem Wunsch, das Projekt zum Scheitern zu bringen. Es ist eher so, dass Microsoft keine Steuern auf Gewinne zahlen wollte und bis Ende des Jahres einen erfolgreichen Kauf für mehr als 9 Milliarden Dollar getätigt hat 😁 Und nach all dem haben sie beschlossen, dieses Projekt zu entwickeln. Und es stimmt, dass dies für einen Open-Source-Entwickler ein großartiger Ort ist, um seinen Code zu speichern. Sie können Ihr Produkt vollständig entwickeln, ohne GitHub zu verlassen.

Am Ende

Ich habe den Artikel in einem Rutsch geschrieben. Ich liebe es wirklich, wenn Worte und Emotionen wie ein Geysir fließen. Das ist es, was die Technologie vorantreibt. Wir bleiben also am Puls der Zeit und lassen die Situation nicht los. Ich bin sicher, dass jeder von uns lernen sollte, es zu nutzen. Allen, die sich noch nicht bei GitHub angemeldet haben, empfehle ich dringend, dies zu tun. Das ist es wert. Wie immer, Freunde, vergessen Sie nicht, meinen Telegram-Kanal zu abonnieren , in dem ich alle meine öffentlichen Aktivitäten zusammenfasse. Zusätzlich zu den Artikeln, die ich hier veröffentliche, schreibe ich dort kürzere Beiträge, in denen ich Themen anspreche, die mich aus der Welt der Entwicklung und der IT im Allgemeinen interessieren. Es gibt dort bereits mehr als 800 Abonnenten! Und natürlich mein GitHub-Konto , auf dem ich alle Demoprojekte für Artikel veröffentliche, meine Bibliotheken aktualisiere und Open-Source-Organisationen entwickle. Das ist alles, vielen Dank fürs Lesen, verabschieden wir uns nicht 👌
Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION