Le graphique de dépendances peut identifier les dépendances de votre projet à l’aide des méthodes suivantes.
| Méthode | Fonctionnement |
|---|---|
| Analyse statique | Analyse le manifeste et verrouille les fichiers dans votre référentiel |
| API de soumission de dépendances | Accepte les données de dépendance que vous soumettez par programmation |
Une fois que les dépendances se trouvent dans le graphique, vous pouvez recevoir Dependabot alerts et Dependabot security updates pour toutes les vulnérabilités connues.
Analyse statique
Lorsque vous activez le graphique de dépendances, GitHub analyse votre référentiel pour rechercher les fichiers manifeste pris en charge et analyse le nom et la version de chaque package. Le graphique est mis à jour lorsque vous modifiez un manifeste ou un fichier de verrouillage pris en charge sur votre branche.
L’analyse statique peut identifier :
- Dépendances directes explicitement définies dans un manifeste ou un fichier de verrouillage
- Dépendances indirectes : dépendances de ces dépendances directes, également appelées « dépendances transitives », mais uniquement si elles sont définies dans un manifeste ou un fichier de verrouillage, et non si elles sont résolues au moment de la génération
Pour le graphique le plus fiable, vous devez utiliser des fichiers de verrouillage (ou leur équivalent), car ils définissent exactement les versions des dépendances directes et indirectes que vous utilisez actuellement. Les fichiers de verrouillage garantissent également que tous les contributeurs au référentiel utilisent les mêmes versions, ce qui facilite le test et le débogage du code.
Le API de soumission de dépendances.
Vous pouvez appeler le API de soumission de dépendances dans votre propre script ou workflow. Cela est utile si :
- Vous devez envoyer des dépendances transitives qui ne peuvent pas être détectées à partir de fichiers de verrouillage.
- Vous devez créer une logique personnalisée ou utiliser un système CI/CD externe.
Les dépendances sont soumises sous forme d’un instantané à la API de soumission de dépendances. Il s’agit d’une liste de dépendances associées à un SHA de commit ainsi qu’à d’autres métadonnées, reflétant l’état actuel de votre référentiel.
Si vous appelez l’API dans un GitHub Actions flux de travail, vous pouvez utiliser une action prédéfinie pour votre écosystème qui collecte automatiquement les dépendances et les envoie à l’API. Sinon, vous pouvez écrire votre propre action ou appeler l’API à partir d’un système externe.
Les dépendances soumises sont pas disponibles dans les insights de dépendance de votre organisation.
Pour plus d’informations, consultez « Utilisation de l’API de soumission de dépendances ».
Hiérarchisation
Un référentiel peut utiliser plusieurs méthodes pour la soumission de dépendances, ce qui peut entraîner l’analyse du même manifeste de package plusieurs fois, potentiellement avec des sorties différentes de chaque analyse. Le graphe des dépendances utilise une logique de déduplication pour analyser les sorties, en donnant la priorité aux informations les plus précises pour chaque fichier manifeste.
Le graphe des dépendances affiche uniquement une instance de chaque fichier manifeste à l’aide des règles de priorité suivantes.
-
**Les soumissions des utilisateurs** ont la priorité absolue, car elles sont généralement créées lors de la génération des artefacts et contiennent donc les informations les plus complètes.- S’il existe plusieurs instantanés manuels provenant de différents détecteurs, ils sont classés par ordre alphabétique selon le corrélateur et le premier est utilisé.
- S’il existe deux corrélateurs avec le même détecteur, les dépendances résolues sont fusionnées. Pour plus d’informations sur les corrélateurs et les détecteurs, consultez Points de terminaison d’API REST pour la soumission de dépendances.
-
**Les soumissions automatiques** ont la priorité suivante, car elles sont également créées pendant les builds d’artefacts, mais ne sont pas soumises par les utilisateurs. -
**Les résultats de l’analyse statique** sont utilisés lorsqu’aucune autre donnée n’est disponible.