🥁 SwiftLint with SPM

2022. 2. 21. 23:44iOS/협업

vi Mintfile​
brew install mint

커밋 컨벤션에 이은

협업 시리즈 2탄이다.

왜?

먼저 swiftLint는 무엇이고, 왜 도입해야하는지를 알아보자

스위프트 스타일 및 컨벤션을 강제하기 위한 도구

그럼 이 도구를 왜 도입해야 할까?

주된 이유는 코드 컨벤션 체크를 자동화하여 보다 핵심 기능에 집중할 수 있기 때문이다.

즉, 코드 컨벤션이 있다하더라도 자기도모르게 지키지 못했을 경우가 있을 것이다. 내가 그렇다. 이번에 swiftLint를 적용하면서 400개 가량 이슈가 발생하였다. 개인 프로젝트에서 나름의 컨벤션을 정하고도 이렇게 나왔는데 팀 협업에서는 컨벤션을 강제할 필요성이 더 크다고 생각한다.

설치 방법

Homebrew 설치 -> Mint 설치

SPM환경에서 사용하려면 Mint를 설치하여야 한다.

Mint를 간편하게 설치하려면 Homebrew를 설치하여야 한다.

Homebrew

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Mint

mint를 설치하고 다른 위치에서 mint 명령어를 못찾는 이슈가 있었다. mint 설치 위치에서 mint를 실행하면 linking 해준다.

brew install mint

Mintfile 파일 생성

터미널에서 프로젝트의 루트에 Mintfile을 만들고 아래와 같이 작성한다.

vi Mintfile

realm/SwiftLint@0.44.0

sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
mint bootstrap --link

Xcode run Script 작성

project -> target -> Build Phases 탭 -> + 버튼

script 이름을 Run SwiftLint로 변경하고 위치를 Compile Sources 위에 둔다. 

shell 내용에

mint run swiftlint

규칙 파일 생성

Xcode에서 루트 위치에 새로운 파일을 생성하고 .swiftlint.yml로 이름 지어준다.

아래는 예시이다.

disabled_rules: # Default Rules에서 비활성화할 규칙
    
    # 라인 뒤에 공백이 없어야 합니다. https://realm.github.io/SwiftLint/trailing_whitespace.html
    - trailing_whitespace
    
    # 강제 캐스팅은 피해야합니다. https://realm.github.io/SwiftLint/force_cast.html
    - force_cast
    
    # 강제 언래핑은 피해야합니다. https://realm.github.io/SwiftLint/force_unwrapping.html
    - force_unwrapping

    - identifier_name
    
opt_in_rules:
    # .count==0 보다는 .isEmpty를 사용하는 것이 좋습니다. https://realm.github.io/SwiftLint/empty_count.html
    - empty_count
    
    # 빈 String 문자열과 비교하는 것 보다는 .isEmpty를 사용하는 것이 좋습니다. https://realm.github.io/SwiftLint/empty_string.html
    - empty_string
included:

excluded: # SwiftLint 검사에서 제외할 파일 경로

 - ../RangeSeekSlider-master
 - ../AppDelegate.swift
 - ../SceneDelegate.swift

    
line_length: 180

function_body_length: # function 바디 길이
 - 100
 - 200

identifier_name: # 변수명 규칙
 excluded:
   - ok
   - id
   - v
   - hf
   - sesac_image

참고)

김종권님 블로그

야곰닷넷

공식 프레젠테이션

 

여담)

SwiftLint의 기본 규칙은 raywenderlich 스타일 가이드를 따르고 있다.

이번 프로젝트의 SwifLint 적용 최종 목적은  스타일쉐어 스타일 가이드 에 적용된 규칙을 적용하면서 swiftLint 규칙을 공부해보는 것이다.

'iOS > 협업' 카테고리의 다른 글

Udemy Git 강의 2  (0) 2022.05.25
Udemy Git 강의  (0) 2022.05.24
🥁 commit 컨벤션  (0) 2022.02.18