Skip to main content

依存関係グラフのトラブルシューティング

依存関係グラフによって報告された依存関係の情報が期待したものと異なる場合、いくつかの考慮するポイントと、さまざまな確認項目があります。

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

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

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

GitHub によって報告される依存関係の検出結果は、他のツールから返される結果とは異なる場合があります。 これには理由があり、GitHub がプロジェクトの依存関係をどのように決定するかを理解しておくと役に立ちます。

依存関係グラフは、マニフェストとロックファイルの依存関係のみを検索しますか?

依存関係グラフには、環境で明示的に宣言されている依存関係に関する情報が自動的に含まれます。 つまり、マニフェストまたはロックファイルで指定されている依存関係です。 依存関係グラフには、通常、マニフェストファイル内の依存関係の依存関係を調べることにより、ロックファイルで指定されていない場合でも、推移的な依存関係も含まれます。

依存関係グラフには、「ゆるい」依存関係は自動的に含まれません。 「ゆるい」依存関係は、パッケージマネージャーのマニフェストまたはロックファイルで参照されるのではなく、あるソースからコピーされ、リポジトリに直接またはアーカイブ (ZIP ファイルや JAR ファイルなど) に含まれてチェックインされる個々のファイルです。

ただし、プロジェクトのビルド時に解決される依存関係など、依存関係がマニフェストまたはロック ファイルで宣言されていない場合でも、依存関係送信 API を使用して、プロジェクトの依存関係グラフに依存関係を追加できます。 依存関係送信 API を使ってプロジェクトに送信された依存関係には、提出にどの検出機能が使われたか、いつ送信されたかが表示されます。依存関係送信 API について詳しくは、「Dependency Submission API を使用する」をご覧ください。

チェック: リポジトリのマニフェストまたはロックファイル内で指定されていない、コンポーネントに対する見落とされている依存関係はありますか?

依存関係グラフは、変数を使用して指定された依存関係を検出しますか?

依存関係グラフは、マニフェストが GitHub にプッシュされるときにマニフェストを分析します。 したがって、依存関係グラフはプロジェクトのビルド環境にアクセスできないため、マニフェスト内で使用される変数を解決できません。 マニフェスト内で変数を使用して依存関係の名前、またはより一般的には依存関係のバージョンを指定する場合、その依存関係は依存関係グラフに自動的に含まれません。

ただし、依存関係がプロジェクトのビルド時にのみ解決される場合でも、依存関係送信 API を使用して、依存関係をプロジェクトの依存関係グラフに追加できます。 依存関係送信 API について詳しくは、「Dependency Submission API を使用する」をご覧ください。

チェック: マニフェストで、名前またはバージョンに変数を使用して、見落とされている依存関係が宣言されていますか?

依存関係グラフのデータに影響する制限はありますか?

はい、依存関係グラフには、処理するマニフェスト ファイルのサイズ、数、場所に関する制限があります。

この処理の制限は、GitHub 内に表示される依存関係グラフに影響します。また、Dependabot alerts の作成を妨げます。

サイズが 10 MB を超えるマニフェストは無視され、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 alerts タブで、アラート一覧の上部にある をクリックします。 ドロップダウン メニューから [Refresh Dependabot alerts] を選びます。 これにより、リポジトリのマニフェストを処理し、新規または変更された依存関係を検出し、アラートを更新するバックグラウンド タスクがエンキューされます。

Note

リポジトリの依存関係グラフを更新するには、セキュリティ アラートを管理するアクセス許可が必要です。 このアクセスの構成については、「リポジトリのセキュリティと分析設定を管理する」を参照してください。 不正使用の可能性をさらに減らすために、[Refresh Dependabot alerts] オプションをトリガーできるのは、リポジトリごとに 1 時間に 1 回のみです。

[Refresh Dependabot alerts] をクリックすると、マニフェスト ファイルのみがスキャンされます。 依存関係送信 API を使って送信されたビルド時の依存関係情報も依存関係グラフに含まれている場合、依存関係情報の生成と送信を行うアクションまたは外部プロセスを再実行すると、リポジトリの依存関係グラフのリビルドもトリガーされます。 依存関係送信 API について詳しくは、「Dependency Submission API を使用する」をご覧ください。

Maven の自動依存関係送信を使っている場合、リポジトリの pom.xml を更新するコミットをプッシュすると、自動送信アクションの実行がトリガーされます。

いずれの場合でも、アラート一覧の先頭にあるタイムスタンプは、依存関係グラフが最後に構築された時間を示します。

参考資料