콘텐츠로 이동

의존성 분석 (증분 빌드)

Swift 모듈 내 파일 간 의존성 분석. 원본: swift/docs/DependencyAnalysis.md

기본 원리

"provides / depends" 시스템: 각 파일이 제공하는 것과 의존하는 것을 추적하여, 변경된 파일이 제공하는 것에 의존하는 파일만 재빌드.

황금률: 보수적으로 판단. 불필요한 재빌드는 짜증나지만, 필요한 재빌드를 하지 않으면 디버그 타임 미스컴파일.

의존성 종류

종류 설명
top-level 모듈 스코프의 비한정 이름 사용/정의
nominal 특정 타입 사용 (맹글된 이름으로 식별)
member 타입의 특정 멤버 제공/접근
dynamic-lookup AnyObject를 통한 @objc 멤버 접근

특수 케이스: 빈 멤버 이름

멤버 이름이 빈 member 항목 = 타입에 비-private 멤버가 추가될 때마다 재빌드 필요. 상속(superclass, protocol conformance)에 사용.

제공/의존 추적

  • provides: 타입 검사 완료 후 계산
  • depends: 컴파일러 조회(qualified/unqualified lookup, protocol conformance check)를 계측하여 추적

관련 페이지: request-evaluator, compiler-driver, overview