Os resultados da detecção de dependências relatados pelo GitHub podem ser diferentes dos resultados retornados por outras ferramentas. Existem boas razões para isso e é útil entender como o GitHub determina as dependências para o seu projeto.
O gráfico de dependências só encontra dependências nos manifestos e nos arquivos de bloquei?
O gráfico de dependências inclui automaticamente informações sobre as dependências que são declaradas explicitamente no ambiente. Ou seja, dependências que são especificadas em um manifesto ou um arquivo de bloqueio. O gráfico de dependências, geralmente, também inclui dependências transitivas, mesmo quando não são especificadas em um arquivo de travamento analisando as dependências das dependências em um arquivo de manifesto.
O gráfico de dependências não inclui automaticamente dependências "frouxas". Dependências "soltas" são arquivos individuais copiados de outra fonte e verificados no repositório diretamente ou dentro de um arquivo (como um arquivo ZIP ou JAR), em vez de ser referenciadas pelo manifesto ou arquivo de bloqueio do gerenciador de pacotes.
No entanto, você pode usar o API de envio de dependência para adicionar dependências ao grafo de dependência de um projeto, mesmo que as dependências não sejam declaradas em um manifesto ou arquivo de bloqueio, como dependências resolvidas quando um projeto é criado. Dependências enviadas para um projeto usando a API de envio de dependência mostrarão qual detector foi usado para seu envio e quando elas foram enviadas.Para obter mais informações sobre o API de envio de dependência, consulte AUTOTITLE.
**Verificação:** a dependência ausente para um componente que não está especificado no arquivo de manifesto ou de bloqueio do repositório?
O gráfico de dependências detecta dependências especificadas usando variáveis?
O gráfico de dependência analisa os manifestos conforme eles são enviados para GitHub. O gráfico de dependência não tem acesso ao ambiente de construção do projeto. Portanto, ele não pode resolver variáveis usadas dentro dos manifestos. Se você usar variáveis dentro de um manifesto para especificar o nome, ou o que é mais comum, a versão de uma dependência, essa dependência não será incluída no gráfico de dependências.
No entanto, você pode usar o API de envio de dependência para adicionar dependências ao grafo de dependência de um projeto, mesmo que as dependências só sejam resolvidas durante a construção do projeto. Para obter mais informações sobre API de envio de dependência, consulte Usar a API de envio de dependências.
**Verificação:** a dependência ausente é declarada no manifesto por meio de uma variável para o nome ou a versão?
Existem limites que afetam os dados do gráfico de dependências?
Sim, o grafo de dependência tem limites de tamanho, de número e do local dos arquivos de manifesto que ele processa.
Os limites de processamento afetam o grafo de dependência exibido dentro GitHub e também impedem a criação de Dependabot alerts.
Manifestos com mais de 10 MB de tamanho são ignorados e não geram Dependabot alerts.
Por padrão, GitHub não processará mais de 600 manifestos por repositório. Dependabot não gera Dependabot alerts para manifestos além desse limite, e Dependabot alerts pode apresentar comportamento imprevisível se esse limite for excedido.
Arquivos de manifesto armazenados em diretórios com nomes que costumam ser usados para dependências de fornecedores não são processados. Um diretório cujo nome corresponde às seguintes expressões regulares é considerado um diretório de dependências de fornecedores:
(3rd|[Tt]hird)[-_]?[Pp]arty/(^|/)vendors?/(^|/)[Ee]xtern(als?)?/(^|/)[Vv]+endor/
Exemplos:
- third-party/dependencies/dependency1
- vendors/dependency1
- /externals/vendor1/dependency1
Minhas dependências não parecem estar certas, o que posso fazer?
Se a tabela de dependências do projeto não representar com precisão os manifestos do repositório, você poderá disparar uma recompilação do grafo de dependência.
Na guia do Dependabot repositório, clique em no topo da lista de alertas. Selecione Atualizar Dependabot alerts no menu suspenso. Isso vai enfileirar uma tarefa em segundo plano para processar os manifestos do repositório, detectar dependências novas ou alteradas e atualizar os alertas.
Observação
Você precisa ter permissão para gerenciar alertas de segurança e atualizar o grafo de dependência de um repositório. Confira Gerenciando as configurações de segurança e análise do repositório para obter mais informações sobre como configurar esse acesso. Para reduzir ainda mais o potencial de abuso, a opção Atualizar Dependabot alerts só pode ser disparada uma vez por hora por repositório.
Clicando em Atualizar Dependabot alerts, apenas os arquivos de manifesto serão escaneados. Se o gráfico de dependência também incluir as informações de dependência em tempo de construção enviadas usando o API de envio de dependência, rodar mais uma vez a Ação ou processo externo que gera e envia as informações de dependência também acionará uma reconstrução do gráfico de dependência do repositório. Para obter mais informações sobre API de envio de dependência, confira Usar a API de envio de dependências.
Se você estiver usando o envio automático de dependências, efetuar push de um commit que atualiza o arquivo de manifesto do repositório vai disparar a execução da ação de envio automático.
Em todos os casos, o carimbo de data/hora na parte superior da lista de alertas indica a última vez em que o grafo de dependência foi criado.
Leitura adicional
-
[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph) -
[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository) -
[AUTOTITLE](/code-security/dependabot/troubleshooting-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies) -
[AUTOTITLE](/code-security/dependabot/troubleshooting-dependabot/troubleshooting-dependabot-errors)