依存関係グラフの利用
依存関係グラフは、サポートされているファイル形式を使用して、サポートされているパッケージエコシステムの依存関係を定義するすべてのリポジトリで利用できます。
サイト管理者は、 この機能を使えるようにするには、GitHub Enterprise Serverのインスタンスの脆弱な依存関係に対するDependabotアラートを有効化しなければなりません。 詳しい情報については、「GitHub Enterprise Serverの脆弱性のある依存関係に関するセキュリティアラートの有効化」を参照してください。
依存関係グラフについて
依存関係グラフは、リポジトリに保存されているマニフェストファイルおよびロックファイルのサマリーです。 リポジトリごとに、依存関係、つまり、それが依存しているエコシステムとパッケージが表示されます。 GitHub Enterprise Server は、リポジトリに依存している依存関係、リポジトリ、およびパッケージに関する情報を計算しません。
サポートされているマニフェストまたはロックファイルを変更する、またはデフォルトブランチに追加するコミットを GitHub Enterprise Server にプッシュすると、依存関係グラフが自動的に更新されます。 サポートされているエコシステムとマニフェストファイルについては、「サポートされているパッケージエコシステム」を参照してください。
含まれる依存関係
依存関係グラフには、サポートされているエコシステムについてマニフェストおよびロックファイル、または同等のもので詳細に定義されているリポジトリの依存関係がすべて含まれています。 これは以下のものが含まれます。
- マニフェストまたはロックファイルで明示的に定義されている、直接依存関係
- 直接依存関係の間接依存関係。推移的な依存関係、または下位の依存関係とも言う。
依存関係グラフは、間接的な依存関係を識別します。
依存関係グラフの使用
依存関係グラフを使用する目的は、次のとおりです。
- コードが依存しているリポジトリを調べます。 詳しい情報については、「リポジトリの依存関係を調べる」を参照してください。
- リポジトリの脆弱な依存関係を表示・更新すること。 詳しい情報については、「脆弱性のある依存関係に対するアラートについて」を参照してください。
依存関係グラフの有効化
If the dependency graph is not available in your system, your site administrator can enable the dependency graph and Dependabotアラート. For more information, see "Enabling alerts for vulnerable dependencies on GitHub Enterprise Server."
依存関係グラフを初めて有効化すると、サポートされているエコシステムのマニフェストおよびロックファイルがすぐに解析されます。 グラフは通常数分以内に入力されますが、多くの依存関係を持つリポジトリの場合は時間がかかる場合があります。 有効にすると、リポジトリにプッシュするたびにグラフが自動的に更新されます。
サポートされているパッケージエコシステム
推奨されるフォーマットでは、直接および間接の依存関係すべてに使用されるバージョンを明示的に定義しています。 これらのフォーマットを使用したほうが、依存関係グラフは正確になります。 現在のビルドのセットアップも反映され、直接と間接のどちらの依存関係でも依存関係グラフで脆弱性をレポートできます。
以下にリストされているエコシステムは、依存関係グラフとDependabotアラートでサポートされています。
| パッケージマネージャー | 言語 | 推奨されるフォーマット | サポートされているすべてのフォーマット |
|---|---|---|---|
| Composer | PHP | composer.lock | composer.json、composer.lock |
dotnet CLI | .NET 言語 (C#、C++、F#、VB) | .csproj、.vbproj、.nuspec、.vcxproj、.fsproj | .csproj、.vbproj、.nuspec、.vcxproj、.fsproj、packages.config |
| Maven | Java、Scala | pom.xml | pom.xml |
| npm | JavaScript | package-lock.json | package-lock.json、package.json |
| Python PIP | Python | requirements.txt、pipfile.lock | requirements.txt, pipfile, pipfile.lock, setup.py* |
| RubyGems | Ruby | Gemfile.lock | Gemfile.lock、Gemfile、*.gemspec |
| Yarn | JavaScript | yarn.lock | package.json、yarn.lock |
メモ: setup.py ファイルで Python の依存関係をリストする場合、プロジェクトの依存関係すべてを解析してリストすることはできない場合があります。
参考リンク
- Wikipedia の「Dependency graph」
- リポジトリの依存関係を見る