Suchcode in einem Github-Projekt


272

Gibt es eine Möglichkeit, im Code eines Github-Projekts nach etwas zu suchen?

Ich könnte die Quelle abrufen und lokal abrufen, aber ich habe mich gefragt, ob dies über das Webinterface oder eine Alternative eines Drittanbieters möglich ist.

Ideen?


auch checkout code.ohloh.net :)
obimod

Versuchen Sie
am

Antworten:


255

Update Januar 2013: Eine brandneue Suche ist da! , basierend auf elasticsearch.org :

Eine Suche nach stat innerhalb des Ruby Repo wird als ausgedrückt stat repo:ruby/rubyund funktioniert jetzt nur noch mit TM .
(Der Repo-Name unterscheidet nicht zwischen Groß- und Kleinschreibung: test repo:wordpress/wordpressGibt dasselbe zurück wie test repo:Wordpress/Wordpress)

Geben Sie hier die Bildbeschreibung ein

Wird geben:

Geben Sie hier die Bildbeschreibung ein

Und Sie haben viele andere Beispiele für die Suche, basierend auf Followern oder Gabeln oder ...


Update Juli 2012 (alte Zeiten der Lucene-Suche und der schlechten Code-Indizierung, kombiniert mit einer kaputten GUI, werden hier für das Archiv aufbewahrt):

Die Suche (basierend auf SolrQuerySyntax ) ist jetzt freizügiger und das gefürchtete " Invalid search query. Try quoting it." ist weg, wenn der Standardsuch- Selektor "Alles" verwendet wird :)

(Ich nehme an, wir können alle als Tim Pease , der in einem seiner Ziele "das Hacken auf verbesserte Sucherfahrungen für alle GitHub-Eigenschaften " hatte, und ich habe diese Frage zum Stapelüberlauf zu der Zeit erwähnt;))

Hier ist ein Beispiel für einen Grep im Ruby-Code: Er sucht nach Repos und Benutzern, aber auch nach dem, was ich zuerst suchen wollte: dem Code!

GitHub freizügigere Suchergebnisse


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

Sie können das GitHub-Formular für die erweiterte Suche verwenden :

  • Wählen Sie Code, Repositoriesoder Usersaus der Drop-down und
  • Verwenden Sie die entsprechenden Präfixe für diesen Suchtyp .

Verwenden Sie beispielsweise die repo:username/repo-nameDirektive, um die Suche auf ein Code- Repository zu beschränken.
Die erste " Advanced Search" Seite enthält den Abschnitt:

Code Suche:

Die Codesuche durchsucht den gesamten Code, der öffentlich auf GitHub gehostet wird. Sie können auch filtern nach:

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

Wenn Sie also die CodeSuchauswahl " " auswählen , funktioniert Ihre Abfrage, die nach einem Text in einem Repo sucht, wie folgt:

Gute Suchauswahl


Was von GitHub unglaublich wenig hilfreich ist, ist Folgendes :

  • Wenn Sie vergessen, die richtige Suchauswahl zu Codetreffen (hier " "), wird eine Fehlermeldung angezeigt:
    " Invalid search query. Try quoting it."

Falsche Auswahl für den Code-Filer

  • Die Fehlermeldung hilft Ihnen überhaupt nicht.
    Keine Menge von " quoting it" bringt Sie aus diesem Fehler heraus.

  • Sobald Sie diese Fehlermeldung erhalten, erhalten Sie nicht die Abschnitte, die Sie an die richtige Zuordnung zwischen den Suchwählern (" Repositories", " Users" oder " Language") und den (rechten) Suchfiltern (hier " repo:") erinnern .
    Bei jedem weiteren Versuch werden diese Zuordnungen (Selektorfilter) nicht wieder angezeigt. Nur die oben angezeigte Fehlermeldung ...
    Die einzige Möglichkeit, diese Arrays wiederherzustellen, besteht darin, auf das Advance SearchSymbol " " zu klicken :

Erweiterte Suchsymbol auf GitHub

  • Die " Everything" Suchauswahl, die die Standardeinstellung ist, ist tatsächlich die falsche für alle Suchfilter! Außer " language:" ...
    (Sie könnten sich vorstellen / annehmen, dass " Everything" Ihnen helfen würde repo:, den Suchwähler auszuwählen, der tatsächlich mit dem Suchfilter funktioniert " ", aber nein. Das wäre zu einfach)

  • Sie können den gewünschten Suchwähler nicht Advance Searchallein über das Feld " " angeben !
    (aber Sie können für " language:", obwohl " Search Language" ein weiteres Kombinationsfeld direkt unter dem " Search for" Typ "ist ...)

Falsche Suchauswahl


Die Benutzererfahrung ist also normalerweise wie folgt:

  • Sie klicken auf " Advanced Search", werfen einen Blick auf diese Filterabschnitte und bemerken einen, den Sie verwenden möchten: " repo:"
  • Sie führen eine erste erweiterte Suche " repo:jruby/jruby stat" durch, jedoch mit der Standard-Suchauswahl " Everything"
    => FAIL! (und die Arrays mit der Zuordnung "Selectors-Filters" sind weg )
  • Sie bemerken, dass "Suchen nach" Selektor-Ding, wählen Sie die erste Wahl " Repositories" ("Dah! Ich möchte in Repositories suchen ...")
    => FAIL!
  • niedergeschlagen wählen Sie die nächste Auswahl an Selektoren (hier " Users") aus, ohne auf den Selektor zu schauen, nur um es noch einmal zu versuchen ...
    => FAIL!
  • "Scheiß drauf, die GitHub-Suche ist kaputt ! Ich bin hier raus!"
    ...
    (Die erweiterte GitHub-Suche ist eigentlich nicht kaputt. Nur die GUI ist ...)

Um es noch einmal zusammenzufassen: Wenn Sie als OP Ben Humphreys nach etwas im Code eines Github-Projekts Codesuchen möchten, vergessen Sie nicht, die Suchauswahl auszuwählen.


Sind Sie sicher, ich habe versucht, repo:"jruby/jruby" stat repo:"jruby" stat jruby: statkeine davon funktioniert
Tom H

@TomH: Auf den ersten Blick könnte es ein Fehler auf GitHub Seite sein, wie bei kommentiert superuser.com/a/179900/141
VonC

1
@DannyStaple Nun, sie scheinen sich des Problems bewusst zu sein, wenn Sie sich die Mission ansehen, die in github.com/blog/1116-tim-pease-is-a-githubber beschrieben wird : "Tim wird höchstwahrscheinlich [...] Hacken auf verbesserte Sucherfahrungen für alle GitHub-Eigenschaften ".
Stellen

9
FWIW Ich habe GitHub kontaktiert, weil ich keine Suchergebnisse erhalten habe, als ich die Suche auf meine Repos beschränkt habe. Tim Pease antwortete, dass sie Probleme mit dem Volumen der Repo-Indizes hatten, weshalb sie auf Sharded-Index-Server migriert haben. Es gibt keine ETA, wenn alle Repos migriert werden.
M. Dudley

3
Ich habe gerade den Rat dieser Antwort verwendet und es funktioniert auch für mich, aber ich muss noch eine Einschränkung hinzufügen. Der Repo-Name sollte immer in Kleinbuchstaben geschrieben werden, auch wenn GitHib ihn überall anders auflistet. Versuchen Sie beispielsweise (nach dem Festlegen der Code-Dropdown-Liste usw. wie oben) dieselbe Suche mit: repo: wordpress / wordpress vs repo: WordPress / WordPress ... nur die erste liefert Ergebnisse.
Ethanpil

22

Aktuelle private Repositories verfügen über ein Suchfeld zum Durchsuchen dieses Repos.

Geben Sie hier die Bildbeschreibung ein

Es ist jedoch verwirrend, dass diese Funktionalität öffentlichen Repositorys nicht zur Verfügung steht.


1
Ich frage mich, ob dies ein wenig kommerzieller Schritt ist, um die Leute dazu zu bringen, auf die kostenpflichtige Version zu aktualisieren. Klingt nicht nach Github, aber trotzdem.
Sylvain

3
@Sylvain Es wird nicht angenommen, dass dies als Ermutigung zum Upgrade dient, da Sie dieses Suchfeld auch nach dem Upgrade nicht für öffentliche Repositorys erhalten. Stattdessen denke ich, dass die Hauptsuche einen Index verwendet, der keine privaten Repositorys enthält. Damit Sie beim Bezahlen eines privaten Repositorys nicht an Funktionalität verlieren, mussten sie eine andere Möglichkeit hinzufügen, nur dieses private Repository zu durchsuchen, daher die zusätzliche Textfeld.
Avernet

2
Stellen Sie sich vor, sie haben einen Suchindex für jede Codezeile in jedem Repo! Wahnsinnig! Deshalb machen sie es nur für private Repos.
Jonny Nott

1
Die Suche befindet sich jetzt in der Kopfzeile, genau wie die globale Suche.
Tib

20

AKTUALISIEREN

Der unten stehende Lesezeichen-Hack ist aufgrund von XHR-Problemen und API-Änderungen fehlerhaft.

Zum Glück hat Github jetzt "A Whole New Code Search", das die Arbeit hervorragend macht.


Kasse dieses Voodoo: Github Code Search Userscript .

Befolgen Sie die Anweisungen dort, oder wenn Sie es hassen, Ihren Browser mit Skripten und Erweiterungen aufzublähen, verwenden Sie mein mit Lesezeichen versehenes Bundle des Benutzerskripts:

javascript:(function(){var s='https://github.com/skratchdot/github-code-search.user.js/raw/master/github-code-search.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 eines neuen Lesezeichens. Wechseln Sie zu jedem Github Repo, klicken Sie auf das Lesezeichen und bam : in-Seite, ajaxified-Suche .

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

Vor dem Lesezeichen

Abrakadabra...

Nachher - Schauen Sie in der zweiten Menüleiste nach den Registerkarten ganz links nach: Dateien, Commits, Zweige ...

Hier ist eine Beispielsuche aus dem mit Anmerkungen versehenen ECMAScript 5.1-Spezifikationsrepository:

Beispielsuche im mit Anmerkungen versehenen ECMAScript 5.1-Spezifikationsrepository


Wenn ich das Plugin (Chrome) verwende, funktioniert es im Scratchdot / Github-Code-Search-Repo einwandfrei, aber in keinem anderen Repo.
Forforf

Es sollte auf jeder Homepage eines Repos funktionieren. Vielleicht versuchen Sie es von einer anderen Seite? Ich habe in meinem Beitrag einen Screenshot einer Beispielsuche in einem anderen Repository veröffentlicht.
fny

Aha! Ich habe tatsächlich herausgefunden, warum diese Suchvorgänge möglicherweise fehlgeschlagen sind: Ein Repo muss warten, bis es indiziert ist. Angesichts der zig aktiven Repositories vermute ich, dass dies einige Zeit in Anspruch nimmt.
fny

2
@ user456584 das sind neuigkeiten für mich. Vielleicht möchten Sie auch Google und Mozilla informieren.
fny

2
Ich habe herausgefunden, warum das Plugin nicht funktioniert, weil der Repo-Name in Kleinbuchstaben geschrieben werden muss. (Siehe meinen Kommentar zu VonCs Antwort oben). Ich habe bereits einen Patch auf GitHub eingereicht, hoffentlich wird der ursprüngliche Autor ihn sehen. github.com/skratchdot/github-code-search.user.js/pull/5
ethanpil

10

Während die Antwort von @ VonC für einige Repositorys funktioniert, können Sie dies leider für viele Repositorys derzeit nicht. 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 um Unterstützung bitten:

Von: Tim Pease
Wir haben aufgehört, neu geposteten Code in unseren Codesuchindex aufzunehmen. Das Codevolumen ist aus unserem aktuellen Suchindex herausgewachsen, und wir arbeiten an einer skalierbareren Sucharchitektur. Es tut mir leid für den Ärger. Wir haben keine Schätzung, wann dieser neue Suchindex verfügbar sein wird, aber wenn er fertig ist, wird ein Blog-Beitrag veröffentlicht (https://github.com/blog).

Es ist ärgerlich, dass es keine andere Möglichkeit gibt, festzustellen, welche Repositorys nicht indiziert sind, als das Fehlen von Ergebnissen (die auch von einer schlechten Abfrage stammen könnten).

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

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


Sie sollten zumindest erwähnen, dass einige Suchergebnisse weggelassen werden können. Es ist total beschissen, wenn ich Code umgestalte und nach Vorkommen von Code suche, die dort sind, aber von GitHub nicht erwähnt werden.
Nikodemuz


0

Ich suche den Quellcode in Github Repositories mit der kostenlosen Sourcegraph Chrome-Erweiterung ... Aber ich habe Chrome heruntergeladen. Zuerst wusste ich, dass andere Browser dies unterstützen, wie - und vielleicht nur - Firefox.

Ich habe die Chrome-Erweiterungsdokumente von SourceForge durchgesehen und mir dann genau angesehen, was ich für die Suche nach Verzeichnisnamen mit der Github-Suchmaschine selbst benötigte, indem ich einige der Codebase-Suchdokumente von Github gelesen habe

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.