목차
티스토리 뷰
안녕하세요 🐾
저는 쉽게 읽히고 이해할 수 있는 것을 좋아하고 추구합니다.
그래서 블로그에 글을 쓸 때마다 간결하게 나의 생각을 글로 전달한다는 것이 정말 어렵다는 것을 느끼곤 합니다 😢
코드도 위와 마찬가지라고 생각됩니다.
나의 코드를 동료가 쉽게 읽고 이해할 수 있게 작성하려면 어떤 노력을 해야할까요?
일관성 있는 코딩 스타일에 대한 규칙을 만드는 것을 코드 컨벤션이라 합니다.
공통된 코드 작성 규칙에 대한 개념만 알고 있다면 공통된 규칙을 지키며 작성된 코드는 비교적 더 많이 이해하기 쉬운 코드가 될 것 입니다.
오늘은 코드 컨벤션 확립에 도움을 주는 SwiftLint를 소개합니다.
무작정 SwiftLint를 적용한다고해서 코드 컨벤션이 확립되는 것은 아니지만,
SwiftLint는 코드 켄벤션 확립에 앞서 읽기 좋은 코드를 쓰기 위한 노력의 과정 중 하나라고 생각됩니다.
그럼 알아볼까유
1. 설치
CocoaPods을 이용하여 설치하였습니다.
podfile에 아래의 행을 추가한 후 pod install
진행
pod 'SwiftLint'
2. 설정
2.1 프로젝트 설정
프로젝트 설정 - Build Phases - + - New Run Script을 누른 뒤,
SwiftLint에 대한 Run Script를 하나 추가하여 아래의 코드를 추가합니다.
저는 추가 된 스크립트의 이름을 SwiftLint로 수정하였습니다.
"${PODS_ROOT}/SwiftLint/swiftlint"
SwiftLint를 통한 코드 규칙에 대한 검사는 컴파일을 진행하기 전에 이루어져야 합니다.
SwiftLint 스크립트 항목을 상위로 드래그 하여 위치시켜주세요.
2.2 .yml 파일 생성
다음으로 규칙을 작성할 파일을 만들어야 합니다.
프로젝트를 누르고 우클릭하여 새 파일을 추가합니다.
empty를 선택 후 파일 이름은 .swiftlint.yml
로 만들어주세요.
이후 숨김 파일에 대한 안내 팝업에 나오면 Use "."
을 선택하여 생성을 진행합니다.
3. 코드 작성 규칙
이제 코드 작성 규칙을 적어줄 차례입니다.
.swiftlint.yml
의 예시는 아래와 같이 만들어보았습니다.
included: # 린트 과정에 포함할 파일 경로.
excluded: # 린트 과정에서 무시할 파일 경로. `included`보다 우선순위 높음
- Pods
disabled_rules: # 실행에서 제외할 룰 식별자들
- force_cast
- force_try
- identifier_name
- type_name
- type_body_length
- function_body_length
- shorthand_operator
- cyclomatic_complexity
- function_parameter_count
- large_tuple
- vertical_whitespace
- trailing_whitespace
- unused_capture_list
- empty_enum_arguments
line_length: # 코드 길이 제한
warning: 200
error: 500
ignores_comments: true
ignores_urls: true
file_length: # 코드 라인수 제한
warning: 600
error: 1500
todo: # TODO, FIXME 미해결 확인
included: ".*.swift"
match_kinds: comment
severity: warning
opt_in_rules: # 옵트 인 룰
- indentation_width
- empty_count
- empty_string
작성된 규칙을 간단히 살펴볼까요?
included
는 기본적으로 프로젝트 경로를 바라보고 있기 때문에 다른 경로를 따로 추가하지는 않았습니다.
excluded
는 사용하고 있는 Pods 프레임워크들에도 SwiftLint 룰이 적용되기 때문에 이를 사용하지않기 위해 명시하였습니다.
다음으로 검사시 적용하지 않을 룰은 disable_rules
에 나열하고 있습니다.
링크의 사이트를 열어보면 코드 작성 에 대한 문서를 보실 수 있습니다.
disable_rules
에 아무것도 추가해주지 않는다면,
이 문서에 나열된 Default Rules에 대한 항목이 적용된 상태입니다.
line_length
,file_length
와 같이 적용된 룰 중 커스텀이 필요한 부분은 따로 명시합니다.
그리고 마지막으로 opt_in_rules
가 보이시나요?
옵트인 룰은 Default Rules에서 제공하는 룰 외에 다른 룰이 정의되어 있습니다.
이를 사용하시려면 링크의 문서 중 Opt-in Rules에 나열된 룰을 참고하신 뒤 사용할 룰을 따로 추가하여 사용하면 됩니다!
4. 실행 결과
빌드를 진행해보면 코드 작성 규칙에 위반되는 항목을 아래와 같이 알려줍니다.
룰 위반 항목에 대한 심각성을 warning으로 할 지, error로 할지도 .swiftlint.yml에서 커스텀 가능합니다!
간략하게 SwiftLint에 대해 알아보았습니다.
혹시나 틀린점이 있다면 알려주세요. 감사합니다 :)
5. 레퍼런스
- https://github.com/realm/SwiftLint
- https://github.com/realm/SwiftLint/blob/main/.swiftlint.yml
'iOS > Swift' 카테고리의 다른 글
[iOS] 카카오톡 로그인 SDK 연동하기 (0) | 2023.06.21 |
---|---|
[iOS] Code Snippet(코드 스니펫), 코드 즐겨찾기 (0) | 2023.06.14 |
[iOS] Moya 적용하기 (0) | 2023.06.01 |
[iOS] 커스텀 뷰 만들기 (0) | 2023.05.25 |
[iOS] 커스텀 프레임워크(라이브러리) 소스코드 숨기기 (0) | 2023.05.23 |
- Total
- Today
- Yesterday
- iOS Nimble
- ios google signin
- iOS Unit Tes
- Quick
- iOS 단위테스트
- XCTest
- swift google sdk
- swift 구글 sdk
- swift framework
- ios 구글 로그인 sdk
- nimble
- Framework
- swift quick
- XCFramework
- swift nimble
- swift google login sdk
- Firebase Distribution
- iOS Framework
- swift xctest
- swift reactorkit
- iOS 테스트 코드
- swift google login
- ios google
- iOS Quick
- ios mvvm
- ios xcframework
- swift google signin
- swift 구글 로그인
- ios reactorkit
- iOS 유닛테스트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |