[Swift] SwiftLint 체험기

gaeng2y
5 min readNov 13, 2022

--

안녕하세요! 갱입니다. 🫡

오늘 사내 프로젝트에 드디어 Lint를 적용하게 되어서 제가 어떤 식으로 적용했는지 적어보는 포스팅을 할 예정입니다.

Lint가 무엇인지를 우선 알아보고 가죠!

Lint, Linter

위키백과에 따르면

소스 코드를 분석하여 프로그램 오류, 버그, 스타일 오류, 의심스러운 구조체에 표시(flag)를 달아놓기 위한 도구들을 가리킨다.

신규 프로젝트에 와서 코딩 컨벤션을 정해놓지 않아서 아주 코딩 스타일이 난장판인 상황이었는데

드디어?

드디어 이러한 슬랙 메세지를 보고 흥분을 감출 수 없었습니다…

그래서 우선 SwfitLint 깃허브로 당장 출발했죠!

realm에서 만든 프로젝트입니다.

그리고 우선 README를 읽으며 찬찬히 따라갔습니다.

SwiftLint 적용하기

우선 homebrew로 swiftlint를 설치하구…

이제 저희 프로젝트에 lint를 설치해야죠..?

SPM이 안되니 Cocoapods으로 설치하랩니다…

예 요로코롬 설치하고 이제 프로젝트 빌드를 돌려보면…

?!

머시당께! 아 그래요 룰을 안정했으니까 이럴 수 있습니다…

그래서 룰을 정합시다… 저희 팀에 iOS 개발자가 저 포함 2명인데 마침 적용하는 날 휴가신거에요!

그럼 내맘대로 룰을 정해야지 ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ

룰 만드는 법

프로젝트 최상위 디렉토리에서 .swiftlint.yml 을 만들어줍니다.

.swiftlint.

그리고 프로젝트에도 추가해줍니다.(사실 그냥 엑스코드에서 만들면됨…)

암튼 그러면 이제 우리는 쓸 룰과 안쓸 룰 그리고 include/exclude할 내용을 정리할 수 있습니다.

  • opt_in_rules: 프로젝트에 적용할 룰
  • disabled_rules: 사용하지 않을 룰
  • included: 포함할 파일/디렉토리
  • excluded: 제외할 파일/디렉토리(included보다 우선으로 적용됨)
  • 등등.. (룰 옵션, custom rule 등..)

을 통해 입맛대로 후두룹찹찹해주시면 됩니다.

아 그리고 하다보면 Cocoapod에 있는 라이브러리나 SPM에 있는 것들에 대한 오류도 나올텐데 그럴 땐 이런식으로 included/excluded를 작성해주시면 됩니다!

Pods는 보다시피 Cocoapod

.build / R.generated.swift: SPM

그리고 이제 저처럼 저렇게 이슈가 많은 상황이 있는데 이럴 때는 다 고치기 너무 귀찮잖아요..?

그러면 일단

이 놈을 이용해서 다 고쳐줍니다. 저희가 정의해놓은 룰대로 고쳐줄 겁니다.

물론 다 고쳐주는 건 아니고 해줄 수 있는거만 해주는데 그래도 양이 꽤 돼서 편하실거에요!

그리고 이제 나머지는 우리가 고쳐주면됩니다.

팁이 있다면 저도 재르시 깃헙에서 본건데 각 룰에 대한 설명을 주석으로 달아놓으면 다른 사람이 볼 때 좋더라구여…

뭐 암튼 이렇게 적용하시면 됩니다…

--

--