Skip to main content

Enterprise Server 3.20 ist derzeit als Release Candidate verfügbar.

How the dependency graph recognizes dependencies

The dependency graph automatically analyzes manifest files. You can submit data for dependencies that cannot be detected automatically.

Wer kann dieses Feature verwenden?

Das Abhängigkeitsdiagramm ist für alle Repositorys verfügbar.

In diesem Artikel

The dependency graph can identify your project's dependencies using the following methods.

MethodHow it works
Static analysisParses manifest and lock files in your repository
Abhängigkeitsübermittlungs-APIAccepts dependency data you submit programmatically

Once dependencies are in the graph, you can receive Dependabot alerts and Dependabot security updates for any known vulnerabilities.

Static analysis

When you enable the dependency graph, GitHub scans your repository for supported manifest files and parses each package's name and version. The graph updates when you change a supported manifest or lock file on your default branch.

Static analysis can identify:

  • Direct dependencies explicitly defined in a manifest or lock file
  • Indirect dependencies—dependencies of these direct dependencies, also called "transitive dependencies"—but only if they are defined in a manifest or lock file, not if they are resolved at build time

For the most reliable graph, you should use lock files (or their equivalent), because they define exactly which versions of the direct and indirect dependencies you currently use. Lock files also ensure that all contributors to the repository are using the same versions, which will make it easier for you to test and debug code.

The Abhängigkeitsübermittlungs-API

You can call the Abhängigkeitsübermittlungs-API in your own script or workflow. This is useful if:

  • You need to submit transitive dependencies that cannot be detected from lock files.
  • You need to create custom logic or are using an external CI/CD system.

Dependencies are submitted to the Abhängigkeitsübermittlungs-API in the form of a snapshot. This is a list of dependencies associated with a commit SHA and other metadata, reflecting the current state of your repository.

If you are calling the API in a GitHub Actions workflow, you can use a pre-made action for your ecosystem that automatically gathers the dependencies and submits them to the API. Otherwise, you can write your own action or call the API from an external system.

Du kannst die REST-API verwenden, um Abhängigkeiten für ein Projekt zu übermitteln. Dadurch kannst du Abhängigkeiten wie die, die beim Kompilieren oder Erstellen von Software aufgelöst werden, zum Abhängigkeitsdiagrammfeature von GitHub hinzufügen und ein vollständigeres Bild aller Abhängigkeiten deines Projekts bieten.

Das Abhängigkeitsdiagramm zeigt alle Abhängigkeiten, die du mithilfe der API übermittelst, zusätzlich zu allen Abhängigkeiten, die von Manifest- oder Sperrdateien im Repository aus identifiziert werden (z. B. eine package-lock.json-Datei in einem JavaScript-Projekt). Weitere Informationen zur Anzeige des Abhängigkeitsdiagramms findest du unter Untersuchen der Abhängigkeiten eines Repositorys.

Übermittelte Abhängigkeiten erhalten Dependabot alerts und Dependabot security updates für alle bekannten Sicherheitsrisiken. Sie erhalten Dependabot alerts nur für Abhängigkeiten, die aus einem der unterstützten Ökosysteme für GitHub Advisory Database stammen. Weitere Informationen zu diesen Ökosystemen findest du unter Informationen zu GitHub Advisory Database. Für transitive Abhängigkeiten, die über die Abhängigkeitsübermittlungs-API übermittelt werden, öffnet Dependabot automatisch Pull Requests, um die übergeordnete Abhängigkeit zu aktualisieren, wenn ein Update verfügbar ist.

Übermittelte Abhängigkeiten sind nicht in den Abhängigkeitserkenntnissen deiner Organisation verfügbar.

For more information, see Verwenden der Abhängigkeitsübermittlungs-API.

Prioritization

Das Abhängigkeitsdiagramm kann sich auf drei verschiedene Arten über Abhängigkeiten informieren: statische Analyse, automatische Übermittlung und manuelle Übermittlung. Für ein Repository können mehrere Methoden konfiguriert sein, was dazu führt, dass dasselbe Paketmanifest mehrmals gescannt wird, möglicherweise mit unterschiedlichen Ausgaben der einzelnen Überprüfungen. Das Abhängigkeitsdiagramm verwendet Deduplizierungslogik, um die Ausgaben zu analysieren und die genauesten Informationen für jede Manifestdatei zu priorisieren.

Das Abhängigkeitsdiagramm zeigt nur eine Instanz jeder Manifestdatei mithilfe der folgenden Rangfolgeregeln an.

  1. Benutzerübermittlungen haben höchste Priorität, da sie in der Regel während Artefaktbuilds erstellt werden, die vollständige Informationen enthalten.
    • Wenn mehrere manuelle Momentaufnahmen aus verschiedenen Detektoren vorhanden sind, werden sie alphabetisch nach Korrelator und dem ersten verwendeten sortiert.
    • Wenn es zwei Korrelatoren mit demselben Detektor gibt, werden die aufgelösten Abhängigkeiten zusammengeführt. Weitere Informationen zu Korrelatoren und Detektoren findest du unter REST-API-Endpunkte für die Abhängigkeitsübermittlung.
  2. Automatische Übermittlungen haben die zweithöchste Priorität, da sie auch während der Artefaktbuilds erstellt werden, aber nicht von Benutzern übermittelt werden.
  3. Statische Analyseergebnisse werden verwendet, wenn keine anderen Daten verfügbar sind.