Skip to main content

Résolution des problèmes liés au graphe de dépendances

Si les informations de dépendance signalées par le graphe des dépendances ne sont pas ce que vous attendez, il existe un certain nombre de points à prendre en compte et diverses choses que vous pouvez vérifier.

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.

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. Les dépendances soumises à un projet avec l’API API de soumission de dépendances (bêta) indiquent le détecteur qui a été utilisé pour leur soumission et quand elles ont été soumises. 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 une catégorie de limites :

  1. 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

Pour aller plus loin