web-dev-qa-db-fra.com

Rechercher un code dans un projet Github

Existe-t-il un moyen de rechercher quelque chose dans le code d'un projet Github?

Je pourrais extraire la source et la localiser localement, mais je me demandais si c'était possible via l'interface Web ou une alternative tierce.

Des idées?

249
Ben Humphreys

Mise à jour de janvier 2013: a ne nouvelle recherche est arrivée!, sur la base de - elasticsearch.org:

Une recherche de stat dans le Ruby _ repo sera exprimée sous la forme stat repo:Ruby/ruby, et va maintenant juste travaillerTM.
(le nom du repo n'est pas sensible à la casse: test repo:wordpress/wordpress retourne la même chose que test repo:Wordpress/Wordpress )

enter image description here

Va donner:

enter image description here

Et vous avez beaucoup d'autres exemples de recherche, basés sur les suiveurs , ou sur les fourchettes , ou ...


Mise à jour de juillet 2012 (recherche ancienne de Lucene et index de code médiocre, associé à une interface graphique défectueuse, conservés ici pour les archives):

La recherche (basée sur SolrQuerySyntax ) est maintenant plus permissive et le redoutable "_Invalid search query. Try quoting it._" a disparu lorsque vous utilisez le sélecteur de recherche par défaut "Tout ":)

(Je suppose que nous pouvons tous que Tim Pease, qui avait dans l'un de ses objectifs "piratage amélioré expériences de recherche pour toutes les propriétés GitHub ", et j'ai mentionné cette question de Stack Overflow à l'époque;))

Voici une illustration d'un grep dans le code Ruby: il recherchera les dépôts et les utilisateurs, mais également ce que je voulais rechercher en premier lieu. : le code!

GitHub more permissive search results


Réponse initiale et illustration de l'ancien numéro (septembre 2012 => mars 2012)

Vous pouvez utiliser le formulaire de recherche avancée GitHub :

  • Choisissez Code, Repositories ou Users dans le menu déroulant et
  • utilisez les préfixes correspondants répertoriés pour ce type de recherche .

Par exemple, utilisez la directive repo:username/repo-name pour limiter la recherche à un code référentiel.
La page initiale "_Advanced Search_" comprend la section:

Code Recherche:

La recherche de code examinera tout le code hébergé publiquement sur GitHub. Vous pouvez également filtrer par:

  • la langue language:
  • le nom du référentiel (y compris le nom d'utilisateur) repo:
  • le chemin du fichier path:

Donc, si vous sélectionnez le sélecteur de recherche "Code", votre requête de recherche de texte dans un référentiel fonctionnera:

Good Search selector


Ce qui est incroyablement inutile dans GitHub est-ce que:

  • si vous oubliez de mettre le bon sélecteur de recherche (ici "Code"), vous obtiendrez un message d'erreur:
    "(Invalid search query. Try quoting it."

Wrong selector for the code filer

  • le message d'erreur ne vous aide pas du tout.
    Aucune quantité de "_quoting it_" ne vous sortira de cette erreur.

  • une fois que vous obtenez ce message d'erreur, vous ne recevez pas les sections vous rappelant la bonne association entre les sélecteurs de recherche ("Repositories", "Users "ou" Language ") et la (droite) recherche filtre (ici," _repo:_ ").
    Toute autre tentative que vous ferez n’affiche plus ces associations (filtres de sélection). Seul le message d'erreur que vous voyez ci-dessus ...
    Le seul moyen de récupérer ces tableaux consiste à cliquer sur l'icône "_Advance Search_":

Advance Search Icon on GitHub

  • le sélecteur de recherche "Everything", qui est la valeur par défaut, est en fait le incorrect pour tout de la recherche filtres! Sauf "_language:_" ...
    (Vous pouvez imaginer/supposer que "Everything" vous aiderait à choisir le sélecteur de recherche qui fonctionne réellement avec le filtre de recherche "_repo:_", mais non, ce serait trop facile)

  • vous ne pouvez pas spécifier le sélecteur de recherche souhaité uniquement à l'aide du champ "_Advance Search_"!
    (mais vous pouvez pour "_language:_", même si "_Search Language_" est une autre liste déroulante juste en dessous du "_Search for_" type 'one ...)

Wrong search selector


Ainsi, l'expérience de l'utilisateur est généralement la suivante:

  • vous cliquez sur "_Advanced Search_", parcourez ces sections de filtres et notez celle que vous souhaitez utiliser: "_repo:_"
  • vous effectuez une première recherche avancée "_repo:jruby/jruby stat_", mais avec le sélecteur de recherche par défaut "Everything"
    => FAIL! (et les tableaux affichant l'association "Selectors-Filters" sont partis )
  • vous remarquez que "Rechercher", sélectionnez le premier choix "Repositories" ("Dah! Je veux effectuer une recherche dans les référentiels ...")
    => FAIL!
  • lorsque vous êtes déprimé, vous sélectionnez le prochain choix de sélecteurs (ici, "Users"), sans même regarder ledit sélecteur, histoire de lui donner une dernière chance ...
    => FAIL!
  • "Voyez-vous ça, la recherche dans GitHub est cassée ! Je suis sorti d'ici!"
    ...
    (La recherche avancée de GitHub n'est en réalité pas interrompue. Seule leur interface graphique est ...)

Donc, pour récapituler, si vous voulez "rechercher quelque chose dans le code d'un projet Github", comme l'OP Ben Humphreys , n'oubliez pas de sélectionner le sélecteur de recherche "Code". ..

244
VonC

Les référentiels privés récents ont un champ de recherche permettant d'effectuer une recherche dans ce référentiel.

enter image description here

Chose déconcertante, il semble cependant que cette fonctionnalité ne soit pas disponible dans les référentiels publics.

22
Patrick Linskey

UPDATE

Le hack de bookmarklet ci-dessous est cassé en raison de problèmes XHR et de modifications de l'API.

Heureusement, Github a maintenant "Une toute nouvelle recherche de code" qui fait le travail superbement.


Commander ce voodoo: sercript de recherche de code Github .

Suivez les instructions à cet endroit, ou si vous détestez gonfler votre navigateur avec des scripts et des extensions, utilisez mon ensemble bookmarkified du script d’utilisateur:

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('');

Enregistrez la source ci-dessus en tant qu'URL d'un nouveau signet. Accédez à n’importe quel dépôt Github, cliquez sur le signet et bam : sur la page, recherche de code ajaxifié .

MISE EN GARDE Github doit indexer un dépôt pour que vous puissiez le rechercher.

Before the Bookmarklet

Abracadabra...

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

Voici un exemple de recherche dans le référentiel de spécifications annoté ECMAScript 5.1:

Sample search in the annotated ECMAScript 5.1 specification repository

20
fny

Bien que la réponse de @ VonC fonctionne pour certains référentiels, vous ne pouvez malheureusement pas en avoir pour le moment. Github ne les indexe tout simplement pas (comme l'avait à l'origine commenté @emddudley). Ils ne l'ont indiqué nulle part sur leur site Web, mais ils vous le diront si vous demandez de l'aide:

De: Tim Pease
Nous avons cessé d’ajouter du code nouvellement ajouté à notre index de recherche de code. Le volume de code a dépassé notre index de recherche actuel et nous travaillons à une architecture de recherche plus évolutive. Je suis désolé pour la contrariété. Nous ne disposons pas d'une estimation du moment où ce nouvel index de recherche sera opérationnel, mais lorsqu'il sera prêt, un article de blog sera publié (https://github.com/blog).

Malheureusement, il n’ya aucun moyen de savoir quels référentiels ne sont pas indexés, à part l’absence de résultats (qui peut également provenir d’une mauvaise requête).

Il n’existe pas non plus de moyen de suivre ce problème autrement que d’attendre qu’ils le bloguent (ou le regardent ici sur SO).

De: Tim Pease
Je crains que notre outil de suivi des problèmes ne soit interne, mais nous pouvons vous en avertir dès que le nouvel index de recherche sera opérationnel.

10
studgeek

Google vous permet de rechercher dans le projet, mais pas le code :(

site: https: //github.com/CreateJS/EaselJS test

2
crizCraig

Je recherche le code source à l'intérieur des référentiels Github avec l'extension gratuite Sourcegraph Chrome ... Mais je Téléchargé Chrome D'abord , je savais que d'autres navigateurs le supportaient, tel que - et peut-être seulement - Firefox.

J'ai parcouru les documents d'extension Chrome de SourceForge , puis j'ai aussi examiné ce dont j'avais besoin pour rechercher des noms de répertoires à l'aide du moteur de recherche de Github, en lisant certains des documents de recherche de code source de Github

0
Tyler Curtis Jowers