Les résultats de la détection des dépendances signalés par GitHub Enterprise Server 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.
Cependant, vous pouvez utiliser l’API API de soumission de dépendances (bêta) pour ajouter des dépendances au graphe des dépendances d’un projet, même si les dépendances ne sont pas déclarées dans un fichier manifest ou de verrouillage, comme les dépendances résolues lors de la génération d’un projet. Le graphe des dépendances affiche les dépendances envoyées regroupées par écosystème, mais séparément des dépendances analysées à partir des fichiers manifeste ou de verrouillage. 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 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 API de soumission de dépendances (bêta) pour ajouter des dépendances au graphe des dépendances d’un projet, même si les dépendances sont uniquement résolues lors de la génération d’un projet. 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épendances a deux catégories 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 600 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 votre administrateur de site.
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
-
Limites de visualisation
Celles-ci affectent les éléments affichés dans le graphe de dépendances dans GitHub. Toutefois, elles n’affectent pas les Dependabot alerts qui sont créées.
L’affichage Dépendances du graphe de dépendances d’un dépôt montre uniquement 100 manifestes. En règle générale, cette limite est suffisante, car elle est beaucoup plus élevée que la limite de traitement décrite ci-dessus. Dans les situations où la limite de traitement est supérieure à 100, les Dependabot alerts sont toujours créées pour tous les manifestes qui ne sont pas affichés dans GitHub.
Point à vérifier : La dépendance manquante se trouve-t-elle dans un fichier manifeste de plus de 0,5 Mo ou dans un dépôt avec un grand nombre de manifestes ?