Skip to main content

Устранение неполадок графа зависимостей

Если от графа зависимостей получены неожиданные сведения о зависимостях, следует учесть несколько важных аспектов и проверить несколько параметров.

Результаты обнаружения зависимостей, сообщаемые GitHub Enterprise Server, могут отличаться от результатов, возвращаемых другими средствами. Для этого есть веские причины, и полезно понять, как GitHub определяет зависимости для проекта.

Выполняет ли граф зависимостей поиск только зависимостей в манифестах и файлах блокировки?

Граф зависимостей автоматически включает сведения о зависимостях, которые явно объявлены в вашей среде. Это зависимости, указанные в манифесте или файле блокировки. Граф зависимостей обычно также включает транзитивные зависимости, даже если они не указаны в файле блокировки, просматривая зависимости зависимостей в файле манифеста.

Граф зависимостей не включает автоматически "свободные" зависимости. "Свободные" зависимости — это отдельные файлы, которые копируются из другого источника и возвращаются в репозиторий напрямую или в архиве (например, ZIP-файле или JAR-файле). На них не ссылаются в манифесте или файле блокировки диспетчера пакетов.

Однако можно использовать API отправки зависимостей (бета-версия) для добавления зависимостей в граф зависимостей проекта, даже если зависимости не объявляются в манифесте или файле блокировки, например зависимости, разрешенные при создании проекта. В граф зависимостей отображаются отправленные зависимости, сгруппированные по экосистеме, но отдельно от зависимостей, проанализированных из файлов манифеста или блокировки. Дополнительные сведения о API отправки зависимостейсм. в разделе "Использование API отправки зависимостей".

Проверка. Отсутствует ли зависимость для компонента, который не указан в манифесте или файле блокировки репозитория?

Определяет ли граф зависимостей те зависимости, которые указаны с помощью переменных?

Граф зависимостей анализирует манифесты по мере их отправки в GitHub. Таким образом, граф зависимостей не имеет доступа к среде сборки проекта и поэтому не может разрешать переменные, используемые в манифестах. Если переменные в манифесте используются для указания имени или более распространенной версии зависимости, то эта зависимость не будет автоматически включена в граф зависимостей.

Однако можно использовать API отправки зависимостей (бета-версия) для добавления зависимостей в граф зависимостей проекта, даже если зависимости разрешаются только при создании проекта. Дополнительные сведения о API отправки зависимостейсм. в разделе "Использование API отправки зависимостей".

Проверка. Объявлена ли отсутствующая зависимость в манифесте с использованием переменной для указания ее имени или версии?

Существуют ли ограничения, влияющие на данные графа зависимостей?

Да, граф зависимостей имеет две категории ограничений:

  1. Ограничения обработки

    Эти ограничения влияют на граф зависимостей, отображаемый в GitHub, а также предотвращают создание Dependabot alerts.

    Манифесты размером более 0,5 МБ обрабатываются только для корпоративных учетных записей. Для других учетных записей манифесты размером более 0,5 МБ игнорируются и не будут создавать Dependabot alerts.

    По умолчанию GitHub не обрабатывает более 600 манифестов на каждый репозиторий. Dependabot alerts не создаются для манифестов за пределами этого ограничения, а Dependabot alerts может вести себя непредсказуемо, если это ограничение превышено.

    Файлы манифеста, хранящиеся в каталогах с именами, которые обычно используются для поставщиков зависимостей, не будут обрабатываться. Каталог, имя которого соответствует следующим регулярным выражениям, считается поставщиком каталогом зависимостей:

    • (3rd|[Tt]hird)[-_]?[Pp]arty/
    • (^|/)vendors?/
    • (^|/)[Ee]xtern(als?)?/
    • (^|/)[Vv]+endor/

    Примеры:

    • third-party/dependencies/dependency1
    • vendors/dependency1
    • /externals/vendor1/dependency1

Дополнительные материалы