Skip to main content

依存関係グラフについて

依存関係グラフを使って、プロジェクトの依存関係をすべて特定できます。 依存関係グラフは、幅広く一般的なパッケージエコシステムをサポートします。

この機能を使用できるユーザーについて

依存関係グラフは、次のリポジトリの種類で使用できます。

  • パブリック リポジトリ (既定ではオン)
  • プライベートリポジトリ
  • フォーク

依存関係グラフについて

依存関係グラフは、リポジトリに格納されているマニフェストおよびロック ファイル、および 依存関係送信 API を使用してリポジトリに送信された依存関係の概要です。 それぞれのリポジトリについて、以下が表示されます:

  • リポジトリが依存している依存関係、エコシステム、パッケージ
  • 依存、依存するリポジトリ、パッケージ

依存関係ごとに、バージョン、ライセンス情報、それを含むマニフェスト ファイル、既知の脆弱性があるかどうかを確認できます。 推移的な依存関係をサポートするパッケージ エコシステムの場合、リレーションシップの状態が表示され、[] をクリックしてから [Show paths] をクリックすると、その依存関係の基になっている推移パスを確認できます。

検索バーを使用して、特定の依存関係を検索することもできます。 依存関係は、脆弱なパッケージが先頭になるように自動的に並べ替えられます。

コミットをサポートされているマニフェストを変更または追加する GitHub にプッシュする場合、またはロック ファイルを規定のブランチにプッシュする場合、依存関係グラフは自動更新されます。さらに、誰かが、変更を依存関係のいずれかのリポジトリにプッシュすると、このフラフは更新されます。

サポートされているエコシステムとマニフェスト ファイルの詳細については、「AUTOTITLE」を参照してください。

さらに、依存関係送信 API を使用して、マニフェストやロック ファイルの分析で依存関係グラフがサポートされていないエコシステムであっても、任意のパッケージ マネージャーやエコシステムから依存関係を送信することができます。 依存関係送信 API を使ってプロジェクトに送信された依存関係には、提出にどの検出機能が使われたか、いつ送信されたかが表示されます。 依存関係送信 API について詳しくは、「依存関係サブミッション API を使用する」をご覧ください。

デフォルトブランチをターゲットとする、依存関係の変更を含むPull Requestを作成すると、GitHubは依存関係グラフを使ってそのPull Requestに依存関係のレビューを追加します。 それらは、依存関係が脆弱性を含んでいるか、もしそうならその脆弱性が修復されているバージョンを示しています。 詳しくは、「依存関係の確認について」をご覧ください。

少なくともリポジトリへの読み取りアクセス権がある場合は、GitHub UI または GitHub REST API を使って、リポジトリの依存関係グラフを SPDX 互換のソフトウェア部品表 (SBOM) としてエクスポートできます。 詳しくは、「リポジトリのソフトウェア部品表のエクスポート」をご覧ください。

依存関係グラフの利用

リポジトリ管理者は、リポジトリに対して依存関係グラフを有効または無効にすることができます。 詳細については、「AUTOTITLE」を参照してください。

リポジトリ管理者は、リポジトリに対して依存関係グラフを有効または無効にすることができます。 詳細については、「AUTOTITLE」を参照してください。

含まれる依存関係

依存関係グラフには、マニフェストとロック ファイルで詳述されているリポジトリのすべての依存関係、またはサポートされているエコシステムと同等の依存関係、および 依存関係送信 API を使用して送信されたすべての依存関係が含まれます。 これには次のものが含まれます。

  • マニフェストまたはロック ファイルで明示的に定義されている直接的な依存関係、または 依存関係送信 API を使用して送信された直接的な依存関係
  • 直接依存関係の間接依存関係。推移的な依存関係、または下位の依存関係とも言う。

依存関係グラフは、間接的な依存関係 がロック ファイルで定義されている場合のみ、または、依存関係送信 API を使用して送信されている場合のみ、特定されます。 最も信頼性の高いグラフを得るには、ロックファイル (または同等のもの) を使用してください。直接および間接の依存関係のうち現在どのバージョンを使用しているかが正確に定義されているからです。 ロックファイルを使用する場合、リポジトリのすべてのコントリビューターが同じバージョンを使用していることも確認してください。そのほうが、コードのテストとデバッグが容易になります。 エコシステムに、ロック ファイルが無い場合は、多くのエコシステムの推移的な依存関係を解決する事前作成されたアクションを使用します。 詳しくは、「依存関係サブミッション API を使用する」をご覧ください。

GitHub が、お使いの環境内の依存関係を理解するのにどのように役立つかの詳細については、「AUTOTITLE」を参照してください。

含まれる依存物

パブリックリポジトリでは、そのリポジトリに依存しているパブリックリポジトリ、もしくはそのリポジトリが公開しているパッケージのみが報告されます。 この情報は、プライベートリポジトリについては報告されません。

依存関係グラフの使用

依存関係グラフを使用する目的は、次のとおりです。

詳細については、次を参照してください。

  •           Wikipedia の[依存関係グラフ](https://en.wikipedia.org/wiki/Dependency_graph)
    
  •         [AUTOTITLE](/code-security/supply-chain-security/understanding-your-software-supply-chain/exploring-the-dependencies-of-a-repository)
    
  •         [AUTOTITLE](/code-security/dependabot/dependabot-alerts/viewing-and-updating-dependabot-alerts)
    
  •         [AUTOTITLE](/code-security/dependabot/troubleshooting-dependabot/troubleshooting-the-detection-of-vulnerable-dependencies)