Existe-t-il un moyen de rechercher quelque chose dans le code d'un projet Github?
Je pouvais extraire la source et la récupérer localement, mais je me demandais si c'était possible via l'interface Web ou une alternative tierce.
Des idées?
Existe-t-il un moyen de rechercher quelque chose dans le code d'un projet Github?
Je pouvais extraire la source et la récupérer localement, mais je me demandais si c'était possible via l'interface Web ou une alternative tierce.
Des idées?
Réponses:
Mise à jour janvier 2013: une toute nouvelle recherche est arrivée! , basé sur elasticsearch.org :
Une recherche de statistiques dans le référentiel rubis sera exprimée par stat repo:ruby/ruby
, et fonctionnera maintenant simplement TM .
(le nom du dépôt n'est pas sensible à la casse: test repo:wordpress/wordpress
renvoie le même que test repo:Wordpress/Wordpress
)
Va donner:
Et vous avez de nombreux autres exemples de recherche, basés sur des followers , ou sur des fourches , ou ...
Mise à jour de juillet 2012 (anciens jours de recherche Lucene et d'indexation de code médiocre, combinés à une interface graphique cassée, conservés ici pour les archives):
La recherche (basée sur SolrQuerySyntax ) est désormais plus permissive et le redouté " Invalid search query. Try quoting it.
" disparaît lorsque vous utilisez le sélecteur de recherche par défaut "Everything" :)
(Je suppose que nous pouvons tout ce que Tim Pease , qui avait dans l'un de ses objectifs "pirater des expériences de recherche améliorées pour toutes les propriétés GitHub ", et j'ai mentionné cette question de débordement de pile à l'époque;))
Voici une illustration d'un grep dans le code ruby: il recherchera les repos et les utilisateurs, mais aussi ce que je voulais rechercher en premier lieu: le code!
Réponse initiale et illustration de l'ancien numéro (septembre 2012 => mars 2012)
Vous pouvez utiliser le formulaire de recherche avancée GitHub :
Code
, Repositories
ou Users
dans le menu déroulant etPar exemple, utilisez la repo:username/repo-name
directive pour limiter la recherche à un référentiel de code .
La Advanced Search
page " " initiale comprend la section:
Recherche de code :
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 Code
sélecteur de recherche " ", votre requête recherchant un texte dans un référentiel fonctionnera:
Ce qui est incroyablement inutile de GitHub est que:
Code
"), vous obtiendrez un message d'erreur: Invalid search query. Try quoting it.
" le message d'erreur ne vous aide pas du tout.
Aucun montant de " quoting it
" ne vous permettra de sortir 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 les filtres de recherche (à droite) (ici " repo:
").
Toute tentative supplémentaire que vous effectuez n'affichera pas ces associations (sélecteurs-filtres). Seul le message d'erreur que vous voyez ci-dessus ...
La seule façon de récupérer ces tableaux est en cliquant sur l' Advance Search
icône " ":
le " Everything
" sélecteur de recherche, qui est la valeur par défaut, est en fait le mauvais pour tous les filtres de recherche! Sauf " language:
" ...
(Vous pourriez 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 que vous souhaitez Advance Search
uniquement via le champ " "!
(mais vous pouvez le faire pour " language:
", même si " Search Language
" est une autre zone de liste déroulante juste en dessous du " Search for
" 'type' ...)
Ainsi, l'expérience de l'utilisateur est généralement la suivante:
Advanced Search
", jetez un œil sur ces sections de filtres et remarquez celui que vous souhaitez utiliser: " repo:
"repo:jruby/jruby stat
", mais avec le sélecteur de recherche par défaut " Everything
" FAIL
! (et les tableaux affichant l'association "Sélecteurs-Filtres" ont disparu )Repositories
" ("Dah! Je veux chercher dans les dépôts ...") FAIL
!Users
"), sans même regarder ledit sélecteur, juste pour lui donner un autre essai ... FAIL
!Donc, pour récapituler, si vous voulez "chercher quelque chose dans le code d'un projet Github", comme l'OP Ben Humphreys , n'oubliez pas de sélectionner le " Code
" sélecteur de recherche ...
repo:"jruby/jruby" stat
repo:"jruby" stat
jruby: stat
aucun de ceux qui fonctionnent
Les référentiels privés récents ont un champ de recherche pour rechercher dans ce référentiel.
Déconcertant, il semble que cette fonctionnalité ne soit pas disponible pour les référentiels publics.
METTRE À JOUR
Le piratage du bookmarklet ci-dessous est interrompu en raison de problèmes XHR et de modifications de l'API.
Heureusement, Github a maintenant "Une toute nouvelle recherche de code" qui fait parfaitement le travail.
Découvrez ce vaudou: script utilisateur de recherche de code Github .
Suivez les instructions là-bas, ou si vous détestez gonfler votre navigateur avec des scripts et des extensions, utilisez mon bundle bookmarkified du script 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 : recherche de code ajaxified sur la page .
CAVEAT Github doit indexer un référentiel avant de pouvoir le rechercher.
Abracadabra...
Voici un exemple de recherche dans le référentiel de spécifications ECMAScript 5.1 annoté:
Bien que la réponse de @ VonC fonctionne pour certains référentiels, malheureusement pour de nombreux référentiels, vous ne pouvez pas en ce moment. Github ne les indexe tout simplement pas (comme commenté à l'origine par @emddudley). Ils ne l'ont indiqué nulle part sur leur site Web, mais ils vous diront si vous demandez de l'aide:
De: Tim Pease
Nous avons cessé d'ajouter du code nouvellement poussé dans notre index de recherche de code. Le volume de code a dépassé notre index de recherche actuel et nous travaillons à passer à une architecture de recherche plus évolutive. Je suis désolé pour l'ennui. Nous n'avons pas d'estimation pour quand ce nouvel index de recherche sera opérationnel, mais quand il sera prêt, un article de blog sera publié (https://github.com/blog).
Malheureusement, il n'y a aucun moyen de savoir quels référentiels ne sont pas indexés à part le manque de résultats (qui pourraient également provenir d'une mauvaise requête).
Il n'y a également aucun moyen de suivre ce problème autre que d'attendre qu'ils bloguent (ou de regarder ici sur SO).
De: Tim Pease
Je crains que notre outil de suivi des problèmes ne soit interne, mais nous pouvons vous avertir dès que le nouvel index de recherche est opérationnel.
Google vous permet de rechercher dans le projet, mais pas le code :(
Je recherche le code source à l'intérieur des référentiels Github avec l' extension gratuite Sourcegraph Chrome ... Mais j'ai téléchargé Chrome d'abord , je savais que d'autres navigateurs le supportaient, comme - et peut-être seulement - Firefox.
J'ai parcouru les documents sur l'extension Chrome de SourceForge, puis j'ai également examiné ce dont j'avais besoin pour rechercher des noms de répertoire avec le moteur de recherche de Github lui-même, en lisant certains des documents de recherche Codebase de Github.