Skip to main content
Publicamos atualizações frequentes em nossa documentação, e a tradução desta página ainda pode estar em andamento. Para obter as informações mais atualizadas, acesse a documentação em inglês.

Sobre o gráfico de dependências

Você pode usar o gráfico de dependências para identificar todas as dependências do seu projeto. O gráfico de dependências é compatível com uma série de ecossistemas de pacotes populares.

Sobre o gráfico de dependências

O grafo de dependência é um resumo dos arquivos de manifesto e de bloqueio armazenados em um repositório e das dependências enviadas ao repositório usando a API Envio de dependência (beta). Para cada repositório, ele mostra:

  • As dependências, os ecossistemas e os pacotes do qual depende
  • Dependentes, os repositórios e pacotes que dependem dele

Quando você efetua push de um commit para o GitHub que altera ou adiciona um arquivo de manifesto ou de bloqueio compatível para o branch padrão, o grafo de dependência é atualizado automaticamente. Além disso, o grafo é atualizado quando alguém efetua push de uma alteração no repositório de uma das suas dependências. Para obter informações sobre os ecossistemas compatíveis e os arquivos de manifesto, confira "Ecossistemas de pacotes compatíveis" abaixo.

Além disso, você pode usar a API de envio de dependência (beta) para enviar dependências do gerenciador de pacotes ou ecossistema de sua escolha, mesmo que o ecossistema não tenha suporte no grafo de dependência para análise de arquivo de bloqueio ou manifesto. O grafo de dependência exibirá as dependências enviadas agrupadas por ecossistema, mas separadamente das dependências analisadas dos arquivos de bloqueio ou manifesto. Para obter mais informações sobre a API de envio de dependências, confira "Como usar a API de envio de dependência".

Ao criar um pull request que contém alterações para dependências direcionadas ao branch padrão, GitHub usará o gráfico de dependências para adicionar revisões de dependências ao pull request. Eles indicam se as dependências contêm vulnerabilidades e, em caso afirmativo, a versão da dependência na qual a vulnerabilidade foi corrigida. Para obter mais informações, confira "Sobre a análise de dependência".

Disponibilidade do gráfico de dependências

O grafo de dependência é gerado automaticamente para todos os repositórios públicos. Você pode optar por habilitá-lo para forks e repositórios privados. Para obter mais informações, confira "Gerenciando as configurações de segurança e análise do repositório".

Os administradores de repositórios também podem configurar o gráfico de dependências para repositórios privados. Para obter mais informações, confira "Configurando o grafo de dependência".

Dependências incluídas

O grafo de dependência inclui todas as dependências de um repositório detalhadas nos arquivos de manifesto e de bloqueio, ou um equivalente, para ecossistemas com suporte, bem como todas as dependências enviadas usando a API Envio de dependência (beta). Isso inclui:

  • As dependências diretas, que são definidas explicitamente em um arquivo de manifesto ou de bloqueio ou que foram enviadas usando a API Envio de dependência (beta)
  • Dependências indiretas dessas dependências diretas, também conhecidas como dependências transitórias ou subdependências

O grafo de dependência identifica as dependências indiretas explicitamente por meio de um arquivo de bloqueio ou verificando as dependências das dependências diretas. Para o gráfico mais confiável, você deve usar os arquivos de bloqueio (ou o equivalente deles), pois definem exatamente quais versões das dependências diretas e indiretas você usa atualmente. Se você usar arquivos de bloqueio, você também terá certeza de que todos os contribuidores do repositório usarão as mesmas versões, o que facilitará para você testar e depurar o código.

Para saber mais sobre como o GitHub ajuda você a entender as dependências do seu ambiente, confira "Sobre a segurança da cadeia de suprimento".

Dependentes incluídos

Para repositórios públicos, apenas repositórios públicos que dependem dele ou de pacotes que publica são relatados. Essas informações não foram relatadas para repositórios privados.

Usar o gráfico de dependências

Você pode usar o gráfico de dependências para:

Ecossistemas de pacote compatíveis

Os formatos recomendados definem explicitamente quais versões são usadas para todas as dependências diretas e indiretas. Se você usar esses formatos, o grafo de dependência será mais preciso. Ele também reflete a configuração de build atual e permite que o grafo de dependência relate as vulnerabilidades em dependências diretas e indiretas. As dependências indiretas que são inferidas por meio de um arquivo de manifesto (ou um equivalente), são excluídas das verificações de dependências não seguras.

| Gerenciador de pacotes | Idiomas | Formatos recomendados | Todos os formatos com suporte | | --- | --- | --- | ---| | Cargo | Rust | Cargo.lock | Cargo.toml, Cargo.lock | | Composer | PHP | composer.lock | composer.json, composer.lock | | NuGet | Linguagens .NET (C#, F#, VB), C++ | .csproj, .vbproj, .nuspec, .vcxproj, .fsproj | .csproj, .vbproj, .nuspec, .vcxproj, .fsproj, packages.config | | Fluxos de trabalho do GitHub Actions [1] | YAML | .yml, .yaml | .yml, .yaml | | Módulos do Go | Go | go.mod| go.mod | | Maven | Java, Scala | pom.xml | pom.xml | | npm | JavaScript | package-lock.json | package-lock.json, package.json| | pip | Python | requirements.txt, pipfile.lock | requirements.txt, pipfile, pipfile.lock, setup.py[2] | | pub | Dart | pubspec.lock | pubspec.yaml, pubspec.lock | | Python Poetry | Python | poetry.lock | poetry.lock, pyproject.toml | | RubyGems | Ruby | Gemfile.lock | Gemfile.lock, Gemfile, *.gemspec | | Yarn | JavaScript | yarn.lock | package.json, yarn.lock |

[1] Os fluxos de trabalho do GitHub Actions devem ficar 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 obter mais informações, confira "Sintaxe de fluxo de trabalho para o GitHub Actions".

[2] Caso você liste as dependências do Python em um arquivo setup.py, talvez não possamos analisar nem listar todas as dependências do projeto.

Observação: as dependências do fluxo de trabalho do GitHub Actions são exibidas no grafo de dependência para fins informativos. Os alertas de dependência não são atualmente compatíveis com os fluxos de trabalho de GitHub Actions.

Você pode usar a API Envio de dependência (beta) para adicionar dependências do gerenciador de pacotes ou do ecossistema de sua escolha ao grafo de dependência, mesmo que o ecossistema não esteja na lista de ecossistemas com suporte acima. O grafo de dependência exibirá as dependências enviadas agrupadas por ecossistema, mas separadamente das dependências analisadas dos arquivos de manifesto ou de bloqueio. Você só obterá Dependabot alerts das dependências de um dos ecossistemas com suporte do GitHub Advisory Database. Para obter mais informações sobre a API de envio de dependências, confira "Como usar a API de envio de dependência".

Leitura adicional