Skip to main content

Эта версия GitHub Enterprise Server была прекращена 2024-07-09. Исправления выпускаться не будут даже при критических проблемах безопасности. Для повышения производительности, повышения безопасности и новых функций выполните обновление до последней версии GitHub Enterprise Server. Чтобы получить справку по обновлению, обратитесь в службу поддержки GitHub Enterprise.

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

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

Результаты обнаружения зависимостей, сообщаемые 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
  2. Ограничения визуализации

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

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

Проверка. Отсутствует ли зависимость в файле манифеста размером более 0,5 МБ или в репозитории с большим количеством манифестов?

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