Skip to main content

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

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

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

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

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