Replies: 1 comment
-
후후.. 덕분에 MC2떄 배워서 잘 쓰고 있어요! |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
안녕하세요 3기 이오입니다.
👉 id? Id? ID? - 팀원.. 아니 나를 위한 약속 "Code Convention"
이전에 함께 개발하기 위해 필요한 약속, Code Convention에 대해 이야기했습니다.
통일되고 일관된 스타일로 작성한 코드는
여러 개발자들, 그리고 미래의 내가 이해하기 쉬워집니다.
그러나 단순히 말로 '이렇게 하자~' 라고 규칙을 정했다고 생각해 볼까요?
그렇다면 코드 리뷰를 하면서 코드의 본질적인 문제보다
단순히 코드가 쓰여진 형식만 눈에 보일지도 모릅니다.
😶: "import는 알파벳순으로 해주세요"
물론 규칙을 지키는 것은 중요합니다!
하지만 Code Convention은 더 본질적인 문제 해결에 집중하고,
더 나은 코드를 고민하기 위해 존재합니다.
규칙을 지키는 것만 이야기한다면 규칙을 정한 의미가 사라지겠죠?
그렇다면 어떻게 Code Convention을 더 편하게 지킬 수 있을까요?
규칙을 지키기 위한 도구들 🛠️
Swift 코드를 작성하면서 팀에서 정한 규칙에 맞게 작성할 수 있도록
도와주는 다양한 도구들이 있습니다.
대표적으로
SwiftLint
,SwiftFormat
이 있습니다.SwiftLint
👉 SwiftLint는 작성한 코드가 규칙에 맞지 않을 경우
경고 또는 오류를 띄워 알려줍니다.
코드 스타일 검사와,
강제 언래핑(
!
) 사용과 같이 주의가 필요한 코드에 대해 경고를 표시합니다.또한, 팀에서 정의한 규칙이 잘 지켜지고 있는지 확인할 수 있습니다.
SwiftFormat
👉 SwiftFormat은 SwiftLint와 달리,
규칙에 맞지 않는 코드를 자동으로 수정해 줍니다.
들여쓰기나 공백, 괄호 위치 등을 자동으로 포맷팅해주고,
정해진 규칙에 맞게 코드 스타일을 적용할 수 있습니다.
오늘은 SwiftLint를 사용해 Code Convention을 지키는 방법을 소개하려고 합니다.
Macro 팀 프로젝트에 SwiftLint를 적용한 경험을 공유해보겠습니다.
SwiftLint 설치 방법 🚀
Xcode에서 사용하기 위해 SwiftLint를 설치하고 프로젝트에 적용하는 과정은 간단합니다!
1. SwiftLint를 설치합니다
저는 Homebrew를 사용해 설치했고, 설치 방법은 공식 문서에 자세히 알려주고 있습니다.
👉 SwiftLint Installation
👉 SwiftLint Installation 한국어 번역
2. 새로운 Script를 추가합니다
2-1. 프로젝트의 타겟 앱을 선택 후 "Build Phase" 탭으로 이동합니다.
2-2. Script를 추가합니다.
2-3. Script 순서를 설정합니다.
Script를 실행하는 순서를 정해주어야 합니다.
빠르게 코드 스타일 문제를 확인하고,
컴파일러 단계로 넘어가기 전에 수정할 수 있기 때문에,
컴파일이 진행되기 전에 실행하는 것이 효율적이라는 의견이 많습니다.
하지만 컴파일 전에 실행하면
컴파일러가 해결할 수 있는 구문 오류를 린트 경고로 인식할 수 있고,
일부 경고나 오류가 잘못 표시될 가능성이 있다고 합니다.
컴파일 전 단계에서 SwiftLint를 실행해도 대부분의 상황에서 충분히 효율적입니다.
저는 빠른 코드 스타일 피드백을 위해 컴파일 전 단계에 두었습니다.
팀의 필요에 따라 스크립트 실행 순서를 정하면 좋을 것 같습니다.
3.
.swiftlint.yml
파일을 추가합니다3-1. SwiftLint가 실행될 디렉터리에 빈 파일을 생성합니다.
(이 과정은 Xcode에서 추가하는 방법입니다!)
새로운 파일을 'Empty'로 생성합니다.
3-2. 파일 이름을
.swiftlint.yml
로 합니다.파일 명 앞에 있는
.
으로 인해 숨김 파일 안내 창이 뜹니다.Use "." 을 선택하고 파일을 생성합니다.
3-3. 끝!
생성된 파일에 린트 규칙을 설정할 수 있습니다.
아래에서 규칙과 관련된 이야기를 한 번 더 언급하겠습니다!
4.
User Script Sandboxing
옵션을 No로 설정Xcode에서
User Script Sandboxing
은빌드 과정 중에 실행되는 사용자가 정의한 스크립트가
제한된 샌드박스 환경에서 실행되도록 하는 옵션입니다.
기본적으로 Yes로 설정되어 있어
SwiftLint가 원활하게 프로젝트 파일들에 접근해
코드 분석을 할 수 있도록 No로 설정해 주어야 합니다.
User Script Sandboxing
를 No로 설정하면 보안적인 측면에서 제약이 완화되기 때문에실행하는 스크립트를 신뢰할 수 있는 경우에만 사용하도록 해야 합니다!
5. 끝! 🎉
기본적으로 설정되어 있는 규칙을 어겨서 SwiftLint가 잘 작동하는지 확인해 봅시다!
vertical 공백이 한 줄이어야 한다는 규칙을 어겼고,
경고가 잘 뜨고 있습니다.
SwiftLint 설정 성공!!
.swiftlint.yml 규칙 설정 ⚙️
.swiftlint.yml 파일이란?
SwiftLint를 활용하면 팀이 정한 규칙을 지킬 수 있다고 이야기 했었는데요!
앞에서 생성한 .swiftlint.yml 파일에 동작 규칙을 작성해
팀에서 정의한 Code Convention에 맞게 검사하도록 설정할 수 있습니다.
SwiftLint가 기본적으로 활성화한 규칙과 비활성화한 규칙을 참고해
우리만의 규칙을 만들어 갈 수 있습니다.
.swiftlint.yml 에는
disabled_rules
: 기본 활성화된 규칙 중에 비활성화할 규칙들을 지정opt_in_rules
: 비활성화된 규칙 중에 규칙들을 활성화합니다.included
: 린트 과정에 포함할 파일 경로excluded
: 린트 과정에서 무시할 파일 경로와 같은 것들이 있습니다.
악동쿠키들이 정한 규칙
SwiftLint 규칙들은 👉 여기서 확인할 수 있습니다.
저는 .swiftlint.yml 파일에 규칙을 작성할 때,
어떤 내용인지 함께 작성해 한번에 알아보기 쉽게 합니다.
그리고 팀 내에서 개발을 시작하기 전에 정해둔 규칙에서
개발을 진행하면서 불편하거나 필요한 규칙들을 추가하며 사용하고 있습니다.
아래는 악동쿠키들이 정한 규칙입니다!
동일한 내용의 코드입니다.
코드에서 규칙을 비활성화하기
함께 지키기 위한 규칙을 정했더라도
특정 코드는 그 규칙을 지키지 못하는 경우가 생길 수 있습니다!
그럴 땐 아래 형식의 주석을 사용해 규칙을 비활성화할 수 있습니다.
예를 들어 변수를 선언할 때 변수명 뒤에 타입을 명시해 주기 위해 작성하는 콜론은
변수명과 콜론 사이에 공백이 없어야 한다는 규칙이
기본적으로 활성화되어 있습니다.
그래서 일부 코드를 비활성화 하고 싶다면, 아래와 같이 작성하면 됩니다!
끝!
이번에는 Code Convention을 잘 지키기 위한
SwiftLint
에 대한 이야기를 했습니다.함께 정한 규칙의 의미를 잊지 않고, 약속을 지키기 위해 노력하는 것이 중요한 것 같습니다!
약속을 지키기 위해 노력하는 방법으로 제가 사용하는 방법을 공유해보았습니다.
여러분의 개발 협업 과정에도 작은 도움이 되었기를 바랍니다! 🐧🐧
감사합니다!!
Beta Was this translation helpful? Give feedback.
All reactions