À propos du graphe des dépendances
Pour une présentation du graphe des dépendances, consultez À propos du graphe de dépendances.
Génération du graphe des dépendances
Si le graphe des dépendances est activé, il analysera votre référentiel à la recherche des fichiers manifestes utilisés par les écosystèmes de packages de langages de programmation. Lorsqu’il trouve l’un des fichiers manifestes pris en charge, il analyse le fichier et génère une représentation de son contenu, y compris le nom et la version de chaque package. C’est ce qu’on appelle l’« analyse statique ».
Certains fichiers définissent explicitement les versions utilisées pour toutes les dépendances directes et indirectes. Ces fichiers verrouillent les versions des packages utilisées lors du build et permettent à Dependabot de détecter les versions vulnérables, qu’il s’agisse de dépendances directes ou indirectes. Si vous utilisez ces formats, votre graphe des dépendances sera plus précis. Ils sont donc répertoriés dans la colonne « Fichiers recommandés » du tableau « Écosystèmes de packages pris en charge ». Consultez Écosystèmes de packages pris en charge. Les dépendances indirectes déduites d’un fichier manifeste (ou équivalent) sont exclues des vérifications de Dependabot relatives aux dépendances non sécurisées.
Pour les écosystèmes qui résolvent les dépendances transitives au moment du build, l’analyse statique ne fournit pas une vue complète de l’arborescence des dépendances. Pour ces écosystèmes, il existe deux approches qui utilisent GitHub Actions : la soumission automatique et manuelle des dépendances. Dans les deux cas, une action externe générera une arborescence complète des dépendances et la téléchargera sur l’API de soumission des dépendances. Vous pouvez activer la soumission automatique pour les écosystèmes pris en charge dans la page des paramètres de votre référentiel. Pour plus d’informations, consultez « Configuration de la soumission automatique des dépendances pour votre dépôt ».
Écosystèmes de package pris en charge via les actions de soumission de dépendances
En plus de l’analyse statique et de la soumission automatique du graphe des dépendances, vous pouvez utiliser API de soumission de dépendances pour y ajouter des dépendances au moment du build, ou provenant de gestionnaires de packages et d’écosystèmes de votre choix, même si l’écosystème ne figure pas dans le tableau « Écosystèmes de packages pris en charge ». Les informations de dépendance de ces dépendances envoyées circulent à leur tour dans des Dependabot updates et Dependabot alerts.
Les dépendances soumises à un projet à l’aide de API de soumission de dépendances indiqueront quel détecteur a été utilisé pour leur soumission et quand elles ont été soumises. Pour plus d'informations sur les API de soumission de dépendances, consultez Utilisation de l’API de soumission de dépendances.
Écosystèmes de packages pris en charge
Gestionnaire de package | Langages | Dépendances transitives statiques | Soumission automatique des dépendances | Fichiers recommandés | Fichiers supplémentaires |
---|---|---|---|---|---|
Cargo | Rust | Cargo.lock | Cargo.toml | ||
Composer | PHP | composer.lock | composer.json | ||
NuGet | Langages .NET (C#, F#, VB), C++ | .csproj , .vbproj , .nuspec , .vcxproj , .fsproj | packages.config | ||
Workflows GitHub Actions | YAML | .yml , .yaml | |||
Modules Go | Go | go.mod | |||
Gradle | Java | ||||
Maven | Java, Scala | pom.xml | |||
npm | JavaScript | package-lock.json | package.json | ||
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 | ||
Gestionnaire de package Swift | Swift | Package.resolved | |||
Yarn | JavaScript | yarn.lock | package.json |
Remarque
- La colonne Dépendances transitives statiques indique si l’analyse statique ajoutera les étiquettes
direct
ettransitive
aux packages dépendants dans cet écosystème. Les actions de soumission de dépendances (automatiques ou configurées manuellement) peuvent ajouter des informations transitives pour les écosystèmes où l’analyse statique ne le permet pas. - Si vous listez vos dépendances Python dans un fichier
setup.py
, il est possible que nous ne soyons pas en mesure d’analyser et de lister chaque dépendance dans votre projet. - Les workflows GitHub Actions doivent se trouver dans le répertoire
.github/workflows/
d’un dépôt pour être reconnus en tant que manifestes. Toutes les actions ou workflows référencés avec la syntaxejobs[*].steps[*].uses
oujobs.<job_id>.uses
sont analysés en tant que dépendances. Pour plus d’informations, consultez « Workflow syntax for GitHub Actions ». - Dependabot ne créera Dependabot alerts que pour les GitHub Actions vulnérables qui utilisent le contrôle de version sémantique. Vous ne recevrez pas d'alertes pour une action vulnérable qui utilise le contrôle de version SHA. Si vous utilisez GitHub Actions avec le contrôle de version SHA, nous vous recommandons d'activer Dependabot version updates pour votre référentiel ou votre organisation afin que les actions que vous utilisez soient mises à jour avec les dernières versions. Pour en savoir plus, reportez-vous àÀ propos des alertes Dependabot et À propos des mises à jour de version Dependabot.
Déduplication des manifestes
Le graphe des dépendances peut découvrir les dépendances de trois manières différentes : analyse statique, soumission automatique et soumission manuelle. Un référentiel peut avoir plusieurs méthodes configurées, ce qui peut entraîner l’analyse multiple du même manifeste de package, avec des sorties potentiellement différentes à 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 deuxième priorité la plus élevée, car elles sont également créées lors de la génération des 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.