Skip to main content

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

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

Кто может использовать эту функцию?

Граф зависимостей доступен для всех репозиториев.

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

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

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

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

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

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

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

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

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

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

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

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

  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

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