Результаты обнаружения зависимостей, сообщаемые GitHub Enterprise Server, могут отличаться от результатов, возвращаемых другими средствами. Для этого есть веские причины, и полезно понять, как GitHub определяет зависимости для проекта.
Выполняет ли граф зависимостей поиск только зависимостей в манифестах и файлах блокировки?
Граф зависимостей автоматически включает сведения о зависимостях, которые явно объявлены в вашей среде. Это зависимости, указанные в манифесте или файле блокировки. Граф зависимостей обычно также включает транзитивные зависимости, даже если они не указаны в файле блокировки, просматривая зависимости зависимостей в файле манифеста.
Граф зависимостей не включает автоматически "свободные" зависимости. "Свободные" зависимости — это отдельные файлы, которые копируются из другого источника и возвращаются в репозиторий напрямую или в архиве (например, ZIP-файле или JAR-файле). На них не ссылаются в манифесте или файле блокировки диспетчера пакетов.
Однако можно использовать API отправки зависимостей для добавления зависимостей в граф зависимостей проекта, даже если зависимости не объявляются в файле манифеста или блокировки, например зависимости, разрешаемые при создании проекта. В граф зависимостей отображаются отправленные зависимости, сгруппированные по экосистеме, но отдельно от зависимостей, проанализированных из файлов манифеста или блокировки. Дополнительные сведения о API отправки зависимостейсм. в разделе "Использование API отправки зависимостей".
Проверка. Отсутствует ли зависимость для компонента, который не указан в манифесте или файле блокировки репозитория?
Определяет ли граф зависимостей те зависимости, которые указаны с помощью переменных?
Граф зависимостей анализирует манифесты по мере их отправки в GitHub. Таким образом, граф зависимостей не имеет доступа к среде сборки проекта и поэтому не может разрешать переменные, используемые в манифестах. Если переменные в манифесте используются для указания имени или более распространенной версии зависимости, то эта зависимость не будет автоматически включена в граф зависимостей.
Однако можно использовать API отправки зависимостей для добавления зависимостей в граф зависимостей проекта, даже если зависимости разрешаются только при создании проекта. Дополнительные сведения о API отправки зависимостейсм. в разделе "Использование API отправки зависимостей".
Проверка. Объявлена ли отсутствующая зависимость в манифесте с использованием переменной для указания ее имени или версии?
Существуют ли ограничения, влияющие на данные графа зависимостей?
Да, граф зависимостей имеет две категории ограничений:
-
Ограничения обработки
Эти ограничения влияют на граф зависимостей, отображаемый в 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