1
0
mirror of synced 2025-12-30 21:02:34 -05:00
Files
docs/translations/ru-RU/content/search-github/github-code-search/understanding-github-code-search-syntax.md
2022-11-16 21:42:42 +00:00

19 KiB
Raw Blame History

title, intro, allowTitleToDifferFromFilename, versions, topics, ms.openlocfilehash, ms.sourcegitcommit, ms.translationtype, ms.contentlocale, ms.lasthandoff, ms.locfileid
title intro allowTitleToDifferFromFilename versions topics ms.openlocfilehash ms.sourcegitcommit ms.translationtype ms.contentlocale ms.lasthandoff ms.locfileid
Основные сведения о синтаксисе поиска кода GitHub (бета-версия) Вы можете создавать поисковые запросы для нужных результатов с помощью специализированных квалификаторов кода, регулярных выражений и логических операций. true
feature
github-code-search
GitHub search
098da2b7fe8a8c5466805c583e6b029b5b9b58c1 e8c012864f MT ru-RU 11/09/2022 148160066

{% note %}

Примечание. {% data reusables.search.code-search-code-view-beta-note %}

{% data reusables.search.code-search-link %} {% data reusables.search.code-view-link %}

{% endnote %}

Сведения о новой структуре запросов поиска кода (бета-версия)

Синтаксис поиска в этой статье применяется только к коду с включенным новым поиском кода (бета-версия). {% data reusables.search.non-code-search-explanation %}

Поисковые запросы состоят из условий поиска, содержащих текст, который требуется найти, и квалификаторов, которые сужают область поиска.

Пустой термин без квалификаторов будет соответствовать содержимому файла или пути к файлу.

Например, следующий запрос:

http-push

Приведенный выше запрос будет соответствовать файлу docs/http-push.txt, даже если он не содержит термин http-push. Он также будет соответствовать файлу с именем example.txt , если он содержит термин http-push.

Вы можете ввести несколько терминов, разделенных пробелами, чтобы найти документы, удовлетворяющие обоим условиям.

Например, следующий запрос:

sparse index

Результаты поиска будут включать все документы, содержащие термины sparse и index, в любом порядке. В качестве примеров он будет соответствовать файлу с , файлу SparseIndexVectorс фразой index for sparse treesи даже файлу с именем index.txt , который содержит термин sparse.

Поиск нескольких терминов, разделенных пробелами, эквивалентен поиску hello AND world. Другие логические операции, такие как hello OR world, также поддерживаются в новом поиске кода (бета-версия). Дополнительные сведения о логических операциях см. в разделе Использование логических операций.

Новый поиск кода (бета-версия) также поддерживает поиск точной строки, включая пробелы. Дополнительные сведения см. в разделе Запрос точного соответствия.

Поиск кода можно сузить с помощью специализированных квалификаторов, таких как repo:, language: и path:. Дополнительные сведения о квалификаторах, которые можно использовать в новом поиске кода (бета-версия), см. в разделе Использование квалификаторов.

Вы также можете использовать регулярные выражения в поисках, окружив выражение в обратных косых чертах. Дополнительные сведения об использовании регулярных выражений см. в разделе Использование регулярных выражений.

Запрос точного соответствия

Чтобы найти точную строку, включая пробелы, можно заключить строку в кавычки. Например:

"sparse index"

Чтобы найти фразу, содержащую кавычки, можно экранировать кавычки с помощью обратной косой черты. Например, чтобы найти точную строку name = "tensorflow", можно выполнить поиск:

"name = \"tensorflow\""

Строки в кавычках также можно использовать в квалификаторах, например:

path: git language: "protocol buffers"

Использование логических операций

Новый поиск кода (бета-версия) поддерживает логические выражения. Операторы AND, ORи NOT можно использовать для объединения условий поиска.

По умолчанию смежные термины, разделенные пробелами, эквивалентны использованию AND оператора . Например, поисковый запрос sparse index совпадает sparse AND indexс , а это означает, что результаты поиска будут включать все документы, содержащие как термины sparse , так и index, в любом порядке.

Для поиска документов, содержащих один или другой термин, можно использовать OR оператор . Например, следующий запрос будет соответствовать документам, содержащим или sparse index:

sparse OR index

Чтобы исключить файлы из результатов поиска, можно использовать NOT оператор . Например, чтобы исключить файл в каталоге __testing__ , можно выполнить поиск:

"fatal error" NOT path:__testing__

Круглые скобки можно использовать для выражения более сложных логических выражений. Например:

(language:ruby OR language:python) AND NOT path:"/tests/"

Использование квалификаторов

Для уточнения поиска можно использовать специализированные ключевые слова.

Квалификатор репозитория

Для поиска в репозитории repo: используйте квалификатор. Необходимо указать полное имя репозитория, включая владельца. Например:

repo:github/linguist

Для поиска в наборе репозиториев можно объединить несколько repo: квалификаторов с логическим оператором OR. Пример:

repo:github/linguist OR repo:tree-sitter/tree-sitter

{% note %}

Примечание: Новая бета-версия поиска кода в настоящее время не поддерживает регулярные выражения или частичное сопоставление имен репозитория, поэтому для работы квалификатора необходимо ввести все имя репозитория (включая префикс repo: пользователя).

{% endnote %}

Квалификаторы организации и пользователей

Для поиска файлов в организации используйте org: квалификатор. Например:

org:github

Для поиска файлов в личной учетной записи используйте user: квалификатор. Пример:

user:octocat

{% note %}

Примечание: Новая бета-версия поиска кода в настоящее время не поддерживает регулярные выражения или частичное сопоставление для имен организаций или пользователей, поэтому вам придется ввести всю организацию или имя пользователя, чтобы квалификатор работал.

{% endnote %}

Квалификатор языка

Чтобы сузить область до определенных языков, используйте language: квалификатор. Например:

language: ruby OR language:cpp OR language:csharp

Полный список поддерживаемых имен языков см. в разделе languages.yaml в github/linguist. Если предпочитаемый язык отсутствует в списке, можно открыть запрос на вытягивание, чтобы добавить его.

Квалификатор пути

Для поиска в путях к файлам path: используйте квалификатор. Это будет соответствовать файлам, содержащим термин в любом месте пути к файлу. Например, чтобы найти файлы, содержащие термин unit_tests в пути, используйте:

path:unit_tests

Приведенный выше запрос будет соответствовать обоим src/unit_tests/my_test.py и src/docs/unit_tests.md , так как оба они содержат unit_test где-то в своем пути.

Чтобы сопоставить только определенное имя файла (а не часть пути), можно использовать регулярное выражение:

path:/(^|\/)README\.md$/

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


В квалификаторе также можно использовать некоторые ограниченные path: выражения glob.

Например, для поиска файлов с расширением txtможно использовать:

path:*.txt

Для поиска файлов JavaScript в каталоге `src` можно использовать:
path:src/*.js
  • По умолчанию выражения glob не привязаны к началу пути, поэтому приведенное выше выражение по-прежнему будет соответствовать пути, например app/src/main.js. Но если префикс выражения с /помощью , оно будет привязано к началу. Например:

    path:/src/*.js
    
  • Обратите внимание, что * не соответствует символу / , поэтому в приведенном выше примере все результаты будут прямыми src потомками каталога. Для сопоставления в подкаталогах, чтобы результаты включали глубоко вложенные файлы, такие как /src/app/testing/utils/example.js, можно использовать .** Например:

    path:/src/**/*.js
    

Можно также использовать глобальный ? символ. Например, чтобы сопоставить путь file.aac или file.abc, можно использовать:

path:*.a?c

Чтобы найти имя файла, содержащее специальный символ, например `*` или `?`, просто используйте строку в кавычках:
path:"file?"

Так как выражения glob отключены для строк в кавычках, приведенный выше запрос будет соответствовать только путям, содержащим строку file?литерала .

Квалификатор символов

Вы можете искать определения символов в коде, например определения функций или классов, с помощью symbol: квалификатора. Поиск символов основан на анализе кода с помощью экосистемы средства синтаксического анализа открытый код Tree-sitter, поэтому дополнительная настройка или интеграция средств сборки не требуется.

Например, чтобы найти символ с именем WithContext:

language:go symbol:WithContext

В некоторых языках можно искать символы, используя префикс (например, префикс имени класса). Например, для метода deleteRows в структуре Maintможно выполнить поиск symbol:Maint.deleteRows , если вы используете Go или symbol:Maint::deleteRows в Rust.

Можно также использовать регулярные выражения с квалификатором символов. Например, следующий запрос найдет преобразования, которые люди реализовали в Rust для String типа :

language:rust symbol:/^String::to_.*/

Обратите внимание, что этот квалификатор ищет только определения, а не ссылки, и пока не все типы символов или языки полностью поддерживаются. Извлечение символов поддерживается для следующих языков.

  • C#
  • Python
  • Go
  • Java
  • JavaScript
  • TypeScript
  • PHP
  • Protocol Buffers
  • Ruby
  • Rust

Мы работаем над добавлением поддержки дополнительных языков. Если вы хотите внести свой вклад в эту работу, вы можете добавить поддержку своего языка в экосистеме синтаксического анализатора открытый код tree-sitter, на которой основан поиск символов.

Квалификатор содержимого

По умолчанию голые термины ищут как пути, так и содержимое файла. Чтобы ограничить поиск только содержимым файла, а не путями к файлу content: , используйте квалификатор. Например:

content:README.md

Этот запрос будет сопоставлять только файлы, содержащие термин README.md, а не соответствующие файлы с именем README.md.

Является квалификатором

Для фильтрации по свойствам is: документа можно использовать квалификатор. В настоящее время в этом квалификаторе поддерживается archivedтолько значение , которое ограничивает поиск архивными репозиториями. Например:

path:/MIT.txt is:archived

Обратите внимание, что is: квалификатор можно инвертировать с помощью NOT оператора . Для поиска неархивированных репозиториев можно выполнить поиск:

log4j NOT is:archived

Использование регулярных выражений

Новый поиск кода (бета-версия) поддерживает регулярные выражения для поиска шаблонов в коде. Регулярные выражения можно использовать в терминах поиска на пустом языке, а также во многих квалификаторов, окружив регулярное выражение в обратных косых чертах.

Например, для поиска регулярного выражения sparse.*indexследует использовать:

/sparse.*index/

Обратите внимание, что вам придется экранировать все косые черты в регулярном выражении. Например, для поиска файлов в каталоге App/src используется:

/^App\/src\//