본문 바로가기

iOS

[SwiftLint] 적용해보자 (feat. cocoapods)

 

안녕하세요~!! 오늘은 간단한 프로젝트에 SwiftLInt를 적용시켜보려고 합니다.

 

SwiftLint를 만나게 된 계기는,, 그냥 알게되었어요. 많이들 코드형식을 맞출 때 쓴다고해서 저도 3명이서 협업을 하다보니 써보기로 했는데  지금 많이 귀찮을 거 같은 느낌이네요.

SwiftLint가 만능은 아닌지라 conding convention을 서로 정하고 코드를 짜야 한명이 짠 거 같이 보일 수 있을 거 같아요...)

사용방법은 Github에 들어가서 realm/SwiftLint을 들어가보면 자세히 쓰여있습니다!! 참고하시면 좋을 것 같아요 ㅎㅎ

 

일단 적용시키기 전에 제 코드가 제 프로젝트가 어떤 상태인지 살펴보겠습니다.

진행중인 프로젝트를 실행시켜 보면 아래와 같이 clean하게 경고나 에러없이 정상적으로 작동하는 것을 알 수 있어요!

 

그럼 한번 적용시켜볼까요?

적용방식은 순서대로 진행해 볼게요~~

1. SwiftLint 설치

모두가 코코아팟 설치 방식을 안다는 가정하에 skip하도록 하겠습니다~

 

2. file navigator의 상단에 위치한 Project Click -> Target -> Build Phases 클릭 -> "+" 클릭 -> "New Run Script Phase" 클릭 -> 아래 코드 삽입하기

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

아래와 같이 나옵니다 ㅎㅎ

 

그럼 이제 빌드를 눌러보죠!

 

두둥!!! 999개보다 많은 경고문과 61개의 에러............

너무 많네요 ㅠㅠㅠ

 

어떤 경고문이 있나 살펴볼까요?

 

한 줄을 뛰어 주니까 에러가 없애달라고 경고해주네요.

 

이건 {}를 한 칸 띄어달라고 하구요 ㅎㅎ

 

코드를 몇 글자 작성할지도 경고해줍니다...!!!

 

lowCamelCase가 아닐 경우에도 이런 식으로 에러가 발생하고

 

와 심지어 Kingfisher안에 있는 코드들까지 에러가 뜨네요 ㅋㅋㅋ 

정말 이걸 언제 다 고칠까요 ㅠㅠ 

 

이 모든 것을 자동으로 고쳐줄 수 있는 방법이 있습니다!! 

아까 작성했던 Script문으로 돌아간 후, autocorrect만 추가해줍시다! (다른 방법도 있긴한데 새로운 플러그인을 설치해야해서 더 간단한 방법을 보여드릴게요)

다시 빌드를 했더니!

오류가 하나!!! 

Alamofire에서 나는 오류네요 ㅎㅎ 아놔!! 

SwiftLint에서 autocorrect를 지원해주는 것이 있고 지원해주지 않는 것들이 있답니다 ㅎㅎ 

 

3. 규칙 만들어주기

이 경고문들과 에러들을 개발자가 직접 관리해줄 수 있다면 정말 편리하겠죠...?!?!?! 네 당연히 가능합니다!!!

이 "규칙"을 직접 정해봅시다!! 이것도 github에 자세히 써져있어요 

이름 그대로 .swiftlint.yml 파일을 생성해줘야해요!!!!

".swiftlint" 이름의 empty파일을 Project파일에 추가해주면, 아래와 같은 경고문이 나오는데 

이건 앞에 "."이 있어서 숨겨진 파일을 생성하는건데 괜찮냐? 라고 물어보는 겁니다~ 괜찮으니 Use"."을 눌러주세요 ㅎㅎ

요기서 전 처음에 터미널을 이용해서 만들어주었는데.. 이랬더니 Xcode에서는 나타나지 않더라구요 ㅠㅠ 

이미 있는 파일이라고 하면 Replace를 눌러서 다시 생성해주고, 아니면 파인더에서 숨긴 파일을 보게 만들어 프로젝트에 끌어넣어주세요!

 

넵! 잘 생성되었네요!!

 

이제는 내부 코드를 살펴볼건데 위 캡처해서 가져온 사진에서 Configuration의 Rules들을 작성해줄게요!

기본적으로 제공해주는 규칙 코드가 있는데 그건 깃헙에 가서 확인해보시구 저는 위의 저 에러를 없애보려고 합니다~

 

그래도 몇가지 설명하자면,

disabled_rule는 default로 적용되는 규칙들 중에서 해제하고 싶은 규칙들이이고

opt_in_rules는 default로 적용된 규칙말고 다른 규칙들, 커스텀 규칙(직접 만든 규칙)들이고,

only_rules는 이 규칙들만 적용시키겠다!는 겁니당

또한, included, excluded가 있는데 

included는 swiftlint를 적용시킬 path를 적는 곳이고, excluded는 무시할 path를 적는 곳입니다!

 

저는 autocorrect가 적용되기 이전의 것들을 한번 고쳐볼게요!

일단 Cocoapod의 다른 라이브러리들을 무시해주기 위해서 아래와 같이 적었습니다!

그랬더니

경고문 122개만 남았어요!

이제 경고문을 읽어보았는데 한 줄 코드에 글자수가 120개이상을 넘어가면 경고발생.. 그리고 콤마에 관련된 2가지 경고문들을 없애주겠습니다.

 

SwiftLintFramework Documents에 들어가보면 알 수 있으니 꼭!! 들어가서 확인해보세요!!.

 

두가지를 찾았으니 추가해볼게요!

 

넵! 이제 빌드를 해보면 짠!!!

 

처음 상태처럼 경고문이나 에러없이 잘 작동되네요~~~~~🎉🎉🎉

 

 

이제 저는 저만의 규칙을 만들어 보러 가보겠습니당 ㅎㅎ

이 글을 읽으시고 SwiftLint를 적용시킬 때 도움이 되었으면 좋겠어요~!! 🤗🤗🤗

적용시킬 때 이슈가 발생하면 댓글 달아주세요 ㅎㅎ