Les résultats de la détection des dépendances signalés par GitHub peuvent être différents des résultats renvoyés par d’autres outils. Il existe de bonnes raisons à cela et il est utile de comprendre comment GitHub détermine les dépendances pour votre projet.
Le graphe de dépendances ne trouve-t-il des dépendances que dans les manifestes et les fichiers de verrouillage ?
Le graphe des dépendances inclut automatiquement des informations sur les dépendances qui sont explicitement déclarées dans votre environnement. Autrement dit, les dépendances spécifiées dans un manifeste ou un fichier de verrouillage. En outre, le graphe de dépendances inclut généralement les dépendances transitives, même si elles ne sont pas spécifiées dans un fichier de verrouillage, en examinant les dépendances des dépendances dans un fichier manifeste.
Le graphe des dépendances n'inclut pas automatiquement les dépendances « non structurées ». Les dépendances « lâches » sont des fichiers individuels qui sont copiés à partir d’une autre source et archivés directement dans le dépôt ou dans une archive (par exemple, un fichier ZIP ou JAR), plutôt qu’utilisés comme références dans le manifeste ou le fichier de verrouillage d’un gestionnaire de package.
Cependant, vous pouvez utiliser l'option API de soumission de dépendances pour ajouter des dépendances au graphe des dépendances d'un projet. Cette fonctionnalité s'applique même si les dépendances ne sont pas déclarées dans un manifeste ou un fichier de verrouillage, comme les dépendances résolues lors de la construction d'un projet. 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.
Point à vérifier : La dépendance manquante pour un composant qui n’est pas spécifié se trouve-t-elle dans le manifeste ou dans le fichier de verrouillage du dépôt ?
Le graphe de dépendances détecte-t-il les dépendances spécifiées avec des variables ?
Le graphe de dépendances analyse les manifestes à mesure qu’ils sont poussés (push) vers GitHub. Ainsi, le graphe de dépendances n’a pas accès à l’environnement de génération du projet. Il ne peut donc pas résoudre les variables utilisées dans les manifestes. Si vous utilisez des variables dans un manifeste pour spécifier le nom, ou plus communément la version d'une dépendance, alors cette dépendance ne sera pas automatiquement incluse dans le graphe des dépendances.
Cependant, vous pouvez utiliser l'option API de soumission de dépendances pour ajouter des dépendances au graphe des dépendances d'un projet, même si les dépendances ne sont résolues que lorsque le projet est construit. Pour plus d'informations sur l'API API de soumission de dépendances, consultez Utilisation de l’API de soumission de dépendances.
Point à vérifier : La dépendance manquante est-elle déclarée dans le manifeste avec une variable pour son nom ou sa version ?
Existe-t-il des limites qui affectent les données du graphe de dépendances ?
Oui, le graphe de dépendance est limité en termes de taille, de nombre et d’emplacement des fichiers manifestes qu’il peut traiter.
Les limites de traitement affectent le graphe des dépendances affiché dans GitHub et empêchent également la création de Dependabot alerts.
Les manifestes de plus de 10 Mo sont ignorés et ne génèrent pas Dependabot alerts.
Par défaut, GitHub ne traite pas plus de 150 manifestes par référentiel. Dependabot ne génère pas Dependabot alerts pour les manifestes au-delà de cette limite, et Dependabot alerts peut se comporter de manière imprévisible si cette limite est dépassée.
Les fichiers manifestes stockés dans des répertoires portant des noms généralement utilisés pour les dépendances placées dans le répertoire vendor ne seront pas traités. Un répertoire dont le nom correspond aux expressions régulières suivantes est considéré comme un répertoire de dépendances placées dans le répertoire vendor :
(3rd|[Tt]hird)[-_]?[Pp]arty/
(^|/)vendors?/
(^|/)[Ee]xtern(als?)?/
(^|/)[Vv]+endor/
Exemples :
- third-party/dependencies/dependency1
- vendors/dependency1
- /externals/vendor1/dependency1
Mes dépendances ne semblent pas correctes, que puis-je faire ?
Si la table des dépendances de votre projet ne représente pas avec précision les manifestes de votre référentiel, vous pouvez déclencher une régénération de son graphe des dépendances.
Dans l’onglet Dependabot alerts du référentiel, cliquez sur en haut de la liste d’alertes. Sélectionnez Actualiser Dependabot alerts dans le menu déroulant. Cela mettra en file d’attente une tâche en arrière-plan pour traiter les manifestes du référentiel, détecter les dépendances nouvelles ou modifiées et mettre à jour les alertes.
Note
Vous devez disposer d’une autorisation de gestion des alertes de sécurité pour actualiser le graphe des dépendances d’un référentiel. Consultez Gestion des paramètres de sécurité et d’analyse pour votre dépôt pour plus d’informations sur la configuration de cet accès. Pour réduire davantage le risque d’abus, l’option Actualiser Dependabot alerts ne peut être déclenchée qu’une fois par heure et par référentiel.
Cliquer sur Actualiser Dependabot alerts analysera uniquement les fichiers manifestes. Si votre graphe des dépendances inclut également des informations sur les dépendances au moment de la génération soumises à l’aide de API de soumission de dépendances, le fait de réexécuter Action ou le processus externe qui génère et soumet les informations sur les dépendances déclenchera également une régénération du graphe des dépendances du référentiel. Pour plus d’informations sur l’API API de soumission de dépendances, consultez Utilisation de l’API de soumission de dépendances.
Si vous utilisez la soumission automatique de dépendances pour Maven, l’envoi (push) d’un commit qui met à jour le pom.xml
du référentiel déclenchera l’action de soumission automatique à exécuter.
Dans tous les cas, l’horodatage en haut de la liste des alertes indique la dernière fois que le graphe des dépendances a été généré.