Skip to main content

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

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

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

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

  • Общедоступные репозитории (по умолчанию)
  • Частные репозитории
  • Вилки

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

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

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

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

Однако вы можете использовать API отправки зависимостей их для добавления зависимостей в граф зависимостей проекта, даже если они не объявлены в манифесте или файле блокировки, например, зависимости, разрешаемые при создании проекта. Зависимости, отправленные в проект с помощью API отправки зависимостей показывают, какой детектор использовался для их отправки и когда они были отправлены. Для получения дополнительной информации о API отправки зависимостей, см. Использование API отправки зависимостей.

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

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

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

Однако вы можете использовать API отправки зависимостей их для добавления зависимостей в граф зависимостей проекта, даже если они разрешаются только при создании проекта. Дополнительные сведения об этом API отправки зависимостейсм. в разделе Использование API отправки зависимостей.

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

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

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

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

Манифесты размером более 10 МБ игнорируются и не генерируются Dependabot alerts.

По умолчанию GitHub не обрабатывается более 150 манифестов на репозиторий. 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)