Skip to content

6. 원티드 프로젝트에 Swift Style Guide를 적용하는 방법

gookhee edited this page Dec 9, 2021 · 1 revision

규칙을 준수하도록 관리하는 방법

  1. 규칙 위반 자동 수정
  2. 자동으로 수정할 수 없는 규칙 위반은 워닝이나 에러로 알림
  3. 라이브러리로 체크할 수 없는 규칙은 코드 리뷰에서 수동으로 체크
  4. CI툴이 PR단위로 체크

구체적인 방법

  1. Xcode Build Phrase에 SwiftFormat으로 자동 수정하는 스크립트 추가

    • 빌드 시 자동 수정

      ${PODS_ROOT}/SwiftFormat/CommandLineTool/swiftformat --config .wanted.swiftformat $SRCROOT

    • SwiftLint에서 자동으로 수정하지 못하는 규칙을 상당부분 자동 수정해줍니다! SwiftLint와 겹치는 규칙도 있습니다.

  2. Xcode Build Phrase에 SwiftLint로 린팅하는 스크립트를 추가

    • 빌드 시 린팅하여 워닝 또는 에러를 발생

    • 자동 수정 되지 않는 규칙만 체크합니다.

    • 규칙 위반 코드가 있다면 컴파일이 되지 않도록 --strict 옵션을 적용했습니다.

      ${PODS_ROOT}/SwiftLint/swiftlint --strict --config .swiftLint.yml

      • 에러메시지 : Command PhaseScriptExecution failed with a nonzero exit code

      • 다른 워닝과 섞여서 발견하기가 어려워서 설정하게 되었습니다.

      • 규칙 위반을 수정하기 어렵다면 해당 코드는 규칙에서 제외시키면 됩니다.

  3. 커밋할 때마다 SwiftLint가 규칙 위반 코드를 자동 수정

    • git hook을 이용

    • pre-commit 파일은 git으로 버전관리되는 파일이 아니어서 각자의 로컬 저장소에 추가해주어야 합니다.

    • .git/hooks 안에 추가

    • 빌드 시간을 조금이라도 줄이기 위해 커밋 시점에 실행합니다.

    • 커밋하고 나면 자동 수정된 코드가 있는지 확인하여 추가 커밋을 합니다.

  4. PR이 올라오면 CI툴이 swiftlint를 수행하여 규칙을 위반한 경우 PR에 리뷰를 남깁니다.

적용 시점

자동 수정 및 코드 리뷰에서 수동 체크는 우선 적용하였고 빌드 시 린팅은 기존 린트 워닝과 에러가 모두 수정된 v4.6.8 부터 적용되었습니다.

CI툴이 PR에서 체크는 v5.2.0부터 적용되었습니다.