[swift] Swift Sourcery와 오류 처리 코드 자동 생성

Swift는 강력한 언어이지만, 오류 처리 코드 작성이 번거로운 경우가 있습니다. 하지만 Swift에는 다른 언어와 마찬가지로 코드 생성 도구를 사용할 수 있습니다. 이번에는 Swift Sourcery라는 코드 생성 도구를 사용하여 오류 처리 코드를 자동으로 생성하는 방법에 대해 알아보겠습니다.

Sourcery란?

Sourcery는 Swift 코드 생성과 생성 코드에 대한 주석 주기 위한 도구입니다. 이를 사용하면 반복적인 작업을 자동화하고, 개발자가 직접 작성하는 코드의 양을 줄일 수 있습니다. Sourcery는 템플릿 엔진을 사용하여 코드를 생성하고, 정적인 분석을 수행하여 코드베이스에서 사용되는 타입, 프로퍼티, 메서드 등을 검색하고 조작할 수 있습니다.

Swift Sourcery를 사용한 오류 처리 코드 생성

우리는 주로 다양한 오류 처리를 해야 하는 상황을 자주 마주하게 됩니다. 예를 들어 네트워크 요청 시에는 실패할 수 있는 상황을 고려해야 하며, 파일 또는 데이터베이스 작업 시에도 예기치 않은 오류가 발생할 수 있습니다. 이런 경우에 Sourcery를 사용하여 오류 처리 코드를 자동으로 생성할 수 있습니다.

먼저, 프로젝트에 Swift Sourcery를 추가해야 합니다. 이를 위해 Sourcery GitHub 저장소에서 최신 버전을 내려받고, 프로젝트에 추가합니다.

다음으로, Errors.stencil라는 이름의 템플릿 파일을 생성합니다. 이 파일은 생성할 오류 타입 및 해당 오류에 대한 속성과 메서드를 정의합니다.

// Errors.stencil

{% for error in errors %}
struct {{ error.name }}: Error {
    let message: String
    let code: Int
}

extension {{ error.name }}: LocalizedError {
    var errorDescription: String? {
        return message
    }
}

{% endfor %}

이 템플릿에서는 Errors라는 배열을 입력으로 받고, 해당 배열을 순회하며 오류 타입을 생성하는 코드를 작성하고 있습니다. 생성된 오류 타입은 Error 프로토콜을 준수하며, messagecode라는 속성을 가지고 있습니다. 또한, LocalizedError 프로토콜을 구현하고 있어서 오류 설명을 반환할 수 있습니다.

이제 Sourcery 명령어를 실행하여 템플릿을 이용해 코드를 생성할 수 있습니다. 예를 들어 Errors.swift라는 소스 파일을 생성하기 위해 다음과 같은 명령어를 실행합니다.

sourcery --sources [소스 파일 경로] --templates [템플릿 파일 경로] --output [생성 파일 경로]

명령어를 실행하면, [소스 파일 경로]에서 정의된 Errors 배열을 읽고, [템플릿 파일 경로]에서 정의된 템플릿에 따라 코드를 생성합니다. 생성된 코드는 [생성 파일 경로]의 파일에 저장됩니다.

이제, 프로젝트에서 Errors.swift 파일을 사용하여 오류 처리 코드를 작성할 수 있습니다. 생성된 오류 타입은 자동 완성이 지원되므로, 개발자가 속성과 메서드를 사용할 때 실수를 줄일 수 있습니다.

마무리

Swift 용 소스 코드 생성 도구인 Swift Sourcery를 사용하여 오류 처리 코드를 자동으로 생성해 보았습니다. 이를 통해 반복적이고 번거로운 작업을 줄이고, 오류 처리에 대한 일관성과 가독성을 향상시킬 수 있습니다. Sourcery에 대해 더 자세히 알고 싶다면, 공식 GitHub 저장소를 참조해주세요.