
프론트엔드
SwiftLint 캐싱을 통한 Incremental Build 최적화하기
두줄요약
SwiftLint가 매 빌드마다 실행되며 증분 빌드를 느리게 만드는 문제를 개선했습니다. xcfilelist와 dependency analysis로 캐싱하고, CI 린트로 보완했습니다.
문제 상황
- Xcode Run Script의 SwiftLint가 컴파일마다 전체 코드베이스를 검사해 증분 빌드마다 15~30초의 추가 시간이 발생
- 모듈화가 진행될수록 모듈별 SwiftLint 실행이 늘어나 빌드 지연이 더 커지는 구조
원인 분석
- 일반적인 Run Script 방식은 매 빌드마다 SwiftLint를 수행하는 구조
- 변경 여부와 무관하게 린트가 돌아 증분 빌드의 이점이 줄어듦
해결 방법
- Based on dependency analysis와 xcfilelist를 활용해 변경 파일이 있을 때만 SwiftLint가 실행되도록 구성
- Pre-actions로 타겟별 xcfilelist를 갱신하고, 병렬 스크립트로 여러 모듈을 빠르게 처리
주의할 점
- 캐싱으로 린트 확인 시점이 늦어져 경고와 오류 발견이 지연될 수 있음
- 일부 린트 오류가 컴파일 문제로 이어질 수 있어 보완 장치 필요
적용해볼 점
- 증분 빌드에 포함된 Build Phase의 불필요한 실행 여부 점검
- xcfilelist, Build Pre-actions, dependency analysis로 캐시 전략 검토
