Skip to main content

Wie das Abhängigkeitsdiagramm Abhängigkeiten erkennt

Das Abhängigkeitsdiagramm analysiert automatisch Manifestdateien. Sie können Daten für Abhängigkeiten senden, die nicht automatisch erkannt werden können.

Wer kann dieses Feature verwenden?

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

Das Abhängigkeitsdiagramm kann die Abhängigkeiten Ihres Projekts mithilfe der folgenden Methoden identifizieren.

MethodeSo funktioniert es
Statische AnalyseAnalysiert Manifest- und Sperrdateien in Ihrem Repository
Abhängigkeitsübermittlungs-APIAkzeptiert Abhängigkeitsdaten, die Sie programmgesteuert übermitteln

Sobald sich Abhängigkeiten im Diagramm befinden, können Sie Dependabot alerts und Dependabot security updates für alle bekannten Sicherheitslücken erhalten.

Statische Analyse

Wenn Sie das Abhängigkeitsdiagramm aktivieren, GitHub überprüft Das Repository auf unterstützte Manifestdateien und analysiert den Namen und die Version jedes Pakets. Das Diagramm wird aktualisiert, wenn Sie ein unterstütztes Manifest oder eine Sperrdatei in Ihrer Standardverzweigung ändert.

Statische Analysen können Folgendes identifizieren:

  • Direkte Abhängigkeiten , die in einer Manifest- oder Sperrdatei explizit definiert sind
  • Indirekte Abhängigkeiten – Abhängigkeiten dieser direkten Abhängigkeiten, auch als "transitive Abhängigkeiten" bezeichnet – aber nur, wenn sie in einer Manifest- oder Sperrdatei definiert sind und nicht, wenn sie zur Buildzeit aufgelöst werden

Für das zuverlässigste Diagramm sollten Sie Sperrdateien (oder deren Entsprechung) verwenden, da sie genau definieren, welche Versionen der direkten und indirekten Abhängigkeiten Sie derzeit verwenden. Sperren von Dateien stellen außerdem sicher, dass alle Mitwirkenden am Repository dieselben Versionen verwenden, wodurch das Testen und Debuggen von Code erleichtert wird.

Der Abhängigkeitsübermittlungs-API

Sie können das Abhängigkeitsübermittlungs-API in Ihrem eigenen Skript oder Workflow aufrufen. Dies ist nützlich, wenn:

  • Sie müssen transitive Abhängigkeiten übermitteln, die nicht aus Sperrdateien erkannt werden können.
  • Sie müssen benutzerdefinierte Logik erstellen oder ein externes CI/CD-System verwenden.

Abhängigkeiten werden in Form einer Momentaufnahme an das Abhängigkeitsübermittlungs-API übermittelt. Dies ist eine Liste der Abhängigkeiten, die einem Commit-SHA und anderen Metadaten zugeordnet sind und den aktuellen Status Ihres Repositorys widerspiegeln.

Wenn Sie die API in einem GitHub Actions Workflow aufrufen, können Sie eine vorgefertigte Aktion für Ihr Ökosystem verwenden, die die Abhängigkeiten automatisch erfasst und an die API übermittelt. Andernfalls können Sie ihre eigene Aktion schreiben oder die API von einem externen System aufrufen.

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

Weitere Informationen finden Sie unter Verwenden der Abhängigkeitsübermittlungs-API.

Priorisierung

Ein Repository kann mehrere Methoden für die Abhängigkeitsübermittlung verwenden, was dazu führen kann, dass dasselbe Paketmanifest mehrmals gescannt wird, wodurch unterschiedliche Ausgaben bei jedem Scan möglich sind. 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 die höchste Priorität, da sie in der Regel während des Erstellens von Artefakten entstehen und die vollständigsten 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 finden Sie unter REST-API-Endpunkte für die Abhängigkeitsübermittlung.
  2.        **Automatische Übermittlungen** haben die nä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.