Skip to content

SwiftFormat·SwiftLint 환경 세팅 가이드

Seolin(Kirby) edited this page Jul 8, 2025 · 1 revision

✅ 목적

  • SwiftFormat: 커밋 전에 자동으로 코드 스타일을 통일합니다.
  • SwiftLint: 잠재적인 코드 스멜과 스타일 위반을 사전에 감지합니다.

이 도구들은 커밋 전에 자동 실행되도록 .lefthook.yml에 연결되어 있으며, 설정 파일은 프로젝트 루트에 함께 포함되어 있습니다.

📦 1. 의존성 설치 (최초 1회)

터미널에서 다음 명령어를 실행하세요:

make setup

이 명령어는 다음 작업을 수행합니다:

  • scripts/*.sh 실행 권한 부여
  • lefthook 설치 및 Git 훅 연동
  • 커밋 메시지 템플릿 적용
  • .swiftformat, .swiftlint.yml 설정 자동 적용 가능 상태로 준비

🧪 2. 설치 확인

다음 명령어로 정상 설치 여부를 확인할 수 있습니다:

which swiftformat    # /opt/homebrew/bin/swiftformat (또는 비슷한 경로)
which swiftlint      # /opt/homebrew/bin/swiftlint

만약 설치되어 있지 않다면 다음을 직접 실행:

brew install swiftformat swiftlint

🧹 3. SwiftFormat: 코드 스타일 자동 정리

◾ 자동 실행

swiftformat . 명령이 pre-commit 훅에 연결되어 있어, 커밋 전 자동으로 실행됩니다.

◾ 주요 포맷 규칙 (.swiftformat)

  • 4칸 들여쓰기 (--indent 4)
  • 개행은 LF로 통일 (--linebreaks lf)
  • self. 생략 (--self remove)
  • --importgrouping testable-bottom: @testable import는 가장 아래

👉 수동 실행도 가능:

swiftformat .

🧭 4. SwiftLint: 코드 린트 검사

◾ 자동 실행 아님

현재는 pre-commit 훅에는 연결되어 있지 않으며, 차후 CI 연동 또는 수동 실행으로 사용합니다.
SwiftLint의 설정이 어려우시다면, 이 글을 참고하세요.

◾ 주요 룰 설정 (.swiftlint.yml)

  • 비활성화 규칙: 강제 캐스팅, 강제 언래핑, 한 줄 제한 등
  • Opt-in 규칙:
    • sorted_imports: import 순서 정렬
    • indentation_width: 4칸 들여쓰기 고정
  • 허용 예외 폴더: .vscode, Pods/, .build/, .git

👉 수동 검사 예시:

swiftlint

Xcode에 SwiftLint가 연동되어 있다면, 저장할 때 자동 린팅됩니다.

⚠️ 5. 커밋 전 발생 가능한 경고/에러 예시

증상 원인 및 해결 방법
커밋이 중단되고 포맷 수정됨 swiftformat . 자동 적용됨 → 수정된 파일을 git add 후 다시 커밋
SwiftLint 관련 오류 출력 swiftlint 수동 실행 → 어떤 규칙에 위배되었는지 확인 가능
swiftformat: command not found brew install swiftformat 후 다시 시도
make setup 중 lefthook: command not found brew install lefthook 필요

✅ 요약

도구 역할 실행 시점 설정 파일
SwiftFormat 코드 포맷 정리 git commit 전 자동 실행 .swiftformat
SwiftLint 코드 규칙 검사 수동 실행 또는 CI 적용 예정 .swiftlint.yml

📘 참고