在github.com上搜索代码片段仓库

9
我该如何在github.com上搜索代码片段?当我在ErikZalm/Marlin库中搜索MSG_PREPARE时,github显示没有结果

我正在使用在https://github.com/search上描述的仓库代码搜索语法。

repo:ErikZalm/Marlin MSG_PREPARE

没有结果,但是可以在此存储库这里找到MSG_PREPARE。我有什么遗漏的吗?Github上没有代码搜索吗?


2013年7月更新:文本匹配元数据提供了一种更容易找到文本片段的方法。请参见下面我的编辑答案 - VonC
可能是重复问题:https://dev59.com/mVQJ5IYBdhLWcg3weVu7 (已有答案) 抱歉,没注意到您只想在单个存储库的上下文中搜索,所以发了悬赏。 - Klesun
2个回答

4
在回答这个问题时,相比于大约8年前提出该问题时,GitHub已经发展了很长一段时间,但仍未达到您所期望的水平。
GitHub代码搜索受以下规则的限制:https://docs.github.com/zh-cn/github/searching-for-information-on-github/searching-code。引用同样的内容:
Code in forks is only searchable if the fork has more stars than the parent repository.
Forks with fewer stars than the parent repository are not indexed for code search.
To include forks with more stars than their parent in the search results, you will need to add fork:true or fork:only to your query.
For more information, see "Searching in forks."

因此,我们可以使用fork:true选项在派生版本中进行搜索,但是预期的是,由于仓库ErikZalm/Marlin的星级计数较低,与父级MarlinFirmware/Marlin相比,派生版本中的代码仍未被索引。因此,高级搜索除了与仓库匹配外并没有更好的匹配结果。 然而,如果您在父级上执行相同的搜索,则会显示代码匹配项。这里是父级仓库MarlinFirmware/Marlin中MSG_PREPARE的匹配项。 幸运的是,我知道一个致力于该领域的公司是SourceGraph:https://about.sourcegraph.com/ 因此,您可以轻松使用SourceGraph搜索您想要的内容:这里是使用SourceGraph Cloud在ErikZalm/Marlin中匹配MSG_PREPARE的结果。

2
Sourcegraph的搜索功能深度链接太棒了!https://sourcegraph.com/search?q=repo:%5Egithub%5C.com/ErikZalm/Marlin%24%20MSG_PREPARE&patternType=literal - powtac
这个 Sourcegraph 工具甚至允许在 所有仓库 中搜索代码并使用正则表达式! - Klesun

1

2013年7月更新:"预览新的搜索API"

GitHub代码搜索API现在通过text-match metadata支持片段

text match metadata

一些API消费者希望在显示搜索结果时突出匹配的搜索词。该API提供了额外的元数据来支持此用例。要在搜索结果中获取此元数据,请在您的Accept标头中指定text-match媒体类型。例如,通过curl,上述查询将如下所示:
curl -H 'Accept: application/vnd.github.preview.text-match+json' \
  https://api.github.com/search/code?q=octokit+in:file+extension:gemspec+-repo:octokit/octokit.rb&sort=indexed

这将生成与上述相同的JSON负载,带有一个名为text_matches的额外键,它是一个对象数组。这些对象提供了有关搜索词在文本中位置以及包含搜索词的属性的信息。

原始答案(2012年11月)

我认为您不会遗漏任何东西。

如果您搜索{{link1:SdFile}}, 您会在.pde文件中找到结果,但是在像SdFile.cpp这样的cpp文件中并没有结果。

这项搜索{{link3:是在4年前引入的(2008年11月)}},但正如在 "Search a github repository for the file defining a given function" 中提到的那样,Github代码库根本没有完全索引。


我读了这篇博客文章好几遍,以确保我没有漏掉什么。 - powtac
1
现在,它已经通过https://github.com/blog/1381-a-whole-new-code-search得到了更完整的索引。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接