[swift] Swift Sourcery와 가벼운 프레임워크 개발의 연동

소개

Swift Sourcery는 Swift에 기반한 코드 생성 도구입니다. 이 도구를 사용하면 컴파일 타임에 소스 코드를 분석하고, 사용자가 정의한 템플릿을 통해 자동으로 코드를 생성할 수 있습니다.

이번에는 Swift Sourcery와 가벼운 프레임워크 개발을 함께 사용하는 방법에 대해 알아보겠습니다.

프레임워크 개발과 코드 생성

  1. 프레임워크 개발을 시작하기 위해, 새로운 프로젝트를 생성합니다.

  2. Swift Sourcery를 프로젝트에 추가하기 위해, Package.swift 파일을 열고 dependencies 섹션에 다음과 같이 Sourcery를 추가합니다.
     dependencies: [
         .package(url: "https://github.com/krzysztofzablocki/Sourcery.git", from: "1.0.0")
     ]
    

    이후 터미널에서 swift package update 명령어를 실행하여 Sourcery를 설치합니다.

  3. 활용하고자 하는 프레임워크에 소스 코드 생성을 위한 주석과 템플릿 파일을 작성합니다. 예를 들어, MyFramework.swift에 다음과 같은 주석을 추가합니다.
     // sourcery: AutoGenerateMockable
     protocol MyProtocol {
         func doSomething()
     }
    
  4. 템플릿 파일을 생성하기 위해, 프로젝트 루트 디렉토리에 .sourcery 폴더를 생성한 후, MyProtocolMockable.stencil이라는 이름의 파일을 생성합니다.

  5. MyProtocolMockable.stencil 파일에 다음과 같은 내용을 추가합니다.
        
     // sourcery: AutoMockable
     class {{ name }}Mock: {{ name }} {
         {% for method in methods %}
         func {{ method.name }}() {
             // Implement mock behavior
         }
         {% endfor %}
     }
        
    
  6. 터미널에서 sourcery --sources MyFramework --templates .sourcery --output Generated 명령어를 실행하여 코드를 생성합니다. MyFramework는 프로젝트의 소스 코드 디렉토리를 의미하며, Generated는 코드 생성 결과가 저장될 폴더입니다.

  7. 코드 생성 결과를 프로젝트에 적용하려면, Generated 폴더 내의 파일들을 프로젝트에 추가해야 합니다. Xcode에서 File -> Add Files to "YourProject"를 선택하고, Generated 폴더 내의 파일들을 추가합니다.

  8. 이제 코드에서 생성된 모형 클래스를 사용할 수 있습니다. 예를 들어, MyProtocolMock 클래스를 사용하여 단위 테스트를 작성할 수 있습니다.

결론

Swift Sourcery는 가벼운 프레임워크 개발에 대한 매우 유용한 도구입니다. 코드 생성을 통해 반복적인 작업을 자동화하고, 유지보수성을 개선할 수 있습니다. 프레임워크 개발과 코드 생성을 연동하여 효율적인 소프트웨어 개발을 진행해보세요.

참고 자료