Поиск кода внутри проекта Github

272

Есть ли способ найти что-то в коде проекта Github?

Я мог бы извлечь исходный код и выполнить его локально, но мне было интересно, возможно ли это через веб-интерфейс или стороннюю альтернативу.

Идеи?

Бен Хамфрис
источник
также оформить заказ code.ohloh.net :)
обимод
Для репозиториев Java / Scala попробуйте Codota Semantic Code Search
drorw
1
Открыл запрос на добавление функции по адресу: github.com/isaacs/github/issues/1495
Сиро Сантилли at 冠状 病 六四 事件 法轮功

Ответы:

255

Обновление января 2013: новый поиск прибыл! , основанный наasticsearch.org :

Поиск статистики в репо ruby ​​будет выражаться как stat repo:ruby/ruby, и теперь будет работать только ТМ .
(имя репо не чувствительно к регистру: test repo:wordpress/wordpressвозвращает так же, как test repo:Wordpress/Wordpress)

введите описание изображения здесь

Дам:

введите описание изображения здесь

И у вас есть много других примеров поиска, основанных на подписчиках , или на вилках , или ...


Обновление июль 2012 г. (старые времена поиска Lucene и плохая индексация кода в сочетании с неработающим графическим интерфейсом хранятся здесь для архивирования):

Поиск (основанный на SolrQuerySyntax ) теперь более разрешающий, и страшный " Invalid search query. Try quoting it." исчезает при использовании селектора поиска по умолчанию "Все" :)

(Я полагаю, что мы можем все, кроме Тима Пиза , который преследовал одну из своих целей - «взломать улучшенный опыт поиска для всех свойств GitHub », и я упоминал этот вопрос переполнения стека в то время;))

Вот иллюстрация grep в коде ruby: он будет искать репозитории и пользователей, а также то, что я хотел искать в первую очередь: код!

GitHub более разрешительные результаты поиска


Первоначальный ответ и иллюстрация предыдущего номера (сентябрь 2012 г. => март 2012 г.)

Вы можете использовать форму расширенного поиска GitHub :

  • Выберите Code, Repositoriesили Usersиз раскрывающегося списка и
  • используйте соответствующие префиксы, перечисленные для этого типа поиска .

Например, используйте repo:username/repo-nameдирективу, чтобы ограничить поиск хранилищем кода .
Начальная Advanced Searchстраница " " включает раздел:

Поиск кода :

Поиск по коду просматривает весь код, размещенный на GitHub. Вы также можете фильтровать по:

  • язык language:
  • имя хранилища (включая имя пользователя) repo:
  • путь к файлу path:

Поэтому, если вы выберете Codeселектор поиска " ", тогда ваш запрос для текста в репо будет работать:

Хороший поиск селектора


Что невероятно бесполезно от GitHub, так это:

  • если вы забудете поставить правильный селектор поиска (здесь " Code"), вы получите сообщение об ошибке:
    " Invalid search query. Try quoting it."

Неправильный селектор для файла кода

  • сообщение об ошибке не поможет вам вообще.
    Никакое количество " quoting it" не поможет вам избежать этой ошибки.

  • как только вы получите это сообщение об ошибке, вы не получите разделы, напоминающие вам о правильной связи между поисковыми селекторами (" Repositories", " Users" или " Language") и (правыми) поисковыми фильтрами (здесь " repo:").
    Любая дальнейшая попытка не отобразит эти ассоциации (селекторы-фильтры). Только сообщение об ошибке, которое вы видите выше ...
    Единственный способ вернуть эти массивы - щелкнуть значок " Advance Search":

Значок предварительного поиска на GitHub

  • EverythingСелектор поиска " ", который является настройкой по умолчанию, на самом деле является неправильным для всех фильтров поиска! За исключением " language:" ...
    (Вы можете представить / предположить, что " Everything" поможет вам выбрать любой селектор поиска, который действительно работает с поисковым фильтром " repo:", но нет. Это было бы слишком просто)

  • Вы не можете указать нужный селектор поиска только через поле " Advance Search"!
    (но вы можете использовать для " language:", хотя " Search Language" - это еще одно поле со списком чуть ниже Search for"" типа ") ...

Неверный селектор поиска


Итак, пользовательский опыт обычно выглядит следующим образом:

  • Вы нажимаете « Advanced Search», просматриваете эти разделы фильтров и замечаете тот, который хотите использовать: « repo:»
  • Вы делаете первый расширенный поиск " repo:jruby/jruby stat", но с селектором поиска по умолчанию " Everything"
    => FAIL! (и массивы, отображающие ассоциацию «Селекторы-Фильтры», исчезли )
  • вы заметили, что «Поиск» селекторной штуки, выберите первый вариант » Repositories(« Да! Я хочу искать в репозиториях ... »)
    => FAIL!
  • отклоненный, вы выбираете следующий выбор селекторов (здесь, " Users"), даже не глядя на упомянутый селектор, просто чтобы дать ему еще одну попытку ...
    => FAIL!
  • «Винт это, поиск GitHub будет сломан ! Я отсюда!»
    ...
    (Расширенный поиск GitHub на самом деле не сломан. Только их графический интерфейс ...)

Итак, подведем итог: если вы хотите «найти что-то внутри кода проекта Github», как OP Ben Humphreys , не забудьте выбрать « Code» селектор поиска ...

VonC
источник
Вы уверены, я не пробовал repo:"jruby/jruby" stat repo:"jruby" stat jruby: statничего из того, что работает
Том Х
@TomH: на первый взгляд, это может быть ошибка на стороне GitHub, как прокомментировано на superuser.com/a/179900/141
VonC
1
@DannyStaple Ну, похоже , они знают об этой проблеме, если вы посмотрите на миссию, описанную в github.com/blog/1116-tim-pease-is-a-githubber : «Тим, скорее всего, [...] взлом улучшенного поиска для всех свойств GitHub ". Обязательно ответьте на их твит на GitHub ( twitter.com/#!/github/status/197070106768048128 ), как я это сделал ( twitter.com/#!/VonC_/status/197565733830541313 )
VonC
9
FWIW Я связался с GitHub, потому что я не получал никаких результатов поиска при ограничении поисков для моих репозиториев. Тим Пиз ответил, что у них возникли проблемы с объемом индексов репо, поэтому они мигрировали на сегментированные серверы индексов. Там нет ETA, когда все репо будут перенесены.
М. Дадли
3
Я только что воспользовался советом из этого ответа, и он работает и для меня, но я должен добавить одно предостережение. Имя репо всегда должно быть в нижнем регистре, даже если GitHib перечисляет его везде другим способом. Например, (после установки раскрывающегося списка «Код» и т. Д., Как описано выше) попробуйте выполнить тот же поиск с помощью: repo: wordpress / wordpress против repo: WordPress / WordPress ... только первый из них даст результаты.
Этанпил
22

Последние частные репозитории имеют поле поиска для поиска в этом репо.

введите описание изображения здесь

Как ни странно, похоже, что эта функция недоступна для публичных репозиториев.

Патрик Лински
источник
1
Интересно, является ли это скромным коммерческим шагом, чтобы заставить людей перейти на платную версию? Не похоже на github, но все же.
Сильвен
3
@Sylvain Не думаю, что это делается как поощрение для обновления, так как даже после обновления вы не получите это поле поиска для общедоступных репозиториев. Вместо этого я думаю, что основной поиск использует индекс, который не включает частные репозитории, и поэтому вы не теряете функциональность при оплате частного репозитория, им пришлось добавить другой способ поиска только в этом частном репозитории, следовательно, дополнительный текстовое поле.
Avernet
2
Представьте себе, что у них есть поисковый индекс для каждой строки кода в каждом репо! Безумный! Вот почему они делают это только для частных репозиториев ..
Джонни Нотт
1
Поиск теперь в заголовке, так же, как глобальный поиск.
Тиб
20

ОБНОВИТЬ

Взлом букмарклета ниже сломан из-за проблем XHR и изменений API.

К счастью, у Github теперь есть «Поиск по всему новому коду», который отлично справляется со своей задачей.


Заказ этого вуду: GitHub поиск кода userscript .

Следуйте указаниям там, или, если вы ненавидите раздувать ваш браузер с помощью скриптов и расширений, воспользуйтесь моей закладкой из пользовательского скрипта:

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

Сохраните приведенный выше источник как URL новой закладки. Перейдите к любому репозиторию Github, щелкните по закладке и выберите bam : in-page, ajaxified .

CAVEAT Github должен проиндексировать репо, прежде чем вы сможете его искать.

Перед букмарклетом

Абракадабра ...

После - Посмотрите во второй строке меню после самых левых вкладок: Файлы, Коммиты, Ветви ...

Вот пример поиска из аннотированного репозитория спецификации ECMAScript 5.1:

Пример поиска в аннотированном репозитории спецификации ECMAScript 5.1

Fny
источник
Когда я использую плагин (Chrome), он прекрасно работает в репозитории scratchdot / github-code-search, но не в любом другом репо.
forforf
Это должно работать на домашней странице любого репо. Возможно, вы пытаетесь с другой страницы? Я разместил скриншот примера поиска в другом репозитории в своем сообщении.
Fny
Ага! Я на самом деле обнаружил, почему эти поиски могут быть неудачными: репо должно ждать своей очереди для индексации. Я подозреваю, что учитывая миллионы активных репозиториев, это занимает немного времени.
2012 г.,
2
@ user456584 это для меня новость. Возможно, вы захотите сообщить об этом Google и Mozilla .
Fny
2
Я понял, почему плагин не работает, потому что имя репо должно быть в нижнем регистре. (См. Мой комментарий к ответу VonC выше). Я уже представил патч на GitHub, надеюсь, его увидит оригинальный автор. github.com/skratchdot/github-code-search.user.js/pull/5
ethanpil
10

Хотя ответ @ VonC работает для некоторых репозиториев, к сожалению, для многих репозиториев вы не можете прямо сейчас. Github просто не индексирует их (как первоначально писал @emddudley). Они нигде не заявили об этом на своем веб-сайте, но они скажут вам, если вы попросите поддержки:

От: Тим Пиз
Мы прекратили добавлять недавно вставленный код в наш индекс поиска кода. Объем кода перерос наш текущий поисковый индекс, и мы работаем над переходом к более масштабируемой поисковой архитектуре. Я извиняюсь за раздражение. У нас нет оценки того, когда этот новый поисковый индекс будет запущен и работает, но когда он будет готов, будет опубликовано сообщение в блоге (https://github.com/blog).

Досадно, что нет способа определить, какие репозитории не проиндексированы, кроме отсутствия результатов (что также может быть связано с неправильным запросом).

Также нет способа отследить эту проблему, кроме как ждать, пока они не опубликуют ее (или посмотреть здесь на SO).

От: Тим Пиз
Я боюсь, что наш трекер проблем является внутренним, но мы можем уведомить вас, как только будет запущен новый поисковый индекс.

studgeek
источник
Они должны по крайней мере упомянуть, что некоторые результаты поиска могут быть опущены. Это полностью отстой, когда я рефакторинг кода и я ищу вхождения кода, которые есть, но не упомянутые GitHub
Никодемуз
0

Я ищу исходный код внутри репозитория Github с бесплатным расширением Sourcegraph Chrome ... Но я сначала скачал Chrome , я знал, что другие браузеры поддерживают его, например, - и, возможно, только - Firefox.

Я пролистал документы расширения Chrome SourceForge, а затем посмотрел, что мне нужно для поиска имен каталогов с помощью самой поисковой системы Github, прочитав некоторые из документов поиска Gitub's Codebase.

Тайлер Кертис Джоуэрс
источник