O grafo de dependência pode identificar as dependências do projeto usando os métodos a seguir.
| Método | Como funciona |
|---|
**Análise estática** | Analisa os arquivos de manifesto e bloqueio em seu repositório |
| | | | API de envio de dependência | Aceita dados de dependência que você envia programaticamente |
Depois que as dependências estiverem no gráfico, você poderá receber Dependabot alerts e Dependabot security updates para quaisquer vulnerabilidades conhecidas.
Análise estática
Quando você habilita o grafo de dependência, GitHub verifica o repositório em busca de arquivos de manifesto com suporte e analisa o nome e a versão de cada pacote. O gráfico é atualizado quando você altera um arquivo de manifesto ou bloqueio compatível em seu branch padrão.
A análise estática pode identificar:
-
**Dependências diretas** explicitamente definidas em um arquivo de manifesto ou lock. -
**Dependências indiretas** — dependências dessas dependências diretas, também chamadas de "dependências transitivas", mas somente se forem definidas em um manifesto ou arquivo de bloqueio, não quando forem resolvidas no momento da compilação.
Para o grafo mais confiável, você deve usar arquivos de bloqueio (ou seus equivalentes), pois eles definem exatamente quais versões das dependências diretas e indiretas você usa no momento. Os arquivos de bloqueio também garantem que todos os colaboradores do repositório estejam usando as mesmas versões, o que facilitará o teste e a depuração de código.
A API de envio de dependência
Você pode chamar o API de envio de dependência em seu próprio script ou fluxo de trabalho. Isso será útil se:
- Você precisa enviar dependências transitivas que não podem ser detectadas a partir de arquivos de bloqueio.
- Você precisa criar uma lógica personalizada ou usar um sistema de CI/CD externo.
As dependências são enviadas para API de envio de dependência na forma de um instantâneo. Esta é uma lista de dependências associadas a um commit SHA e outros metadados, refletindo o estado atual do seu repositório.
Se você estiver chamando a API em um fluxo de trabalho GitHub Actions, poderá usar uma ação pré-configurada para seu ecossistema que coleta automaticamente as dependências e as envia para a API. Caso contrário, você poderá escrever sua própria ação ou chamar a API de um sistema externo.
As dependências enviadas estão disponíveis nos insights de dependência da sua organização.
Para saber mais, confira Usar a API de envio de dependências.
Priorização
Um repositório pode usar vários métodos para submissão de dependências, o que pode resultar no manifesto do mesmo pacote sendo analisado múltiplas vezes, potencialmente produzindo saídas diferentes a cada análise. O grafo de dependência usa a lógica de deduplicação para analisar as saídas, priorizando as informações mais precisas para cada arquivo de manifesto.
O grafo de dependência exibe apenas uma instância de cada arquivo de manifesto usando as regras de precedência a seguir.
-
**Os envios de usuário** têm a prioridade mais alta, pois geralmente são criados durante compilações de artefatos que têm as informações mais completas.- Se houver vários instantâneos manuais de detectores diferentes, eles serão classificados em ordem alfabética por correlator e pelo primeiro usado.
- Se houver dois correlacionadores com o mesmo detector, as dependências resolvidas serão mescladas. Para obter mais informações sobre correlacionadores e detectores, consulte Pontos de extremidade da API REST para envio de dependências.
-
**Os envios automáticos** têm a segunda prioridade mais alta, pois também são criados durante compilações de artefato, mas não são enviados pelos usuários. -
**Os resultados da análise estática** são usados quando nenhum outro dado está disponível.