Skip to main content

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

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

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

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

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

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

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

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

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

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

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

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

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

Да, граф зависимостей имеет две следующие категории ограничений.

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

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

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

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

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

    • (3rd|[Tt]hird)[-_]?[Pp]arty/

    • (^|/)vendors?/

    • ^|/)[Ee]xtern(als?)?/

    • (^|/)[Vv]+endor/

      Примеры:

    • сторонние/зависимости/зависимости1

    • vendors/dependency1

    • /externals/vendor1/dependency1

  2. Ограничения визуализации

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

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

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

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