Skip to main content
Мы публикуем частые обновления нашей документации, и перевод этой страницы, возможно, еще выполняется. Актуальные сведения см. в документации на английском языке.

Сведения о графе зависимостей

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

Сведения о графе зависимостей

Граф зависимостей — это сводка файлов манифеста и блокировки, хранящихся в репозитории, и всех зависимостей, отправленных в этот репозиторий через API отправки зависимостей (бета-версия). Для каждого репозитория отображается:

  • Зависимости, экосистемы и пакеты, от которых он зависит
  • Зависимые, репозитории и пакеты, которые зависят от него

При отправке в GitHub Enterprise Cloud фиксации, которая изменяет или добавляет поддерживаемый манифест или файл блокировки в ветвь по умолчанию, граф зависимостей автоматически обновляется. Кроме того, граф обновляется, когда кто-либо отправляет изменение в репозиторий одной из зависимостей. Сведения о поддерживаемых экосистемах и файлах манифеста см. в разделе Поддерживаемые экосистемы пакетов ниже.

Кроме того, можно использовать API отправки зависимостей (бета-версия) для отправки зависимостей из выбранного диспетчера пакетов или экосистемы, даже если экосистема не поддерживается графом зависимостей для анализа файлов манифеста или блокировки. Граф зависимостей будет отображать отправленные зависимости, сгруппированные по экосистеме, но отдельно от зависимостей, проанализированных из файлов манифеста или блокировки. Дополнительные сведения об API отправки зависимостей см. в разделе Использование API отправки зависимостей.

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

Доступность графа зависимостей

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

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

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

Включенные зависимости

Граф зависимостей включает все зависимости репозитория, которые определены в файлах манифеста и блокировки или другим способом, для поддерживаемых экосистем, а также все зависимости, отправленные через API отправки зависимостей (бета-версия). В том числе:

  • Прямые зависимости, явно определенные в файле манифеста или блокировки или отправленные через API отправки зависимостей (бета-версия).
  • Косвенные зависимости этих прямых зависимостей, также известные как транзитивные зависимости или подзависимости

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

Дополнительную информацию о том, как GitHub Enterprise Cloud помогает понять зависимости в среде, см. в разделе Сведения о безопасности цепочки поставок.

Включенные зависимые компоненты

Для общедоступного репозитория сообщаются только общедоступные репозитории, зависящие от него или от пакетов, которые он публикует. Для частных репозиториев эти сведения не сообщаются.

Использование графа зависимостей

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

Поддерживаемые экосистемы пакетов

Рекомендуемые форматы явно определяют, какие версии используются для всех прямых и косвенных зависимостей. При использовании этих форматов график зависимостей будет более точным. Он также отражает текущую настройку сборки и позволяет графу зависимостей сообщать об уязвимостях как в прямых, так и косвенных зависимостях. Косвенные зависимости, выводимые из файла манифеста (или его эквивалента), исключаются из проверок на наличие небезопасных зависимостей.

| Диспетчер пакетов | Языки | Рекомендуемые форматы | Все поддерживаемые форматы | | --- | --- | --- | ---| | Грузовая | | Rust Cargo.lock | Cargo.toml, Cargo.lock | | | Composer php | composer.lock | composer.json, composer.lock | | NuGet | языков .NET (C#, F#, VB), C++ | .csproj, .vbproj, .nuspec, .vcxproj, .fsproj | .csproj, .vbproj, .nuspec, .vcxproj, .fsproj, packages.config | | Рабочие процессы GitHub Actions [†] | | YAML .yml, .yaml | .yml, .yaml | | | модулей Go Перейти | go.sum | go.mod, go.sum | | | Maven Java, Scala | pom.xml | pom.xml | | | npm | JavaScript package-lock.json | package-lock.json, package.json| | | pip | Python requirements.txt, pipfile.lock | requirements.txt, pipfile, pipfile.lock, setup.py[".] | | | паба Дарт | pubspec.lock | pubspec.yaml, pubspec.lock | | Python Poetry | | Python poetry.lock | poetry.lock, pyproject.toml | | | RubyGems | Ruby Gemfile.lock | Gemfile.lock, Gemfile, *.gemspec | | | Yarn | JavaScript yarn.lock | package.json, yarn.lock |

[†] Рабочие процессы GitHub Actions должны находиться в каталоге .github/workflows/ репозитория, чтобы их можно было распознать как манифесты. Любые действия или рабочие процессы, для ссылок на которые используется синтаксис jobs[*].steps[*].uses или jobs.<job_id>.uses, будут анализироваться как зависимости. Дополнительные сведения см. в статье Синтаксис рабочего процесса для GitHub Actions.

[‡] Если вы перечисляете зависимости Python в файле setup.py, то нам, возможно, не удастся проанализировать и перечислить каждую зависимость в вашем проекте.

Примечание. Зависимости рабочих процессов GitHub Actions отображаются в графе зависимостей в целях информирования. В настоящее время для рабочих процессов GitHub Actions оповещения Dependabot не поддерживаются.

API отправки зависимостей (бета-версия) можно использовать для добавления зависимостей из выбранного диспетчера пакетов или экосистемы в граф зависимостей, даже если эта экосистема отсутствует в предоставленном выше списке поддерживаемых экосистем. Граф зависимостей будет отображать отправленные зависимости, сгруппированные по экосистеме, но отдельно от зависимостей, проанализированных из файлов манифеста или блокировки. Вы будете получать Dependabot alerts только для тех зависимостей, которые относятся к одной из поддерживаемых экосистем GitHub Advisory Database. Дополнительные сведения об API отправки зависимостей см. в статье Использование API отправки зависимостей.

Дополнительные материалы