Поиск кода на github.com
Как я могу искать фрагменты кода на github.com? Когда я ищу MSG_PREPARE
в хранилище ErikZalm/Marlin
github ничего не показывает
Я использую синтаксис поиска кода репозитория, описанный на https://github.com/search с
repo:ErikZalm/Marlin MSG_PREPARE
Нет результатов, но MSG_PREPARE
можно найти внутри этого хранилища здесь. Я что-то пропустил? На github.com нет поиска кода?
2 ответа
На момент написания этого ответа, по сравнению со временем, когда этот вопрос был задан, то есть около 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
вариант, хотя как и ожидалось, так как репо
ErikZalm/Marlin
мало звезд по сравнению с родителем
MarlinFirmware/Marlin
, код в форке до сих пор не проиндексирован. Следовательно, предварительный поиск не дает ничего хорошего, кроме совпадения с репо.
Однако, если вы выполните тот же поиск для родителя, он покажет совпадения в коде. Вот совпадения для MSG_PREPARE в родительском репозитории MarlinFirmware/Marlin.
К счастью, одна компания, которую я знаю, работает над этим доменом — SourceGraph: https://about.sourcegraph.com/
Следовательно, вы можете легко найти то, что вы хотели, с помощью SourceGraph:вот совпадения для MSG_PREPARE в ErikZalm/Marlin с использованием SourceGraph Cloud.
Обновление июль 2013: " Предварительный просмотр нового API поиска "
API поиска GitHub для кода теперь поддерживает фрагменты с помощью метаданных с текстовым соответствием.
Некоторые пользователи 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)
Я не думаю, что есть что-то, что вы бы пропустили.
Если вы ищете SdFile
, вы найдете результаты в .pde
файл, но не в файлах cpp, как в этом SdFile.cpp
файл.
Поиск был введен 4 года назад (ноябрь 2008 г.), но, как упоминалось в разделе " Поиск в репозитории github для файла, определяющего данную функцию ", код репозитория GitHub просто не полностью проиндексирован.