Skip to main content

Von Abhängigkeitsdiagrammen unterstützte Paket-Ökosysteme

Abhängigkeitsdiagramm unterstützt eine Vielzahl von Ökosystemen.

Informationen zum Abhängigkeitsdiagramm

Eine Einführung in das Abhängigkeitsdiagramm finden Sie unter Informationen zum Abhängigkeitsdiagramm.

Erstellen des Abhängigkeitsdiagramms

Wenn das Abhängigkeitsdiagramm aktiviert ist, wird Ihr Repository auf Manifest-Dateien überprüft, die von Ökosystemen für Programmiersprachenpakete verwendet werden. Wenn eine der unterstützten Manifest-Dateien gefunden wird, wird die Datei analysiert und eine Darstellung des Inhalts generiert, einschließlich des Namens und der Version jedes Pakets. Das wird als „statische Analyse“ bezeichnet.

Einige Dateien definieren explizit, welche Versionen für alle direkten und indirekten Abhängigkeiten verwendet werden. Sie sperren die Paketversionen auf diejenigen, die im Build enthalten sind, und ermöglichen es Dependabot, anfällige Versionen sowohl in direkten als auch in indirekten Abhängigkeiten zu finden. Wenn Sie diese Formate verwenden, ist Ihr Abhängigkeitsdiagramm genauer. Deshalb sind sie in der Tabelle „Unterstützte Paketökosysteme“ in der Spalte „Empfohlene Dateien“ aufgeführt. Weiter Informationen unter Unterstützte Paket-Ökosysteme. Indirekte Abhängigkeiten, die aus einer Manifest-Datei (oder einer entsprechenden anderen Datei) abgeleitet werden, sind von den Dependabot-Prüfungen auf unsichere Abhängigkeiten ausgeschlossen.

Bei Ökosystemen, die transitive Abhängigkeiten zur Build-Zeit auflösen, bietet die statische Analyse keine umfassende Ansicht der Abhängigkeitsstruktur. Für diese Ökosysteme gibt es zwei Ansätze, die GitHub Actions verwendet: automatische und manuelle Abhängigkeitsübermittlung. In beiden Fällen generiert eine externe Aktion eine vollständige Abhängigkeitsstruktur und lädt sie in die Abhängigkeitsübermittlungs-API hoch. Sie können die automatische Übermittlung für unterstützte Ökosysteme auf der Einstellungsseite Ihres Repositorys aktivieren. Weitere Informationen finden Sie unter Konfigurieren der automatischen Abhängigkeitseinreichung für Ihr Repository.

Paket-Ökosysteme, die über Abhängigkeits-Übermittlungsaktionen unterstützt werden

Zusätzlich zur statischen Analyse und automatischen Übermittlung des Abhängigkeitsdiagramms können Sie die Abhängigkeitsübermittlungs-API verwenden, um dem Abhängigkeitsdiagramm Build-Zeitabhängigkeiten hinzuzufügen oder Abhängigkeiten von Paket-Managern und Ökosystemen Ihrer Wahl zum Abhängigkeitsdiagramm hinzuzufügen, auch wenn das Ökosystem nicht in der Tabelle „Unterstützte Paketökosysteme“ aufgeführt wird. Abhängigkeits-Informationen von diesen übermittelten Abhängigkeiten fließen wiederum in Dependabot updates und Dependabot alerts.

Abhängigkeiten, die mit der Abhängigkeitsübermittlungs-API an ein Projekt übermittelt wurden, zeigen an, welche Erkennung für die Übermittlung verwendet wurde und wann die Übermittlung erfolgt ist. Weitere Informationen zur Abhängigkeitsübermittlungs-API finden Sie unter Verwenden der Abhängigkeitsübermittlungs-API.

Unterstützte Paketökosysteme

Paket-ManagerLanguagesStatische transitive AbhängigkeitenAutomatische AbhängigkeitseinreichungEmpfohlene DateienZusätzliche Dateien
BazelStarlark
          `MODULE.bazel`, `WORKSPACE` | 
          `MODULE.bazel.lock`, `maven_install.json``*.MODULE.bazel` |

| | | Cargo | Rust | | | Cargo.lock | Cargo.toml | | Composer | PHP | | | composer.lock | composer.json | | NuGet | .NET-Sprachen (C#, F#, VB), C++ | | | .csproj, , .vbproj``.nuspec, , .vcxproj``.fsproj | packages.config | | GitHub Actions-Workflows | YAML | | | .yml, .yaml | | | Go-Module | Go | | | go.mod| | | Gradle | Java | | | | | | | | Julia | Julia | | | Manifest.toml | Project.toml | | | | Maven | Java, Scala | | | pom.xml | | | npm | JavaScript | | | package-lock.json | package.json| | | | OpenTofu | HCL | | | .terraform.lock.hcl | .tf, .tofu | | | | pip | Python | | | requirements.txt, pipfile.lock | pipfile, setup.py | | pnpm | JavaScript | | | pnpm-lock.yaml | package.json | | pub | Dart | | | pubspec.lock | pubspec.yaml | | Poetry | Python | | | poetry.lock | pyproject.toml | | RubyGems | Ruby | | | Gemfile.lock | Gemfile, *.gemspec | | Swift-Paket-Manager | Swift | | | Package.resolved | | | Yarn | JavaScript | | | yarn.lock | package.json |

Hinweis

  • Die Spalte Static transitive dependencies (Statische transitive Abhängigkeiten) gibt an, ob statische Analysen die Bezeichnungen direct und transitive für abhängige Pakete in diesem Ökosystem hinzufügen. Abhängigkeitsübermittlungsaktionen (automatisch oder manuell konfiguriert) können transitive Informationen für Ökosysteme hinzufügen, in denen statische Analysen nicht möglich sind.
  • Wenn du deine Python-Abhängigkeiten in einer setup.py-Datei auflistest, können möglicherweise nicht alle Abhängigkeiten in deinem Projekt analysiert und aufgelistet werden.
  • GitHub Actions-Workflows müssen sich im .github/workflows/-Verzeichnis eines Repositorys befinden, um als Manifeste erkannt zu werden. Alle Aktionen oder Workflows, auf die mithilfe der Syntax jobs[*].steps[*].uses oder jobs.<job_id>.uses verwiesen wird, werden als Abhängigkeiten analysiert. Weitere Informationen finden Sie unter Workflowsyntax für GitHub Actions.
  • Für GitHub Actions werden Dependabot alerts nur für Aktionen generiert, die semantische Versionierung verwenden, nicht für SHA-Versionierung. Weitere Informationen findest du unter Informationen zu Dependabot-Warnungen und Informationen zu Updates von Dependabot-Versionen.

Gemeinschaftlich gepflegte Ökosysteme

Die folgenden Ökosysteme werden von ihren vorgelagerten Community-Betreuern gepflegt. GitHub integriert Dependabot mit diesen Ökosystemen, verwaltet sie jedoch nicht direkt.

ÖkosystemGepflegt von
JuliaJulia Community
OpenTofuOpenTofu Community
pubDart-Community

Deduplizierung von Manifesten

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.