在Github项目中搜索代码

问题描述:

有没有办法在grep里面找到Github项目代码里面的东西?在Github项目中搜索代码

我可以在本地拉来源和grep,但我想知道是否可以通过Web界面或第三方替代方法。

想法?

+0

也会检出http://code.ohloh.net :) – obimod 2013-04-16 21:01:54

+0

对于Java/Scala的回购协议,尝试[Codota语义代码搜索(https://www.codota.com/index-your-repo) – drorw 2015-10-13 11:30:08

更新2013年1月:一个brand new search has arrived!,基于elasticsearch.org

红宝石回购中对统计的搜索将被表示为stat repo:ruby/ruby,而现在只是工作TM
(回购名称不区分大小写:test repo:wordpress/wordpress返回相同的test repo:Wordpress/Wordpress

enter image description here

会给:

enter image description here

而且你搜索的许多其他例子,基于on followers ,或on forks,或...


更新2012年7月(旧Lucene搜索和代码索引差,破GUI相结合的日子里,保持这里存档):

搜索(基于SolrQuerySyntax)现在更加宽容和可怕的“Invalid search query. Try quoting it.” )

;使用 默认搜索选择“一切” :)

(我想我们都可以比Tim Pease,其中有在他的目标"hacking on improved search experiences for all GitHub properties”之一,I did mention this Stack Overflow question的时间)时,走了

下面是一个红宝石代码中的grep插图:它将寻找回购站和用户,但为我想搜索的第一个地方:代码!

GitHub more permissive search results


最初的回答和前一个问题的说明(9月2012 => 2012年3月)

可以使用advanced search GitHub form

  • 选择CodeRepositoriesUsers from the drop-down and
  • 使用为该搜索类型列出的相应前缀

例如,使用repo:username/repo-name指令限制搜索到代码库。
最初的“Advanced Search”页面包括以下部分:

代码搜索:

密码搜索将寻找通过所有在GitHub上公开托管的代码。您还可以过滤通过:

  • 语言language:
  • 仓库名(包括用户名)repo:
  • 文件路径path:

所以,如果你选择“Code“搜索选择,然后将查询grepping为回购协议中的文本将工作:

Good Search selector


什么是难以置信从GitHub无益是:

  • 如果你忘记把正确的搜索选择器(这里“Code”),你会得到一个错误信息:
    Invalid search query. Try quoting it.

Wrong selector for the code filer

  • 的错误信息不会帮你的。
    没有任何数额的“quoting it”会让你摆脱这个错误。

  • ,一旦你得到这个错误消息,你没有得到的部分搜索之间选择(“Repositories”,‘Users’或“Language”),提醒您的权利协会和(右)搜索过滤器(这里是“repo:”)。
    您做的任何进一步尝试都不会显示那些关联(选择器过滤器)。只有你在上面看到的错误信息...
    找回这些阵列的唯一方法是通过点击“Advance Search”图标:

Advance Search Icon on GitHub

  • 的“Everything”搜索选择,这是默认的,实际上是错误一个用于全部的搜索过滤器!除了“language:” ...
    (你可以想象/假设“Everything”将帮助你选择任何搜索选择实际上是与搜索过滤器“repo:”的作品,但没了。这将是太容易了)

  • 您无法单独通过“Advance Search”字段指定所需的搜索选择器!
    (但你可以为 “language:”,即使 “Search Language” 是另一个组合框正下方的 “Search for” '型' 一个......)

Wrong search selector


所以,用户的体验通常如下:

  • 你点击“Advanced Search”,浏览那些秒过滤器系统蒸发散,并注意要使用一个:“repo:
  • 你做第一个高级搜索“repo:jruby/jruby stat”,但与默认搜索选择“Everything
    =>FAIL! (和显示协会“选择器,过滤器”的阵列是
  • 您发现“搜索”选择啄,选择第一选择“Repositories”(“大新!我希望库中进行搜索。 ..“)
    =>FAIL
  • 沮丧,你选择下一个选择器的选择(这里,“Users”),甚至没有看到所述选择器,只是给它一个尝试...
    =>FAIL
  • “拧这个,GitHub搜索是!我要离开这里!”
    ...
    (GitHub的高级搜索实际上是不破。只有他们的GUI是...)

因此,回顾一下,如果你想“grep命令里面的东西Github项目的代码“,因为OP Ben Humphreys,不要忘记选择”Code“搜索选择器...

+0

你确定,我试过'repo:“jruby/jruby”stat''repo:“jruby”stat'' jruby:stat'其中的任何一个都没有作用 – 2012-03-13 12:35:58

+0

@TomH:乍一看,它可能是GitHub端的一个bug,在http://superuser.com/a/179900/141 – VonC 2012-03-13 12:59:58

+0

@TomH评论:经过来自“社区”的有用编辑之后,我在我的答案中添加了插图,以显示高级搜索'repo:jruby/jruby stat'(这里不需要双引号)可以工作。毕竟,这不是一个错误。 – VonC 2012-03-18 10:41:36

最近的私人存储库具有用于搜索该存储库的搜索字段。

enter image description here

令人困惑,它看起来像这样的功能是不提供给公共库,虽然。

+1

我想知道这是否是一个低下的商业举措,让人们升级到付费版本?听起来不像github,但仍然。 – Sylvain 2012-02-06 13:09:33

+3

@Sylvain它不认为这是升级的鼓励,因为即使在升级之后,你也不会获得公共仓库的搜索字段。相反,我认为主搜索使用的索引不包含私有存储库,因此您在支付私有存储库时不会失去功能,他们必须添加另一种方法来仅搜索私有存储库,因此额外文本域。 – avernet 2012-02-29 23:43:39

+2

想象一下,他们在每个回购的每一行代码中都有搜索索引的开销!疯!这就是为什么他们只做私人回购。 – 2012-11-14 12:10:38

UPDATE

的书签以下劈由于XHR问题和API的变化打破。

谢天谢地,Github现在有"A Whole New Code Search",它的工作非常出色。


结帐这个巫术:Github code search userscript

按照指示那里,或者如果你恨与 脚本和扩展腹胀您的浏览器,用我的userscript的bookmarkified束:

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

保存以上为新书签的网址来源。浏览到任何 Github回购,点击书签,bam页内,ajaxified代码 搜索

CAVEAT Github必须索引一个回购,然后才能搜索它。

Before the Bookmarklet

胡言乱语......

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

下面是注释的ECMAScript 5.1规范中的示例搜索 库:

Sample search in the annotated ECMAScript 5.1 specification repository

+0

当我使用插件(Chrome)时,它在scratchdot/github-code-search仓库中工作正常,但没有在任何其他仓库中使用。 – forforf 2012-04-03 15:17:20

+0

它应该在任何回购的主页中工作。也许你正在尝试从不同的页面? 我在我的文章中发布了一个示例搜索的屏幕截图,位于不同的存储库中。 – fny 2012-04-03 22:09:54

+0

是的,它似乎现在工作,非常有帮助,谢谢! – forforf 2012-04-10 17:52:43

谷歌允许你在项目中进行搜索,而不是代码:(

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

虽然@ VonC的答案适用于某些存储库,不幸的是,许多你现在不能仓库。 Github根本就没有对它们进行索引(正如@emddudley最初所评论的那样)。他们没有说明在其网站上这样的任何地方,但他们会告诉你,如果你问的支持:

来源:蒂姆·皮斯
我们已停止添加新推的代码到我们于codesearch指数。代码量超过了我们当前的搜索索引,并且我们正在努力转向更具扩展性的搜索体系结构。我为这个烦恼感到抱歉。我们没有估计这个新搜索索引何时开始运行,但是当它准备好时,博客文章将发布(https://github.com/blog)。

恼人的是,除了缺少结果(也可能来自错误的查询)之外,没有办法知道哪些存储库没有被索引。

除了等待他们发​​布博客(或在此观看)之外,没有办法跟踪这个问题。

来源:蒂姆·皮斯
恐怕我们的问题跟踪器是内部的,但我们可以尽快通知您为新的搜索索引是启动和运行。

+2

非常有趣的反馈。 +1 – VonC 2012-08-31 15:48:14

+1

soooooo令人沮丧:( – 2012-12-20 23:22:03

+0

)他们至少应该提到一些搜索结果可能会被省略。当我重构代码时,它会完全吸引人,并且我搜索那些没有被GitHub提及的代码。 – Nicodemuz 2016-05-17 07:46:14