8

如何在github.com上搜索代码片段?MSG_PREPARE当我在存储库中搜索时,ErikZalm/Marlingithub什么也没显示。

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

repo:ErikZalm/Marlin MSG_PREPARE

没有结果,但MSG_PREPARE可以在此存储库中找到。我错过了什么吗?github.com上没有代码搜索吗?

4

2 回答 2

3

在撰写此答案时,与大约 8 年前提出这个问题的时间相比,github 已经取得了很好的进展,尽管仍然没有达到您正在查看的长度。

GitHub 代码搜索受限于以下规则:https ://docs.github.com/en/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 中搜索fork:true,尽管正如预期的那样,由于ErikZalm/Marlin与 parent 相比,repo 的星数较低MarlinFirmware/Marlin,所以 fork 中的代码仍然没有被索引。因此,除了与 repo 匹配之外,高级搜索没有任何好处。

但是,如果您对父项执行相同的搜索,它会在代码上显示匹配项。这是父 repo MarlinFirmware/Marlin 中 MSG_PREPARE 的匹配项

幸运的是,我知道在这个领域工作的一家公司是 SourceGraph:https ://about.sourcegraph.com/

因此,您可以使用 SourceGraph 轻松搜索您想要的内容: 以下是使用 SourceGraph Cloud 的 ErikZalm/Marlin 中 MSG_PREPARE 的匹配项

于 2021-01-29T08:55:50.743 回答
1

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

代码上的GitHub 搜索 API现在通过文本匹配元数据支持片段

文本匹配元数据

一些 API 使用者会希望在显示搜索结果时突出显示匹配的搜索词。API 提供了额外的元数据来支持这个用例。要在搜索结果中获取此元数据,请在 Accept 标头中指定文本匹配媒体类型。例如,通过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 月)

我认为您不会错过任何事情。

如果您搜索SdFile您会在文件中找到结果.pde,但在 cpp 文件中没有结果,如在此SdFile.cpp文件中。

搜索是在4 年前(2008 年 11 月)引入的,但是,正如“在 github 存储库中搜索定义给定函数的文件”中所述,GitHub 存储库代码根本没有完全索引

于 2012-11-11T11:27:45.723 回答