Результаты обнаружения зависимостей, сообщаемые GitHub могут отличаться от результатов, возвращаемых другими средствами. Для этого есть хорошие причины, и полезно понять, как GitHub определяет зависимости для вашего проекта.
Выполняет ли граф зависимостей поиск только зависимостей в манифестах и файлах блокировки?
Граф зависимостей автоматически включает сведения о зависимостях, которые явно объявлены в вашей среде. Это зависимости, указанные в манифесте или файле блокировки. Граф зависимостей обычно также включает транзитивные зависимости, даже если они не указаны в файле блокировки, просматривая зависимости зависимостей в файле манифеста.
Граф зависимостей не включает автоматически "свободные" зависимости. "Свободные" зависимости — это отдельные файлы, которые копируются из другого источника и возвращаются в репозиторий напрямую или в архиве (например, ZIP-файле или JAR-файле). На них не ссылаются в манифесте или файле блокировки диспетчера пакетов.
Однако вы можете использовать API отправки зависимостей их для добавления зависимостей в граф зависимостей проекта, даже если они не объявлены в манифесте или файле блокировки, например, зависимости, разрешаемые при создании проекта. Зависимости, отправленные в проект с помощью API отправки зависимостей показывают, какой детектор использовался для их отправки и когда они были отправлены. Для получения дополнительной информации о API отправки зависимостей, см. Использование API отправки зависимостей.
**Проверка.** Отсутствует ли зависимость для компонента, который не указан в манифесте или файле блокировки репозитория?
Определяет ли граф зависимостей те зависимости, которые указаны с помощью переменных?
Граф зависимостей анализирует проявления по мере их перемещения в GitHub. Таким образом, граф зависимостей не имеет доступа к среде сборки проекта и поэтому не может разрешать переменные, используемые в манифестах. Если переменные в манифесте используются для указания имени или более распространенной версии зависимости, то эта зависимость не будет автоматически включена в граф зависимостей.
Однако вы можете использовать API отправки зависимостей их для добавления зависимостей в граф зависимостей проекта, даже если они разрешаются только при создании проекта. Дополнительные сведения об этом API отправки зависимостейсм. в разделе Использование API отправки зависимостей.
**Проверка.** Объявлена ли отсутствующая зависимость в манифесте с использованием переменной для указания ее имени или версии?
Существуют ли ограничения, влияющие на данные графа зависимостей?
Да, граф зависимостей имеет ограничения на размер, число и расположение файлов манифеста, которые он будет обрабатывать.
Ограничения обработки влияют на граф зависимостей, отображаемый внутри GitHub , и также препятствуют Dependabot alerts его созданию.
Манифесты размером более 10 МБ игнорируются и не генерируются Dependabot alerts.
По умолчанию GitHub не обрабатывается более 600 манифестов на репозиторий. Dependabot не генерирует Dependabot alerts для манифестов за пределами этого предела и Dependabot alerts может вести себя непредсказуемо, если этот предел превышен.
Файлы манифеста, хранящиеся в каталогах с именами, которые обычно используются для поставщиков зависимостей, не будут обрабатываться. Каталог, имя которого соответствует следующим регулярным выражениям, считается поставщиком каталогом зависимостей:
(3rd|[Tt]hird)[-_]?[Pp]arty/(^|/)vendors?/(^|/)[Ee]xtern(als?)?/(^|/)[Vv]+endor/
Примеры.
- third-party/dependencies/dependency1
- vendors/dependency1
- /externals/vendor1/dependency1
Мои зависимости не выглядят правильно, что я могу сделать?
Если таблица зависимостей для проекта не точно представляет манифесты репозитория, можно запустить перестроение его граф зависимостей.
Из вкладки Dependabot репозитория нажмите вверх списка оповещений. Выберите «Обновить Dependabot alerts » из выпадающего меню. Это приведет к выполнению фоновой задачи для обработки манифестов репозитория, обнаружения новых или измененных зависимостей и обновления оповещений.
Примечание.
Для обновления граф зависимостей репозитория необходимо иметь разрешение на управление оповещениями системы безопасности. Сведения о настройке этого доступа см. в autoTITLE. Чтобы ещё больше снизить риск злоупотреблений, опция обновления Dependabot alerts может запускаться только раз в час на каждый репозиторий.
**Нажатие «ОбновитьDependabot alerts**» сканирует только файлы манифеста. Если ваш граф зависимостей также содержит информацию о зависимостях во время сборки, поданную с API отправки зависимостейпомощью , повторное запуск действия или внешнего процесса, который генерирует и отправляет информацию о зависимостях, также инициирует перестройку графа зависимостей репозитория. Дополнительные сведения см. в API отправки зависимостейразделе [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api).
Если вы используете автоматическую отправку зависимостей, отправка фиксации, которая обновляет файл манифеста репозитория, активирует действие автоматической отправки для выполнения.
Во всех случаях метка времени в верхней части списка оповещений указывает на время последнего создания граф зависимостей.
Дополнительные материалы
-
[AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/about-the-dependency-graph) -
[AUTOTITLE](/repositories/managing-your-repositorys-settings-and-features/enabling-features-for-your-repository/managing-security-and-analysis-settings-for-your-repository) -
[AUTOTITLE](/code-security/dependabot/troubleshooting-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies) -
[AUTOTITLE](/code-security/dependabot/troubleshooting-dependabot/troubleshooting-dependabot-errors)