[swift] SwiftLint와 커밋 훅

SwiftLint는 Swift 코드의 스타일과 일관성을 유지하기 위한 정적 분석 도구입니다. 이 도구를 사용하면 코드베이스의 스타일 가이드를 준수하여 더 깨끗하고 가독성 높은 코드를 작성할 수 있습니다.

그러나 개발자들은 종종 스타일 가이드를 준수하지 않고 코드를 커밋하는 실수를 합니다. 이를 방지하기 위해 Git 훅을 이용하여 SwiftLint를 자동으로 실행하고 커밋을 거절할 수 있습니다.

SwiftLint 설치

SwiftLint를 설치하려면 다음과 같이 Homebrew를 사용할 수 있습니다.

$ brew install swiftlint

SwiftLint를 직접 다운로드하고 설치하려는 경우 GitHub 저장소에서 최신 릴리스를 다운로드할 수 있습니다.

코딩 스타일 가이드 설정

SwiftLint는 .yml 확장자를 가진 설정 파일을 사용하여 코드 스타일 가이드를 정의합니다. 코드베이스에 최적화된 설정 값을 사용할 수도 있고, 직접 사용자 정의 설정을 만들 수도 있습니다.

프로젝트 루트 디렉토리에 .swiftlint.yml 파일을 생성하고 다음과 같이 코드 스타일을 정의합니다.

opt_in_rules:
  - mixed_whitespace_in_string
  - trailing_whitespace
  - force_unwrapping
  - file_length

disabled_rules:
  - trailing_semicolon
  - identifier_name

included:
  - Sources

위 예제는 코드 중 공백 문자, 세미콜론 등을 검사하고, 파일 길이를 제한하는 규칙을 사용하도록 설정한 것입니다. 필요에 따라 다른 규칙을 추가하거나 비활성화할 수 있습니다.

Git 커밋 훅 설정

Git 훅을 이용하여 SwiftLint를 커밋하기 전에 자동으로 실행할 수 있습니다. 프로젝트 루트 디렉토리에 .git/hooks/pre-commit 파일을 생성하고 다음과 같이 스크립트를 작성합니다.

#!/bin/sh

# 프로젝트 루트로 이동합니다.
cd "$(git rev-parse --show-toplevel)"

# SwiftLint를 실행합니다.
swiftlint

# SwiftLint 오류가 있는 경우 커밋을 취소합니다.
if [ $? -ne 0 ]; then
    echo "SwiftLint 오류가 발견되어 커밋을 취소합니다. 코드를 수정하세요."
    exit 1
fi

# 커밋을 진행합니다.
exit 0

위 예제는 pre-commit 훅을 사용하여 커밋하기 전에 SwiftLint를 실행하고 오류가 있는 경우 커밋을 취소하는 방법을 보여줍니다. 이 스크립트를 저장한 후 실행 권한을 주어야 합니다.

$ chmod +x .git/hooks/pre-commit

이제 커밋을 진행하면 pre-commit 훅에서 SwiftLint를 실행하여 코드 스타일을 검사하고 오류가 있는 경우 커밋이 취소됩니다.

결론

SwiftLint와 Git 훅을 사용하면 코드 스타일 가이드를 준수하는 것을 보장하고 코드의 품질을 향상시킬 수 있습니다. 이를 통해 더 읽기 쉽고 유지 관리하기 쉬운 Swift 코드를 작성할 수 있습니다.