GitHub Enterprise Server によって報告された依存関係の検出結果は、他のツールから返される結果とは異なる場合があります。 これには理由があり、GitHub がプロジェクトの依存関係をどのように決定するかを理解しておくと便利です。
依存関係グラフは、マニフェストとロックファイルの依存関係のみを検索しますか?
依存関係グラフには、環境で明示的に宣言されている依存関係に関する情報が自動的に含まれます。 つまり、マニフェストまたはロックファイルで指定されている依存関係です。 依存関係グラフには、通常、マニフェストファイル内の依存関係の依存関係を調べることにより、ロックファイルで指定されていない場合でも、推移的な依存関係も含まれます。
依存関係グラフには、「ゆるい」依存関係は自動的に含まれません。 「ゆるい」依存関係は、パッケージマネージャーのマニフェストまたはロックファイルで参照されるのではなく、あるソースからコピーされ、リポジトリに直接またはアーカイブ (ZIP ファイルや JAR ファイルなど) に含まれてチェックインされる個々のファイルです。
ただし、プロジェクトのビルド時に解決される依存関係など、依存関係がマニフェストまたはロック ファイルで宣言されていない場合でも、依存関係送信 API を使用して、プロジェクトの依存関係グラフに依存関係を追加できます。 依存関係グラフには、送信された依存関係がエコシステム別にグループ化されて表示されますが、マニフェストまたはロック ファイルから解析された依存関係とは分けられます。 依存関係送信 API について詳しくは、「Dependency Submission API を使用する」をご覧ください。
チェック: リポジトリのマニフェストまたはロックファイル内で指定されていない、コンポーネントに対する見落とされている依存関係はありますか?
依存関係グラフは、変数を使用して指定された依存関係を検出しますか?
依存関係グラフは、マニフェストが GitHub にプッシュされるときにマニフェストを分析します。 したがって、依存関係グラフはプロジェクトのビルド環境にアクセスできないため、マニフェスト内で使用される変数を解決できません。 マニフェスト内で変数を使用して依存関係の名前、またはより一般的には依存関係のバージョンを指定する場合、その依存関係は依存関係グラフに自動的に含まれません。
ただし、依存関係がプロジェクトのビルド時にのみ解決される場合でも、依存関係送信 API を使用して、依存関係をプロジェクトの依存関係グラフに追加できます。 依存関係送信 API について詳しくは、「Dependency Submission API を使用する」をご覧ください。
チェック: マニフェストで、名前またはバージョンに変数を使用して、見落とされている依存関係が宣言されていますか?
依存関係グラフのデータに影響する制限はありますか?
はい、依存関係グラフの制限には 2 つのカテゴリがあります。
-
処理制限
これらは GitHub 内に表示される依存関係グラフに影響を与え、Dependabot alerts が作成されないようにします。
サイズが 0.5 MB を超えるマニフェストは、Enterprise アカウントに対してのみ処理されます。 他のアカウントの場合、0.5 MB を超えるマニフェストは無視され、Dependabot alerts は作成されません。
規定では、GitHub はリポジトリごとに 600 個を超えるマニフェストを処理しません。 Dependabot alerts は、この制限を超えるマニフェストに対しては作成されず、この制限を超えた場合、Dependabot alerts は予期しない動作をする可能性があります。
ベンダーの依存関係に通常使用される名前を持つディレクトリに格納されているマニフェスト ファイルは、処理されません。 次の正規表現と一致する名前のディレクトリは、ベンダーの依存関係ディレクトリと見なされます。
(3rd|[Tt]hird)[-_]?[Pp]arty/
(^|/)vendors?/
(^|/)[Ee]xtern(als?)?/
(^|/)[Vv]+endor/
例 :
- third-party/dependencies/dependency1
- vendors/dependency1
- /externals/vendor1/dependency1