GitHub によって報告される依存関係の検出結果は、他のツールから返される結果とは異なる場合があります。 これには理由があり、GitHub がプロジェクトの依存関係をどのように決定するかを理解しておくと役に立ちます。
依存関係グラフは、マニフェストとロックファイルの依存関係のみを検索しますか?
依存関係グラフには、環境で明示的に宣言されている依存関係に関する情報が自動的に含まれます。 つまり、マニフェストまたはロックファイルで指定されている依存関係です。 依存関係グラフには、通常、マニフェストファイル内の依存関係の依存関係を調べることにより、ロックファイルで指定されていない場合でも、推移的な依存関係も含まれます。
依存関係グラフには、「ゆるい」依存関係は自動的に含まれません。 「ゆるい」依存関係は、パッケージマネージャーのマニフェストまたはロックファイルで参照されるのではなく、あるソースからコピーされ、リポジトリに直接またはアーカイブ (ZIP ファイルや JAR ファイルなど) に含まれてチェックインされる個々のファイルです。
ただし、プロジェクトのビルド時に解決された依存関係など、依存関係がマニフェストまたはロック ファイルで宣言されていない場合でも、 依存関係送信 API を使用して依存関係をプロジェクトの依存関係グラフに追加できます。 依存関係送信 API を使ってプロジェクトに送信された依存関係には、提出にどの検出機能が使われたか、いつ送信されたかが表示されます。 依存関係送信 APIの詳細については、「依存関係サブミッション API を使用する」を参照してください。
**チェック:** リポジトリのマニフェストまたはロックファイル内で指定されていない、コンポーネントに対する見落とされている依存関係はありますか?
依存関係グラフは、変数を使用して指定された依存関係を検出しますか?
依存関係グラフは、マニフェストがGitHubにプッシュされるときにそれを分析します。 したがって、依存関係グラフはプロジェクトのビルド環境にアクセスできないため、マニフェスト内で使用される変数を解決できません。 マニフェスト内で変数を使用して名前、またはより一般的には依存関係のバージョンを指定する場合、その依存関係は依存関係グラフに自動的には含まれません。
ただし、プロジェクトのビルド時にのみ依存関係が解決される場合でも、 依存関係送信 API を使用して依存関係をプロジェクトの依存関係グラフに追加できます。 依存関係送信 API について詳しくは、「依存関係サブミッション API を使用する」をご覧ください。
**チェック:** マニフェストで、名前またはバージョンに変数を使用して、見落とされている依存関係が宣言されていますか?
依存関係グラフのデータに影響する制限はありますか?
はい、依存関係グラフには、処理するマニフェスト ファイルのサイズ、数、場所に関する制限があります。
処理制限は、 GitHub 内に表示される依存関係グラフに影響を与え、 Dependabot alerts が作成されないようにします。
サイズが 10 MB を超えるマニフェストは無視され、 Dependabot alertsは生成されません。
既定では、GitHubはリポジトリごとに 150 600を超える処理を行いません。 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 ] タブで、アラート一覧の上部にある [ ] をクリックします。 ドロップダウン メニューから [Dependabot alertsの更新] を選択します。 これにより、リポジトリのマニフェストを処理し、新規または変更された依存関係を検出し、アラートを更新するバックグラウンド タスクがエンキューされます。
メモ
リポジトリの依存関係グラフを更新するには、セキュリティ アラートを管理するアクセス許可が必要です。 このアクセスの構成については、「リポジトリのセキュリティと分析設定を管理する」を参照してください。 不正使用の可能性をさらに減らすために、Dependabot alerts更新オプションはリポジトリごとに 1 時間に 1 回だけトリガーできます。
[ 更新] Dependabot alerts をクリックすると、マニフェスト ファイルのみがスキャンされます。 依存関係グラフに 依存関係送信 APIを使用して送信されたビルド時の依存関係情報も含まれている場合は、依存関係情報を生成して送信するアクションまたは外部プロセスを再実行すると、リポジトリの依存関係グラフの再構築もトリガーされます。 依存関係送信 API の詳細については、「依存関係サブミッション API を使用する」を参照してください。
自動依存関係送信を使っている場合は、リポジトリのマニフェスト ファイルを更新するコミットをプッシュすると、自動送信アクションの実行がトリガーされます。
いずれの場合でも、アラート一覧の先頭にあるタイムスタンプは、依存関係グラフが最後に構築された時間を示します。