Skip to main content

Эта версия GitHub Enterprise Server была прекращена 2026-04-09. Исправления выпускаться не будут даже при критических проблемах безопасности. Для повышения производительности, повышения безопасности и новых функций выполните обновление до последней версии GitHub Enterprise Server. Чтобы получить справку по обновлению, обратитесь в службу поддержки GitHub Enterprise.

Как граф зависимостей распознаёт зависимости

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

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

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

В этой статье

Граф зависимостей может определить зависимости вашего проекта с помощью следующих методов.

МетодПринцип работы
Статический анализПарсирование манифеста и блокировки файлов в вашем репозитории
API отправки зависимостейПринимает данные зависимостей, которые вы предоставляете программно

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

Статический анализ

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

Статический анализ может выявить:

  • Прямые зависимости , явно определённые в манифесте или файле блокировки
  • Косвенные зависимости — зависимости этих прямых зависимостей, также называемые «транзитивными зависимостями» — но только если они определены в манифесте или файле блокировки, а не если разрешены во время сборки

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

          API отправки зависимостей
        

Вы можете вызвать их API отправки зависимостей в своём скрипте или рабочем процессе. Это полезно, если:

  • Вам нужно указывать транзитивные зависимости, которые нельзя обнаружить из файлов блокировки.
  • Вам нужно создать собственную логику или вы используете внешнюю систему CI/CD.

Зависимости передаются API отправки зависимостей в виде снимка. Это список зависимостей, связанных с SHA коммита и другими метаданными, отражающий текущее состояние вашего репозитория.

Если вы вызываете API в рабочем GitHub Actions процессе, вы можете использовать готовое действие для вашей экосистемы, которое автоматически собирает зависимости и отправляет их в API. В противном случае вы можете написать собственное действие или вызвать API из внешней системы.

Отправленные зависимости недоступны в аналитике зависимостей вашей организации.

Дополнительные сведения см. в разделе Использование API отправки зависимостей.

Приоритетность

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

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

  1.        **Отправки** пользователей имеют наивысший приоритет, так как они обычно создаются во время сборки артефактов, у них есть самая полная информация.
    
    • Если есть несколько моментальных снимков вручную из разных детекторов, они сортируются по алфавиту по коррелятору и первому используемому.
    • Если есть два коррелятора с одинаковым детектором, разрешенные зависимости объединяются. Для получения дополнительной информации о корреляторах и детекторах см. Конечные точки REST API для отправки зависимостей.
  2.        **Автоматические публикации** имеют следующий приоритет, так как они также создаются во время сборки артефактов, но не отправляются пользователями.
    
  3.        **Результаты** статического анализа используются, если другие данные недоступны.