430 Stimmen

Code innerhalb eines Github-Projekts suchen

Gibt es eine Möglichkeit, nach etwas innerhalb des Codes eines Github-Projekts zu suchen?

Ich könnte den Quellcode abrufen und lokal durchsuchen, aber ich frage mich, ob dies über die Weboberfläche oder eine Alternative eines Drittanbieters möglich ist.

Ideen?

307voto

VonC Punkte 1117238

Update Dez. 2021: Die Suche hat erneut verbessert worden mit Suche nach einer exakten Zeichenkette, mit Unterstützung für Teilstring-Übereinstimmungen und Sonderzeichen oder Regexps.

regex

Aber nur auf cs.github.com und noch in der Beta-Phase (es gilt die Warteliste)


Update Januar 2013: a Die brandneue Suche ist da! auf der Grundlage elasticsearch.org :

Eine Suche nach stat innerhalb des ruby repo wird wie folgt ausgedrückt stat repo:ruby/ruby und wird jetzt einfach funktionieren TM .
(Der Name des Projektarchivs unterscheidet nicht zwischen Groß- und Kleinschreibung: test repo:wordpress/wordpress gibt dasselbe zurück wie test repo:Wordpress/Wordpress )

enter image description here

Wird geben:

enter image description here

Und es gibt viele andere Beispiele für die Suche, die auf bei Anhängern , oder auf Gabeln , oder...


Aktualisierung Juli 2012 (alte Tage der Lucene-Suche und schlechte Code-Indizierung, kombiniert mit kaputter GUI, hier für das Archiv aufbewahrt):

Die Suche (basierend auf SolrQuerySyntax ) ist jetzt freizügiger und die gefürchtete " Invalid search query. Try quoting it. " ist verschwunden, wenn man die Standard Suchselektor "Alles":)

(Ich nehme an, wir können alle als Tim Pease der als eines seiner Ziele hatte "Hacken auf verbesserten Suchergebnissen für alle GitHub-Eigenschaften ", und Ich habe diese Stack Overflow-Frage erwähnt zu der Zeit ;) )

Hier ist eine Illustration eines grep innerhalb des Ruby-Codes: es wird nach Repos und Benutzern gesucht, aber auch nach dem, was ich in erster Linie suchen wollte: dem Code!

GitHub more permissive search results


Erste Antwort und Illustration der früheren Ausgabe (Sept. 2012 => März 2012)

Sie können die erweiterte Suche GitHub-Formular :

  • Wählen Sie Code , Repositories o Users aus der Dropdown-Liste und
  • verwenden Sie die entsprechende Präfixe, die für diesen Suchtyp aufgeführt sind .

Verwenden Sie zum Beispiel die repo:username/repo-name Richtlinie, um die Suche auf eine Code Repository.
Die ursprüngliche " Advanced Search "Seite enthält den Abschnitt:

Código Suche:

Die Codesuche durchsucht den gesamten öffentlich auf GitHub gehosteten Code. Sie können auch filtern nach :

  • die Sprache language:
  • den Namen des Repositorys (einschließlich des Benutzernamens) repo:
  • den Dateipfad path:

Wenn Sie also die Option " Code "Suchselektor, dann funktioniert Ihre Abfrage, die nach einem Text innerhalb eines Repos sucht:

Good Search selector


Was ist unglaublich nicht hilfreich von GitHub ist das:

  • wenn Sie vergessen haben, den richtigen Suchselektor zu verwenden (hier " Code "), erhalten Sie eine Fehlermeldung:
    " Invalid search query. Try quoting it. "

Wrong selector for the code filer

  • die Fehlermeldung hilft Ihnen überhaupt nicht weiter.
    Keine noch so große Menge von " quoting it " hilft Ihnen, diesen Fehler zu vermeiden.

  • Sobald Sie diese Fehlermeldung erhalten, werden Sie nicht mehr an die richtige Zuordnung der Suchbegriffe erinnert. Selektoren (" Repositories ", " Users " oder " Language ") und die (rechte) Suche filtert (hier " repo: ").
    Bei jedem weiteren Versuch werden diese Verknüpfungen (Selektoren-Filter) nicht mehr angezeigt. Nur die Fehlermeldung, die Sie oben sehen...
    Die einzige Möglichkeit, diese Arrays zurückzubekommen, besteht darin, auf die Schaltfläche " Advance Search Symbol ":

Advance Search Icon on GitHub

  • die " Everything "Suchselektor, der standardmäßig verwendet wird, ist eigentlich der falsch einer für todos der Suchfilter! Außer " language: "...
    (Man könnte sich vorstellen/vermuteten, dass " Everything " würde Ihnen helfen, einen Suchselektor auszuwählen, der mit dem Suchfilter funktioniert " repo: ", aber nein. Das wäre zu einfach)

  • können Sie den gewünschten Suchselektor nicht über das Feld " Advance Search " Feld allein!
    (aber Sie können für " language: ", auch wenn " Search Language " ist ein weiteres Kombinationsfeld direkt unter dem " Search for "Typ" ein...)

Wrong search selector


Die Erfahrung des Nutzers sieht also in der Regel folgendermaßen aus:

  • klicken Sie auf " Advanced Search ", sehen Sie sich die Abschnitte mit den Filtern an, und entdecken Sie einen, den Sie verwenden möchten: " repo: "
  • machen Sie eine erste erweiterte Suche " repo:jruby/jruby stat ", aber mit dem Standard-Suchselektor " Everything "
    \=> FAIL ! (und die Arrays, die die Assoziation "Selectors-Filters" anzeigen, sind gegangen )
  • Wenn Sie das "Suchen nach"-Symbol sehen, wählen Sie die premier Auswahl " Repositories "("Dah! Ich möchte innerhalb der Repositories suchen...")
    \=> FAIL !
  • entmutigt, wählen Sie die nächste Auswahl an Selektoren aus (hier: " Users "), ohne den besagten Selektor überhaupt anzusehen, nur um es noch einmal zu versuchen...
    \=> FAIL !
  • "Scheiß drauf, die GitHub-Suche ist gebrochen ! Ich haue ab!"
    ...
    (Die erweiterte Suche von GitHub ist eigentlich nicht kaputt, nur die Benutzeroberfläche ist es...)

Also, um zusammenzufassen, wenn Sie "grep für etwas innerhalb eines Github-Projekts Code", wie die OP wollen Ben Humphreys vergessen Sie nicht, die Option " Code " Suchselektor...

82voto

kiatng Punkte 2164

Um ein Repository zu durchsuchen, fügen Sie die URL-Parameter hinzu /search?q=search_terms an der Wurzel des Repos, zum Beispiel:

https://github.com/bmewburn/vscode-intelephense/search?q=phpstorm

enter image description here

Im obigen Beispiel liefert es 2 Ergebnisse in Código und 160 ergibt Ausgaben .

23voto

Patrick Linskey Punkte 1116

Neuere private Repositories haben ein Suchfeld für die Suche in diesem Repo.

enter image description here

Verblüffenderweise scheint diese Funktion jedoch nicht für öffentliche Repositories verfügbar zu sein.

20voto

fny Punkte 27350

UPDATE

Der folgende Bookmarklet-Hack ist aufgrund von XHR-Problemen und API-Änderungen nicht mehr funktionsfähig.

Zum Glück hat Github jetzt "Eine ganz neue Codesuche" das diese Aufgabe hervorragend erfüllt.


Sehen Sie sich dieses Voodoo an: Github-Code-Suche Benutzerskript .

Folgen Sie den Anweisungen dort, oder wenn Sie es hassen, Ihren Browser mit Skripten und Erweiterungen zu belasten, verwenden Sie mein mit Lesezeichen versehenes Bundle des Benutzerskripts:

javascript:(function(){var s='https://raw.githubusercontent.com/skratchdot/github-enhancement-suite/master/build/github-enhancement-suite.user.js',t='text/javascript',d=document,n=navigator,e;(e=d.createElement('script')).src=s;e.type=t;d.getElementsByTagName('head')[0].appendChild(e)})();doIt('');void('');

Speichern Sie die obige Quelle als URL für ein neues Lesezeichen. Navigieren Sie zu einer beliebigen Github Repo, klicken Sie auf das Lesezeichen und bam : seiteninterner, ajaxifizierter Code Suche .

CAVEAT Github muss ein Repo indizieren, bevor Sie es durchsuchen können.

Before the Bookmarklet

Abrakadabra...

After - Look in the second menubar after the leftmost tabs: Files, Commits, Branches...

Hier ein Suchbeispiel aus der kommentierten ECMAScript 5.1-Spezifikation Repository:

Sample search in the annotated ECMAScript 5.1 specification repository

11voto

studgeek Punkte 13264

Während die Antwort von @VonC für einige Repositories funktioniert, ist das bei vielen Repositories leider nicht der Fall. Github indiziert sie einfach nicht (wie ursprünglich von @emddudley kommentiert). Sie haben dies nirgendwo auf ihrer Website angegeben, aber sie werden es Ihnen sagen, wenn Sie den Support fragen:

Von: Tim Pease
Wir haben aufgehört, neu veröffentlichten Code in unseren Codesearch-Index aufzunehmen. Die Menge des Codes ist über unseren derzeitigen Suchindex hinausgewachsen, und wir arbeiten an einer skalierbareren Sucharchitektur. Ich entschuldige mich für die Verärgerung. Wir haben keine Schätzung, wann dieser neue Suchindex einsatzbereit sein wird, aber wenn er fertig ist, wird ein Blogbeitrag veröffentlicht (https://github.com/blog).

Ärgerlicherweise gibt es keine Möglichkeit zu erkennen, welche Repositories nicht indiziert sind, außer dass keine Ergebnisse vorliegen (was auch an einer fehlerhaften Abfrage liegen kann).

Es gibt auch keine andere Möglichkeit, dieses Problem zu verfolgen, als darauf zu warten, dass sie es bloggen (oder hier auf SO zu beobachten).

Von: Tim Pease
Ich fürchte, unser Issue Tracker ist intern, aber wir können Sie benachrichtigen, sobald der neue Suchindex einsatzbereit ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X