애플사이다의 iOS 개발 일지

[SwiftLint] SPM으로 SwiftLint 설치 - Homebrew 필요 (SPM으로 못함) 본문

비전공자용 노력/개발 툴

[SwiftLint] SPM으로 SwiftLint 설치 - Homebrew 필요 (SPM으로 못함)

Applecider 2022. 8. 16. 01:05

SwiftLint란?

SwiftLint는 라이브러리이다.

이걸 설치하면 Xcode에서 코딩 컨벤션 관련 오류를 알아서 잡아내는 맞춤법 검사기 기능을 한다.

SwiftLint 설치 방법은?

SwiftLint를 설치하는 방법은 크게 CocoaPods를 사용할 건지, 사용하지 않을 건지로 나뉜다.

개인적으로 나는 최근 CocoaPods보다 SPM (Swift Package Manager)을 더 활발하게 사용하고 있다.

별도로 pod install을 할 필요가 없고, 코드리뷰를 할 때 리뷰어도 추가 작업 없이 코드를 확인할 수 있다는 장점이 너무 크기 때문이다.

*그래도 CocoaPods으로 설치하고 싶다면 Zeddios님 링크를 참고

 

두 방법 모두 설치과정은 SwiftLint 공식문서에 다 나와있으므로 이걸 참조하는 게 가장 좋다.

 

하지만 나는 헤맸으므로.. 그 과정을 기록해본다.

먼저 아래 과정이 필요하다


1. brew 설치

Homebrew 설치방법은 이 링크를 참고

2. brew를 통해 SwiftLint 설치

이 링크는 번역본이라 조금 쉽다. 여기에 나온 대로 터미널에서 아래 코드만 넣으면 된다.

brew install swiftlint

3. Xcode 프로젝트에 적용

바로 될 줄 알았지만 Xcode가 SwiftLint를 찾지 못하는 문제가 발생한다.

많은 사람들이 겪은 문제라서 해답이 있다. 이 작업만 하면 끝난다.

https://github.com/realm/SwiftLint/issues/3734


Targets > 프로젝트 폴더 > 상단의 Build Phases > + 버튼 > New Run Script Phase > Run Script에 아래 코드를 복붙하면 된다.
brew path에 위치한 SwiftLint를 찾아가도록 하는 명령어이다.

Target의 Build Phases에서 Run Script를 추가해야 한다
+ 버튼을 클릭하고 New Run Script Phase를 클릭하면 "Run Script"가 생긴다

if test -d "/opt/homebrew/bin/"; then
  PATH="/opt/homebrew/bin/:${PATH}"
fi

export PATH

if which swiftlint >/dev/null; then
  swiftlint
else
  echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi

4. .swiftlint.yml 파일 생성

맞춤법을 검사할 때 적용할 규칙을 정하는 파일이다.

새 파일 > iOS > Other 항목의 Empty 파일을 선택하고 파일명을 .swiftlint.yml 로 입력한다.

주의 - Documentation 항목의 Empty 파일을 하면 안 된다.

 

그럼 아래처럼 경고창이 뜨는데, Use "."을 클릭하면 된다.

5. 정상 작동하는지 확인

위 과정을 마치면 컴파일러가 경고 메시지를 우수수 띄우는 것을 확인할 수 있다.

아래 컴파일러가 경고 메시지를 띄운 건 의미 없는 줄바꿈을 2번 이상했기 때문이다.

SwiftLint가 코드 컨벤션 규칙을 위반했다고 알려준다

*이 규칙을 적용하고 싶지 않으면?
.swiftlint.yml 파일에 경고 메시지 맨 뒤에 표시된 vertical_whitespace를 넣으면 된다.

6. 규칙 추가/제거

내가 주로 사용하는 커스텀 룰을 적어봤다.

아까 만든 .swiftlint.yml 파일에 작성하면 된다.

나머지 규칙은 검색하면 다양하게 나온다.

disabled_rules:  // 아래 룰은 검사 대상에서 제외하겠다는 뜻
- trailing_whitespace
- xctfail_message
- function_parameter_count
- legacy_constructor
- force_cast
- trailing_comma
- force_try
- identifier_name

type_body_length: 250  // 타입/함수/파일 등의 코드길이 제한을 변경하겠다는 뜻
line_length: 120
function_body_length: 50
file_length: 500

 

- Reference

  • GitHub > SwiftLint
  • Swift.org > SPM
  • 기타 링크는 본문 참고

 

🍎 포스트가 도움이 되었다면, 공감🤍 / 구독🍹 / 공유🔗 / 댓글✏️ 로 응원해주세요. 감사합니다.

Comments