Repolode
krzysztofzablocki

krzysztofzablocki/Sourcery

SwiftSyntax 기반의 Swift 코드 생성기로, 템플릿을 사용해 mock, Equatable, Codable 코드 같은 보일러플레이트를 생성합니다.

스타
8,031
포크
633
열린 이슈
95
마지막 커밋
9일 전

어떤 프로젝트인가요?

Sourcery는 Swift용 커맨드라인 코드 생성기입니다. Apple의 SwiftSyntax로 Swift 소스 파일을 파싱한 뒤, 추출한 타입 정보를 Stencil 템플릿에 전달하고 템플릿이 새 Swift 파일을 작성합니다. 이를 통해 프로토콜 mock, 동등성 및 해시 구현, enum case 헬퍼, lens, Codable conformance 같은 반복적인 코드를 없앨 수 있습니다.

대표적인 사용 예는 mock 생성입니다. 프로토콜마다 mock 클래스를 직접 작성하는 대신 `extension MyProtocol: AutoMockable {}` 같은 어노테이션을 추가하면 Sourcery가 mock을 생성합니다. 소스에서 결과물을 다시 생성하므로 프로토콜 멤버가 바뀌어도 mock이 최신 상태로 유지됩니다.

Sourcery는 Homebrew, CocoaPods, Mint 또는 Swift Package Manager로 설치하는 바이너리로 실행할 수 있으며, Swift package command plugin이나 pre-commit hook으로도 사용할 수 있습니다. 파일이 변경될 때 코드를 다시 생성하는 watch 모드를 지원하고, 소스, 템플릿, 인수를 지정하는 설정 파일도 제공합니다.

핵심 기능

  • 01AutoMockable 어노테이션으로 프로토콜 mock을 생성합니다.
  • 02타입 정의를 바탕으로 Equatable, Hashable, Codable 구현을 생성합니다.
  • 03임의의 패턴을 자동화하는 사용자 지정 Stencil 템플릿을 작성할 수 있습니다.
  • 04소스나 템플릿이 변경되면 코드를 다시 생성하는 watch 모드를 제공합니다.
  • 05Homebrew, CocoaPods, Mint, SPM 또는 pre-commit으로 설치할 수 있습니다.

활용 사례

  • iOS 프로젝트의 모든 프로토콜에 대해 일관된 mock과 stub을 생성합니다.
  • 모델 타입이 변경될 때 Equatable, Hashable, Codable 코드를 최신 상태로 유지합니다.
  • 반복되는 아키텍처 패턴을 위한 프로젝트별 코드 생성 템플릿을 만듭니다.
  • 타입 선언에서 파생되는 설정 화면이나 기타 UI 코드를 자동화합니다.

빠른 시작

  1. 1

    Homebrew로 sourcery 바이너리를 설치합니다

    brew install sourcery
  2. 2

    소스, 템플릿, 출력 경로를 지정해 sourcery를 실행합니다

    ./bin/sourcery --sources <sources path> --templates <templates path> --output <output path>

사용 전 알아둘 점

  • Swift Package Manager로 빌드할 때는 JS로 작성된 템플릿이 지원되지 않습니다.
  • Xcode 명령 플러그인은 Xcode 14부터 사용할 수 있습니다.

포함된 컬렉션

토픽

#swift#code-generation#metaprogramming#templates#ios#testing#boilerplate#codegen#codegenerator

자주 묻는 질문

Sourcery은(는) 무엇인가요?
SwiftSyntax 기반의 Swift 코드 생성기로, 템플릿을 사용해 mock, Equatable, Codable 코드 같은 보일러플레이트를 생성합니다. Sourcery는 Swift용 커맨드라인 코드 생성기입니다. Apple의 SwiftSyntax로 Swift 소스 파일을 파싱한 뒤, 추출한 타입 정보를 Stencil 템플릿에 전달하고 템플릿이 새 Swift 파일을 작성합니다. 이를 통해 프로토콜 mock, 동등성 및 해시 구현, enum case 헬퍼, lens, Codable conformance 같은 반복적인 코드를 없앨 수 있습니다.
Sourcery은(는) 무료로 사용할 수 있나요? 라이선스는 무엇인가요?
Sourcery은(는) MIT 라이선스의 오픈소스입니다. 상업용 제품에 사용하기 전에 라이선스 조건을 확인하세요.
Sourcery은(는) 아직 유지보수되고 있나요?
활발히 유지보수 중. Sourcery의 마지막 커밋은 2026년 10월 28일입니다.
Sourcery은(는) 어디에 사용할 수 있나요?
iOS 프로젝트의 모든 프로토콜에 대해 일관된 mock과 stub을 생성합니다. 모델 타입이 변경될 때 Equatable, Hashable, Codable 코드를 최신 상태로 유지합니다. 반복되는 아키텍처 패턴을 위한 프로젝트별 코드 생성 템플릿을 만듭니다. 타입 선언에서 파생되는 설정 화면이나 기타 UI 코드를 자동화합니다.
Sourcery는 어떻게 설치하나요?
Homebrew로 sourcery 바이너리를 설치합니다: brew install sourcery 소스, 템플릿, 출력 경로를 지정해 sourcery를 실행합니다: ./bin/sourcery --sources <sources path> --templates <templates path> --output <output path>
Sourcery은(는) 어디서 받을 수 있나요?
소스 코드와 설치 방법은 GitHub에 있습니다: https://github.com/krzysztofzablocki/Sourcery

요약은 프로젝트 README를 바탕으로 AI가 작성했습니다. GitHub 통계는 매일 갱신됩니다.

관련 프로젝트

각각 구현할 스켈레톤과 trybuild 테스트 스위트가 포함된 Rust 프로시저 매크로 프로젝트 5개의 실습 워크숍입니다.

학습 자료#rust#procedural-macros#metaprogramming
4.9천+1 이번 주1.2천RustApache-2.0업데이트 3개월 전