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.
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.
Idioma | Navegação de código baseada em pesquisa | Navegaçã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".
-
Selecione um repositório e navegue até um arquivo que contenha símbolos.
-
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.
-
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.
-
Para navegar entre as referências de um símbolo, clique em ou em .
-
Para navegar para uma referência específica a um símbolo, clique em um resultado da pesquisa de símbolo em Neste arquivo.
-
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.
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.
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.
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.
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.