# Навигация по коду на GitHub

Вы можете понять связи внутри репозиториев и между ними, перейдя непосредственно в GitHub.

<!-- If you make changes to this feature, check whether any of the changes affect languages listed in /get-started/learning-about-github/github-language-support. If so, please update the article accordingly. -->

## Сведения о навигации по коду на GitHub

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

![Снимок экрана: файл с выделенной функцией. Всплывающее окно содержит сведения о функции на двух вкладках: "Определение" и "Ссылка".](/assets/images/help/repository/code-navigation-popover.png)

Навигация по коду использует библиотеку open source [`tree-sitter`](https://github.com/tree-sitter/tree-sitter). Следующие языки поддерживают навигацию по коду.

* Bash
* C
* C#
* C++
* CodeQL
* Elixir
* Go
* JSX
* Java
* JavaScript
* Lua
* PHP
* Protocol Buffers
* Python
* R
* Ruby
* Rust
* Scala
* Starlark
* Swift
* Typescript

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

GitHub разработала подход навигации по коду на основе библиотеки open source [`tree-sitter`](https://github.com/tree-sitter/tree-sitter), которая ищет все определения и ссылки по репозиторию для поиска сущностей с заданным именем.

Сочетания клавиш можно использовать для навигации в файле кода. Дополнительные сведения см. в разделе [сочетания клавиш;](/ru/get-started/accessibility/keyboard-shortcuts#navigating-within-code-files).

## Использование области символов

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

Поиск символов — это функция поиска кода. Дополнительные сведения см. в разделе [Понимание синтаксиса поиска кода в GitHub](/ru/search-github/github-code-search/understanding-github-code-search-syntax#symbol-qualifier).

1. Выберите репозиторий, а затем перейдите к файлу, содержащему символы.

2. Чтобы открыть область символов над содержимым файла, щелкните <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-code-square" aria-label="code square icon" role="img"><path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path></svg>.

   Кроме того, можно открыть область символов, щелкнув подходящий символ в файле. Нажатые символы выделены желтым цветом при наведении на них указателя мыши.

3. Щелкните символ, который вы хотите найти в области символов или в самом файле.

   * Чтобы найти символ в репозитории в целом, в области символов нажмите кнопку **"Поиск этого символа" в этом репозитории**. Чтобы найти символ во всех репозиториях на GitHub, щелкните **все репозитории**.

4. Чтобы перейти между ссылками на символ, щелкните <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-chevron-down" aria-label="chevron down icon" role="img"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg> или <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-chevron-up" aria-label="chevron up icon" role="img"><path d="M3.22 10.53a.749.749 0 0 1 0-1.06l4.25-4.25a.749.749 0 0 1 1.06 0l4.25 4.25a.749.749 0 1 1-1.06 1.06L8 6.811 4.28 10.53a.749.749 0 0 1-1.06 0Z"></path></svg>.

5. Чтобы перейти к определенной ссылке на символ, щелкните результат поиска символов в разделе **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-chevron-down" aria-label="chevron-down" role="img"><path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path></svg> В этом файле**.

6. Чтобы выйти из поиска определенного символа, щелкните **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-arrow-left" aria-label="arrow left icon" role="img"><path d="M7.78 12.53a.75.75 0 0 1-1.06 0L2.47 8.28a.75.75 0 0 1 0-1.06l4.25-4.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L4.81 7h7.44a.75.75 0 0 1 0 1.5H4.81l2.97 2.97a.75.75 0 0 1 0 1.06Z"></path></svg> Все символы**.

## Переход к определению функции или метода

Вы можете перейти к определению функции или метода в том же репозитории, щелкнув вызов функции или метода в файле.

![Снимок экрана: окно функции. Раздел с названием "Определение", описывается в темно-оранжевый цвет.](/assets/images/help/repository/jump-to-definition-tab.png)

## Поиск всех ссылок на функцию или метод

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

![Снимок экрана: окно функции. Раздел с названием "3 ссылки", описан в темно-оранжевый цвет.](/assets/images/help/repository/find-all-references-tab.png)

## Устранение неполадок навигации по коду

Если навигация по коду включена, но ссылки на определения функций и методов не отображаются:

* Навигация по коду работает только для активных ветвей. Выполните отправку в ветвь и повторите попытку.
* Навигация по коду работает только для репозиториев с менее чем 100 000 файлов.

## Дополнительные материалы

* [О поиске кода на GitHub](/ru/search-github/github-code-search/about-github-code-search)