Skip to main content

종속성 그래프 문제 해결

종속성 그래프가 보고하는 종속성 정보가 예상과 다른 경우 여러 가지 고려해야 할 사항과 확인할 수 있는 사항이 있습니다.

누가 이 기능을 사용할 수 있나요?

종속성 그래프를 다음 리포지토리 유형에 사용할 수 있습니다.

  • 퍼블릭 리포지토리(기본적으로 설정)
  • 프라이빗 리포지토리
  • 포크

GitHub에서 보고한 종속성 검색 결과는 다른 도구에서 반환한 결과와 다를 수 있습니다. 여기에는 타당한 이유가 있으며, 이는 GitHub에서 프로젝트에 대한 종속성을 결정하는 방법을 이해하는 데 도움이 됩니다.

종속성 그래프는 매니페스트 및 잠금 파일에서만 종속성을 찾나요?

종속성 그래프에는 사용자 환경에서 명시적으로 선언된 종속성에 대한 정보가 자동으로 포함됩니다. 즉, 매니페스트 또는 잠금 파일에 지정된 종속성입니다. 종속성 그래프는 일반적으로 매니페스트 파일에서 종속성의 종속성을 확인하여 전이적 종속성이 잠금 파일에 지정되지 않은 경우에도 포함합니다.

종속성 그래프에는 “느슨한” 종속성이 자동으로 포함되지 않습니다. “느슨한” 종속성은 패키지 관리자의 매니페스트 또는 잠금 파일에서 참조되는 것이 아니라 다른 원본에서 복사하여 리포지토리에 직접 또는 보관 파일(예: ZIP 또는 JAR 파일) 내에 체크인되는 개별 파일입니다.

그러나 프로젝트 빌드 시 확인된 종속성처럼 매니페스트나 잠금 파일에 선언되지 않은 종속성이라도 종속성 제출 API을(를) 사용하여 프로젝트의 종속성 그래프에 종속성을 추가할 수 있습니다. 종속성 제출 API을 사용하여 프로젝트에 제출된 종속성은 제출에 사용된 탐지기와 제출된 시점을 표시합니다. 종속성 제출 API에 대한 자세한 내용은 종속성 제출 API 사용을(를) 참조하세요.

확인: 리포지토리의 매니페스트 또는 잠금 파일에 지정되지 않은 구성 요소에 대해 누락된 종속성인가요?

종속성 그래프가 변수를 사용하여 지정된 종속성을 검색하나요?

종속성 그래프는 GitHub에 푸시될 때 매니페스트를 분석합니다. 따라서 종속성 그래프는 프로젝트의 빌드 환경에 액세스할 수 없으므로 매니페스트 내에서 사용되는 변수를 확인할 수 없습니다. 매니페스트 내에서 변수를 사용하여 이름 또는 보다 일반적으로 종속성 버전을 지정하는 경우 해당 종속성은 종속성 그래프에 자동으로 포함되지 않습니다.

그러나 종속성 제출 API을(를) 사용하여 프로젝트가 빌드될 때만 종속성이 확인되는 경우에도 종속성을 프로젝트의 종속성 그래프에 추가할 수 있습니다. 종속성 제출 API에 대한 자세한 내용은 종속성 제출 API 사용을(를) 참조하세요.

확인: 매니페스트에서 이름 또는 버전에 변수를 사용하여 누락된 종속성이 선언되었나요?

종속성 그래프 데이터에 영향을 미치는 제한이 있나요?

예, 종속성 그래프는 처리할 매니페스트 파일의 크기, 수, 위치에 제한이 있습니다.

처리 제한은 GitHub 내에 표시되는 종속성 그래프에 영향을 주고 Dependabot alerts가 만들어지는 것을 방지합니다.

크기가 10MB를 넘는 매니페스트는 무시되며 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 옵션은 리포지토리당 한 시간에 한 번만 트리거할 수 있습니다.

Refresh Dependabot alerts 를 클릭하면 매니페스트 파일만 검색됩니다. 종속성 그래프에 종속성 제출 API을 사용하여 제출된 빌드 시간 종속성 정보도 포함된 경우 종속성 정보를 생성하고 제출하는 작업이나 외부 프로세스를 다시 실행하면 리포지토리의 종속성 그래프 다시 작성도 트리거됩니다. 종속성 제출 API에 대한 자세한 내용은 종속성 제출 API 사용을(를) 참조하세요.

Maven에 대한 자동 종속성 제출을 사용하는 경우 리포지토리의 pom.xml을 업데이트하는 커밋을 푸시하면 자동 제출 작업이 실행되도록 트리거됩니다.

모든 경우에 경고 목록의 맨 위에 있는 타임스탬프는 종속성 그래프가 마지막으로 빌드된 시간을 나타냅니다.

추가 참고 자료