Skip to main content

Ecossistemas de pacotes com suporte para grafos de dependência

O grafo de dependência aceita vários ecossistemas.

Sobre o grafo de dependência

Para obter uma introdução ao grafo de dependência, consulte Sobre o gráfico de dependências.

Criando o grafo de dependência

Se o grafo de dependência estiver habilitado, ele examinará seu repositório em busca de arquivos de manifesto usados por ecossistemas de pacotes de linguagem de programação. Quando encontrar um dos arquivos de manifesto com suporte, ele analisará o arquivo e criará uma representação do conteúdo, incluindo o nome e a versão de cada pacote. Isso é chamado de "análise estática".

Alguns arquivos definem explicitamente quais versões são usadas para todas as dependências diretas e indiretas. Eles bloqueiam as versões do pacote àquelas incluídas no build e permitem que o Dependabot encontre versões vulneráveis em dependências diretas e indiretas. Se você usar esses formatos, o grafo de dependência será mais preciso, portanto, e eles serão listados na coluna "Arquivos recomendados" na tabela "Ecossistemas de pacotes com suporte". Consulte Ecossistemas de pacotes com suporte.

Ecossistemas de pacotes com suporte por meio de ações de envio de dependência

Além da análise estática do grafo de dependência e do envio automático você pode usar a API de envio de dependência para adicionar dependências do tempo de compilação ao grafo de dependência, ou adicionar dependências dos gerenciadores de pacotes e ecossistemas de sua escolha ao grafo de dependência, mesmo que o ecossistema não esteja na tabela "Ecossistemas de pacotes com suporte". As informações obtidas dessas dependências enviadas fluirão, por sua vez, para Dependabot updates e Dependabot alerts.

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 saber mais sobre os API de envio de dependência, confira Usar a API de envio de dependências.

Ecossistemas de pacote compatíveis

Gerenciador de pacotesIdiomasDependências transitivas estáticasEnvio automático de dependênciaArquivos recomendadosArquivos adicionais
CargoRustCargo.lockCargo.toml
ComposerPHPcomposer.lockcomposer.json
NuGet.NET languages (C#, F#, VB), C++.csproj, .vbproj, .nuspec, .vcxproj, .fsprojpackages.config
Fluxos de trabalho GitHub ActionsYAML.yml, .yaml
Módulos GoIrgo.mod
GradleJava
MavenJava, Scalapom.xml
npmJavaScriptpackage-lock.jsonpackage.json
pipPythonrequirements.txt, pipfile.lockpipfile, setup.py
pnpmJavaScriptpnpm-lock.yamlpackage.json
pubDartpubspec.lockpubspec.yaml
PoetryPythonpoetry.lockpyproject.toml
RubyGemsRubyGemfile.lockGemfile, *.gemspec
Gerenciador de Pacotes SwiftSwiftPackage.resolved
YarnJavaScriptyarn.lockpackage.json

Observação

  • Se você listar as dependências Python em um arquivo setup.py, talvez não seja possível analisar nem listar todas as dependências do projeto.
  • Os fluxos de trabalho do GitHub Actions precisam estar localizados no diretório .github/workflows/ de um repositório para serem reconhecidos como manifestos. As ações ou os fluxos de trabalho referenciados com a sintaxe jobs[*].steps[*].uses ou jobs.<job_id>.uses serão analisados como dependências. Para saber mais, confira Sintaxe de fluxo de trabalho para o GitHub Actions.
  • O Dependabot criará apenas Dependabot alerts para GitHub Actions vulneráveis que usam controle de versão semântico. Você não receberá alertas sobre uma ação vulnerável que usa o controle de versão SHA. Se você usar GitHub Actions com o controle de versão SHA, recomendamos habilitar Dependabot version updates para que seu repositório ou organização mantenha as ações que você usa atualizadas com as versões mais recentes. Para obter mais informações, confira Sobre alertas do Dependabot e Sobre as atualizações da versão do Dependabot.

Eliminação de duplicação de manifestos

O grafo de dependência pode aprender sobre dependências de três maneiras diferentes: análise estática, envio automático e envio manual. Um repositório pode ter vários métodos configurados, o que pode fazer com que o mesmo manifesto do pacote seja verificado várias vezes, potencialmente com saídas diferentes de cada verificação. O grafo de dependência usa a lógica de eliminação de duplicaçã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.

  1. 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.
  2. 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.
  3. Os resultados da análise estática são usados quando nenhum outro dado está disponível.