Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 애니메이션
- 리팩토링
- Human interface guide
- collectionview
- UICollectionView
- clean architecture
- uitableview
- Observable
- 리펙터링
- rxswift
- ios
- SWIFT
- 리펙토링
- RxCocoa
- HIG
- 클린 코드
- 스위프트
- swift documentation
- Clean Code
- swiftUI
- ribs
- tableView
- Refactoring
- combine
- uiscrollview
- map
- MVVM
- Protocol
- UITextView
- Xcode
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] SwiftLint 적용 방법 본문
SwiftLint
- cocopads 설치: pod 'SwiftLint'
Xcode에 SwfitLint 적용 설정
- Targets > build phase > new run script phase
- run script 입력하면 완료
${PODS_ROOT}/SwiftLint/swiftlint
- 적용이 되었는지 확인 > 경고 메세지가 생긴것을 확인
- 경고 메세지 or 컴파일 오류의 Rule: https://realm.github.io/SwiftLint/rule-directory.html
swiftlint 커스텀
- empty 파일로 최상위 경로에 생성
- Rule 정의
- disabled_rules: 디폴트로 활성화되어있는 규칙 중 비활성화할 규칙을 정하는 키워드
- opt_in_rules: 기본 규칙이 아닌 규칙들을 활성화
- whitelist_rules: 지정한 규칙들만 활성화 되도록 화이트리스트로 등록 (disalbed_rules, opt_in_rules은 같이 사용 불가)
excluded: # 린트 과정에서 무시할 파일 경로. `included`보다 우선순위 높음
- Pods
- SignUp/AppDelegate.swift
- SignUp/SceneDelegate.swift
- 일반적으로 사용되는 rules를 적용한 예제
# Git URL : https://github.com/realm/SwiftLint
# Reference : https://realm.github.io/SwiftLint/index.html
excluded:
- Pods
analyzer_rules:
- unused_declaration
- unused_import
opt_in_rules:
- anyobject_protocol
- array_init
- attributes
- closure_end_indentation
- closure_spacing
- collection_alignment
- contains_over_first_not_nil
- empty_string
- empty_xctest_method
- explicit_init
- extension_access_modifier
- fallthrough
- fatal_error_message
- file_header
- first_where
- identical_operands
- joined_default_parameter
- let_var_whitespace
- last_where
- literal_expression_end_indentation
- lower_acl_than_parent
- nimble_operator
- operator_usage_whitespace
- overridden_super_call
- override_in_extension
- pattern_matching_keywords
- private_action
- private_outlet
- prohibited_interface_builder
- prohibited_super_call
- quick_discouraged_call
- quick_discouraged_focused_test
- quick_discouraged_pending_test
- redundant_nil_coalescing
- single_test_class
- sorted_first_last
- static_operator
- unavailable_function
- unneeded_parentheses_in_closure_argument
- untyped_error_in_catch
- vertical_parameter_alignment_on_call
- xct_specific_matcher
- yoda_condition
disabled_rules:
# 추가한 rules
- todo
- orphaned_doc_comment
- empty_xctest_method
- redundant_type_annotation
- number_separator
- empty_count
#---------------------------
- object_literal
- file_name
- trailing_whitespace
- sorted_imports
- file_header
- vertical_whitespace_opening_braces
- vertical_whitespace_closing_braces
# Customized Configurable Rules
line_length: 140
force_cast: error
nesting:
type_level:
warning: 3
statement_level:
warning: 5
identifier_name:
excluded:
- id
# number_separator:
# minimum_length: 5
# file_name:
# excluded:
# - main.swift
# - LinuxMain.swift
# - TestHelpers.swift
# - shim.swift
# - AutomaticRuleTests.generated.swift
# Defining Custom Rules
custom_rules:
rule_id:
included: Source/SwiftLintFramework/Rules/.+/\w+\.swift
name: Rule ID
message: Rule IDs must be all lowercase, snake case and not end with `rule`
regex: identifier:\s*("\w+_rule"|"\S*[^a-z_]\S*")
severity: error
rule_test_function:
included: Tests/SwiftLintFrameworkTests/RulesTests.swift
name: Rule Test Function
message: Rule Test Function mustn't end with `rule`
regex: func\s*test\w+(r|R)ule\(\)
severity: error
* 주의- cocoapods에 경고 메시지 해제 방법
# podfile
source 'https://cdn.cocoapods.org/'
platform :ios, '13.0' # cocoapods 프레임워크들이 13.0 버전에 맞추도록 설정 (경고 메시지 해제)
inhibit_all_warnings! # cocoapods의 swiftlint 경고 메시지 해제
* 참고
- https://realm.github.io/SwiftLint/rule-directory.html
- https://yagom.net/forums/topic/swift-lint-%EC%8D%A8%EB%B3%B4%EA%B8%B0/
'iOS 응용 (swift)' 카테고리의 다른 글
Comments