콘텐츠로 이동

암시적 import

Xcode 프로젝트 그래프를 원본 Xcode 프로젝트로 관리할 때의 복잡성을 줄이기 위해 Apple은 의존성이 암시적으로 정의될 수 있도록 빌드 시스템을 설계했습니다. 즉, 앱과 같은 제품이 명시적으로 의존성을 선언하지 않더라도 프레임워크에 의존할 수 있습니다. 규모가 작을 때는 문제가 없지만, 프로젝트 그래프의 복잡도가 증가하면 이러한 암시적 의존성으로 인해 증분 빌드가 불안정해지거나 미리보기나 코드 완성 같은 편집기 기반 기능이 제대로 동작하지 않을 수 있습니다.

문제는 암시적 의존성이 발생하는 것을 막을 수 없다는 점입니다. 어떤 개발자든 Swift 코드에 import 문을 추가하면 암시적 의존성이 생성됩니다. 이때 Tuist가 유용합니다. Tuist는 프로젝트 코드를 정적 분석하여 암시적 의존성을 검사하는 명령어를 제공합니다. 다음 명령어를 실행하면 프로젝트의 암시적 의존성이 출력됩니다:

bash
tuist inspect dependencies --only implicit

명령어가 암시적 import를 감지하면 0이 아닌 종료 코드로 종료됩니다.

CI에서 검증하기

새 코드가 업스트림에 푸시될 때마다 이 명령어를 연속 통합 파이프라인의 일부로 실행할 것을 강력히 권장합니다.

모든 암시적 경우가 감지되지는 않습니다

Tuist는 정적 코드 분석을 통해 암시적 의존성을 감지하므로 모든 경우를 포착하지 못할 수 있습니다. 예를 들어, Tuist는 코드 내 컴파일러 지시문을 통한 조건부 import를 이해하지 못합니다.