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 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.
Entretanto, é possível usar a API de envio de dependência para adicionar dependências ao grafo de dependência de um projeto, mesmo que essas dependências não estejam declaradas em arquivos de manifesto ou de bloqueio, como as dependências resolvidas durante o desenvolvimento do projeto. 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 os API de envio de dependência, consulte "Usar a API de envio de dependências".
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ências analisa como são carregados 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.
Entretanto, é possível usar a API de envio de dependência para adicionar dependências ao grafo de dependência de um projeto, mesmo que essas dependências sejam resolvidas somente durante o desenvolvimento do projeto. Para obter mais informações sobre o 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 uma categoria de limites:
-
Limites de processamento
Eles afetam o gráfico de dependências exibido dentro de GitHub e também impedem que sejam criados Dependabot alerts.
Manifestos com tamanho superior a 0.5 MB são processados apenas para contas corporativas. Para outras contas, manifestos acima de 0,5 MB são ignorados e não criarão Dependabot alerts.
Por padrão, GitHub não processará mais de 150 manifestos por repositório. Os Dependabot alerts não são criados para manifestos além desse limite, e os Dependabot alerts podem se comportar de forma 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