Skip to main content

Navegar por códigos no GitHub

Você pode entender as relações de dentro e entre os repositórios navegando por códigos diretamente no GitHub.

Sobre a navegação do código no GitHub

A navegação por código ajuda você a ler, navegar e compreender o código mostrando e vinculando definições de uma entidade nomeada correspondente a uma referência a essa entidade, além das referências correspondentes à definição de uma entidade.

Captura de tela que mostra um arquivo de código com uma função chamada "solicitação" realçada e uma janela pop-up com informações sobre a função abaixo. O pop-up tem duas guias: "Definição" e "Referência".

A navegação no código usa a biblioteca de código aberto tree-sitter. Há suporte para as linguagens e as estratégias de navegação a seguir.

IdiomaNavegação de código baseada em pesquisaNavegação de código precisa
Bash
C
C#
C++
CodeQL
Elixir
Go
JSX
Java
JavaScript
Lua
PHP
Buffers de protocolo
Python
R
Ruby
Rust
Scala
Starlark
Swift
TypeScript

Você não precisa configurar nada no seu repositório para habilitar a navegação do código. Nós iremos extrair automaticamente informações de navegação de código precisas e baseadas em pesquisa para essas linguagens compatíveis em todos os repositórios e você pode alternar entre as duas abordagens de navegação de código compatíveis se sua linguagem de programação for compatível com ambos.

O GitHub desenvolveu duas abordagens de navegação pelo código com base na biblioteca tree-sitter e stack-graphs de código aberto:

  • Baseado em pesquisa – busca todas as definições e referências em um repositório para encontrar entidades com um determinado nome
  • Preciso – resolve definições e referências baseadas no conjunto de classes, funções, e definições importadas em um determinado ponto do seu código

Para saber mais sobre essas abordagens, confira "Navegação precisa e baseada em pesquisa".

As versões futuras adicionarão a navegação de código precisa para mais linguagens, que é uma abordagem de navegação de código que pode fornecer resultados mais precisos.

É possível usar atalhos de teclado para navegar em um arquivo de código. Para obter mais informações, confira "Atalhos do teclado".

Usar o painel de símbolos

Agora, com o painel de símbolos, é possível exibir e navegar rapidamente por símbolos como funções ou classes no código. É possível pesquisar um símbolo em um único arquivo, em todos os arquivos de um repositório ou até mesmo em todos os repositórios públicos no GitHub.

A pesquisa de símbolo é um recurso da pesquisa de código. Para obter mais informações, confira "Entender a sintaxe de pesquisa de código do GitHub".

  1. Selecione um repositório e navegue até um arquivo que contenha símbolos.

  2. Para abrir o painel de símbolos, acima do conteúdo do arquivo, clique em .

    Como alternativa, é possível abrir o painel de símbolos clicando em um símbolo elegível no arquivo. Os símbolos clicáveis são realçados em amarelo quando você passa o mouse sobre eles.

  3. Clique no símbolo que você deseja encontrar no painel de símbolos ou no próprio arquivo.

    • Para pesquisar um símbolo no repositório como um todo, clique no painel de símbolos e depois em Pesquisar este símbolo neste repositório. Para procurar um símbolo em todos os repositórios no GitHub, clique em Todos os repositórios.
  4. Para navegar entre as referências de um símbolo, clique em ou em .

  5. Para navegar para uma referência específica a um símbolo, clique em um resultado da pesquisa de símbolo em Neste arquivo.

  6. Para sair da pesquisa de um símbolo específico, clique em Todos os símbolos.

Pular para a definição de uma função ou método

Você pode pular para uma definição de uma função ou método dentro do mesmo repositório, clicando na chamada dessa função ou método em um arquivo.

Captura de tela da janela de função. Uma seção, intitulada "Definição", está contornada em laranja escuro.

Localizar todas as referências de uma função ou método

Encontre todas as referências de uma função ou de um método dentro do mesmo repositório clicando na função ou na chamada de método de um arquivo.

Captura de tela da janela de função. Uma seção, intitulada "Três Referências", está contornada em laranja escuro.

Navegação precisa e baseada em pesquisa

Algumas linguagens compatíveis com o GitHub têm acesso à navegação de código precisa, que usa um algoritmo (com base na biblioteca de código aberto stack-graphs) que resolve definições e referências baseado no conjunto de classes, nas funções e nas definições importadas que são visíveis em qualquer ponto específico do código. As outras linguagens usam a navegação de código baseada em pesquisa, que pesquisa todas as definições e referências em um repositório para encontrar entidades com um nome especificado. Ambas as estratégias são eficazes na busca de resultados e ambas evitam resultados inadequados como, por exemplo, comentários mas uma navegação de código precisa pode dar resultados mais precisos, especialmente quando um repositório contém vários métodos ou funções com o mesmo nome.

Se você não vir os resultados que você espera de uma consulta precisa de código de navegação, você poderá clicar no link "baseado em pesquisa" na janela exibida para realizar uma navegação baseada na pesquisa.

Captura de tela da janela de função. Dois links, rotulados como "Pesquisar esse símbolo neste repositório" e "todos os repositórios", estão contornados em laranja escuro.

Se seus resultados precisos estiverem incorretos, você poderá enviar uma solicitação de suporte.

Navegação de código precisa entre repositórios

A navegação de código entre repositórios está disponível para linguagens compatíveis com a navegação de código precisa e o grafo de dependência. Para obter mais informações, confira "Sobre o gráfico de dependências". Com a navegação de código entre repositórios, é possível avançar para a definição de funções ou variáveis definidas nas dependências importadas pelo projeto, caso essas dependências sejam repositórios hospedados pelo GitHub. No momento, a navegação de código entre repositórios não dá suporte a solicitações de localização de todas as referências.

Captura de tela de um arquivo de código no GitHub. Na linha "importar o.s.", o nome do módulo "o.s." está realçado, e um modal "Definições" mostra um resultado marcado com "resultado entre repositórios".

Solução de problemas na navegação de código

Se a navegação de código estiver habilitada para você, mas você não vir links para as definições de funções e métodos:

  • A navegação de código só funciona para branches ativos. Faça um push no branch e tente novamente.
  • O código de navegação só funciona para repositórios com menos de 100.000 arquivos.

Leitura adicional