在github.com上搜索代码

时间:2012-11-10 12:12:44

标签: search github full-text-search code-search

如何在github.com上搜索代码片段?当我在存储库MSG_PREPARE中搜索ErikZalm/Marlin时,github会显示nothing

我正在使用https://github.com/search

中描述的存储库代码搜索语法
repo:ErikZalm/Marlin MSG_PREPARE

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

2 个答案:

答案 0 :(得分: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:true 选项在 fork 中搜索,尽管正如预期的那样,因为与父 ErikZalm/Marlin 相比,repo MarlinFirmware/Marlin 的星数较低, fork 仍然没有被索引。因此advance search shows no good except a match to the repo.

不过,如果您对父级执行相同的搜索,它会在代码上显示匹配项。 Here are the matches for MSG_PREPARE in the parent repo MarlinFirmware/Marlin

幸运的是,我认识的一家在此领域工作的公司是 SourceGraph:https://about.sourcegraph.com/

因此,您可以使用 SourceGraph 轻松搜索您想要的内容: Here are the matches for MSG_PREPARE in the ErikZalm/Marlin using SourceGraph Cloud

答案 1 :(得分:1)

2013年7月更新:“Preview the new Search API

GitHub search API on code现在支持片段,通过text-match metadata

text match metadata

  

某些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月)

我认为你不会错过任何东西。

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

搜索结果为introduced 4 years ago (November 2008),但正如“Search a github repository for the file defining a given function”中所述, GitHub存储库代码根本没有完全编入索引