-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.swiftlint.yml
More file actions
74 lines (60 loc) · 3.88 KB
/
.swiftlint.yml
File metadata and controls
74 lines (60 loc) · 3.88 KB
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# =================================================================
# 기본 설정
# =================================================================
# Lint를 적용할 폴더 경로를 지정합니다.
included:
- Codive
# Lint에서 제외할 폴더나 파일 경로를 지정합니다. (Xcode 프로젝트 파일, 외부 라이브러리 등)
excluded:
- Codive/Resources
- Tuist
- DerivedData
- vendor # Carthage 등으로 설치된 외부 라이브러리가 위치하는 폴더
# =================================================================
# 규칙 활성화 / 비활성화
# =================================================================
# SwiftLint의 기본 활성화 규칙 중에서 사용하지 않을 규칙을 지정합니다.
disabled_rules:
- trailing_whitespace # 후행 공백: Xcode에서 자동으로 제거해주는 경우가 많아 제외합니다.
- identifier_name # 이름 규칙: 변수/함수 이름 길이나 형식 규칙이며, 좀 더 세부적인 논의가 필요할 수 있어 일단 제외합니다.
- todo # TODO 주석 필요
# 기본적으로는 비활성화되어 있지만, 유용해서 추가로 활성화할 규칙들을 지정합니다.
opt_in_rules:
# --- 코드 효율성 및 안정성 ---
- empty_count # '.count == 0' 대신 더 효율적인 '.isEmpty'를 사용하도록 권장합니다.
- force_cast # 'as!' 같은 강제 타입 캐스팅을 금지하여 런타임 크래시를 예방합니다.
- force_try # 'try!' 사용을 금지하여 런타임 크래시를 예방합니다.
- contains_over_first_not_nil # '.first(where:) != nil' 보다 가독성 좋고 효율적인 '.contains(where:)'를 사용하도록 권장합니다.
# --- 코드 스타일 및 가독성 ---
- explicit_init # 'SomeType.init()' 대신 축약형인 'SomeType()'을 사용하도록 권장합니다.
- file_header # 모든 소스 파일 상단에 일관된 형식의 주석(e.g., 생성자, 날짜)이 있는지 검사합니다.
- vertical_whitespace_closing_braces # 닫는 중괄호 '}' 바로 앞에 불필요한 빈 줄이 들어가는 것을 방지합니다.
# - vertical_whitespace_opening_braces # 여는 중괄호 '{' 바로 앞에 불필요한 빈 줄이 들어가는 것을 방지합니다.
- trailing_closure # 클로저가 함수의 마지막 인자일 때, 후행 클로저 문법을 사용하도록 강제합니다. (SwiftUI 스타일에 필수)
- empty_parentheses_with_trailing_closure # 후행 클로저를 사용할 때 불필요한 빈 괄호 '()'를 제거하여 코드를 간결하게 만듭니다.
- unneeded_parentheses_in_closure_argument # 클로저의 인자를 감싸는 불필요한 괄호를 제거합니다. (e.g., '| (number) |' -> '| number |')
- type_body_length # 타입(class, struct 등)의 본문이 너무 길어지는 것을 방지합니다. (아래에서 세부 설정)
# =================================================================
# 규칙 세부 설정
# =================================================================
# 타입(View, ViewModel 등) 내부 코드의 최대 라인 수를 설정합니다. 코드가 너무 길어지면 분리할 시점이라는 신호입니다.
type_body_length:
warning: 300
error: 400
# 한 줄의 코드 길이를 제한하여 가로 스크롤을 방지하고 가독성을 높입니다.
line_length:
warning: 200
error: 250
# 하나의 파일이 가질 수 있는 최대 라인 수를 설정합니다. SwiftUI에서는 View 당 하나의 파일을 유지하는 것이 좋습니다.
file_length:
warning: 400
error: 600
# 함수나 메서드의 논리적 복잡도를 제한합니다. 숫자가 높을수록 코드가 이해하고 테스트하기 어려워집니다.
cyclomatic_complexity:
warning: 15
error: 25
nesting:
type_level: 2 # 타입 중첩 2단계까지 허용
function_level: 3 # 함수 중첩 3단계까지 허용
vertical_whitespace:
max_empty_lines: 1