2021. 10. 2. 15:25ㆍApple Framework, Library
나다 릴리즈를 준비하면서, 현규 선배의 도움으로 SwiftLint라는 것을 처음 접해보았다.
SwiftLint란 코딩 컨벤션을 자동으로 확인해주는 도구이다.
프로젝트에 SwiftLint를 적용시켜 코딩을 하면, 협업을 진행하더라도 모든 개발자가 일관된 코드를 작성할 수 있게 도와주게 된다.
*어떤 규칙을 안지키면 Warning이 발생하고, 어떤 규칙을 안지키면 Error가 발생해 빌드 자체를 막는 형태로 컨벤션을 지키도록 도와준다
물론 스스로 공부를 할 때, 일관된 코딩 컨벤션을 사용할 때도 마찬가지이다.
예전에 코딩 컨벤션에 대해 다룬 글도 있으니, 궁금하면 읽고 오자.
[iOS] 내가 보려고 정리하는 Coding Convention (feat. Style Share)
개발자로서 협업을 하게 되면, 같은 팀원들끼리 필수로 정해야 하는 규칙들이 있다. 개발을 할 때 지켜야 하는 Coding Convention, 깃을 사용하는 방법인 Git branch 전략, 모두가 알아볼 수 있도록 기록
mini-min-dev.tistory.com
CocoaPods (Podfile)로 Lint를 적용하는 방법
1. podfile에 pod 'SwiftLint'를 추가한 후, pod install을 해주기
GitHub - realm/SwiftLint: A tool to enforce Swift style and conventions.
A tool to enforce Swift style and conventions. Contribute to realm/SwiftLint development by creating an account on GitHub.
github.com
2. TARGETS -> Build Phases -> +버튼 -> New Run Script Phase 클릭
3. Run Script에 ${PODS_ROOT}/SwiftLint/swiftlint 코드 추가
여기까지 완료하면, 정상적으로 SwiftLint가 잘 적용된다.
하지만, 여기서 끝나면 엄청난 Warning과 Error의 늪에 빠진 내 프로젝트를 확인할 수 있다.
이거를 언제 다 해결해주나....
SPM (Swift Package Manager)로 Lint를 적용하는 방법 (with HomeBrew)
1. 터미널에 brew install swiftlint를 입력해서 SwiftLint를 설치해보기
2. TARGETS -> Build Phases -> +버튼 -> New Run Script Phase 클릭 (Podfile 방식과 동일. 사진은 생략합니다!)
3. Run Script에 아래 코드를 추가해줍니다.
if [ -x /opt/homebrew/bin/swiftlint ]; then
/opt/homebrew/bin/swiftlint
else
echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi
Optional 4. 만약 이대로 빌드를 했는데, error: Sandbox: bash(82460) deny(1) file-read-data가 발생했다면?
TARGETS -> Build Settings -> Build Options -> User Script Sandboxing을 NO로 설정해주면 문제를 해결할 수 있습니다.
☑️ 예외처리 규칙, 파일 지정하기
프로젝트 아래 .swiftlint 라는 파일을 생성해주면,
이 파일에서 제외할 규칙과, SwiftLint를 적용하지 않을 파일을 설정해줄 수 있다!
보이는 것처럼 프로젝트 바로 아래에 Empty -> .swiftlint.yml 라는 이름의 파일을 하나 만들어주자.
그러면 아래와 같이이 작성을 해서 자유롭게 설정을 해주면 된다!
- disabled_rules : SwiftLint에 있는 규칙 중 프로젝트에서 포함시키지 않을 컨벤션을 지정한다.
- included : 기존 규칙에 적용 안되고 있던 파일을 컨벤션 적용하고 싶을 때 사용
- exclided : 기존 규칙에 영향 받던 파일을 컨벤션과 무관하게 적용하고 싶을 때 사용
추가로, Lint의 규칙은 아래의 문서에서 찾아보면 된다.
제외하고 싶은 규칙의 identifier값을 disabled_rules 밑에 "-" 뒤에 써서 추가해주자. (예시 - line_length (코드 라인 길이와 관련된 컨벤션))
Rule Directory Reference
realm.github.io
+ Swiftlint를 적용해주면서 발생하는 에러 내용과 해결법은 아래 링크에서 잘 정리해두고 있다.
SwiftLint를 적용하면서 수정한 것들🙀
🐥입사 전에는 프로젝트를 할 때, 항상 SwiftLint를 적용하며 개발했었다. 입사 후, 회사 프로젝트에서는 린트가 적용되어 있지 않았고, 그 필요성을 느껴 린트 적용을 제안했다. 작성되어 있던 코
pilvi.tistory.com
'Apple Framework, Library' 카테고리의 다른 글
[Social Login] Access Token과 Refresh Token, 그리고 Auto Login까지 (6) | 2022.01.05 |
---|---|
[Social Login] 소셜 로그인을 구현해보자! 2탄 - Apple 로그인 (0) | 2021.12.27 |
[Library] Alamofire의 단점을 보완한 네트워킹 라이브러리, Moya (0) | 2021.12.17 |
[Library] AutoLayout을 짧은 코드로 구현하려면, SnapKit (1) | 2021.11.16 |
[Social Login] 소셜 로그인을 구현해보자! 1탄 - 카카오톡 로그인 (0) | 2021.09.22 |