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 automatiquementles dépendances « lâches ». 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.
Toutefois, vous pouvez utiliser l’API de soumission de dépendances (bêta) pour ajouter des dépendances au graphe de dépendances d’un projet, 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 génération d’un projet. Les dépendances envoyées à un projet avec l’API d’envoi de dépendances (version bêta) indiquent le détecteur qui a été utilisé pour leur envoi et quand elles ont été envoyées. Pour plus d’informations sur l’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 généralement la version d’une dépendance, cette dépendance n’est pas incluse automatiquement dans le graphe de dépendances.
Cependant, vous pouvez utiliser l’API de soumission de dépendances (bêta) pour ajouter des dépendances au graphe de dépendances d’un projet, même si les dépendances sont uniquement résolues lorsqu’un projet est généré. Pour plus d’informations sur l’API d’envoi 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épendances a une catégorie de limites :
-
Limites de traitement
Celles-ci affectent le graphe de dépendances affiché dans GitHub et empêchent également la création d’Dependabot alerts
Les manifestes de plus de 0,5 Mo sont traités uniquement pour les comptes d’entreprise. Pour les autres comptes, les manifestes de plus de 0,5 Mo sont ignorés et ne créent pas d’Dependabot alerts.
Par défaut, GitHub ne traite pas plus de 150 manifestes par dépôt. Les Dependabot alerts ne sont pas créées pour les manifestes au-delà de cette limite. Si vous devez augmenter la limite, vous pouvez contacter nous via le portail de support GitHub.
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