-
Notifications
You must be signed in to change notification settings - Fork 4
프로젝트 SwiftLint
2022년 11월 10일 목요일
각자 HomeBrew로 설치한다.
파일 보기
export PATH="$PATH:/opt/homebrew/bin"
if which swiftlint > /dev/null; then
swiftlint --fix --config ".swiftlint.auto.yml" && swiftlint
else
echo "warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint"
fi
파일 보기
disabled_rules:
opt_in_rules:
- empty_count
- empty_string
- empty_xctest_method
- file_name_no_space
- file_types_order
- force_unwrapping
- multiline_arguments
- multiline_function_chains
- multiline_parameters_brackets
- unused_import
- sorted_imports
- vertical_parameter_alignment_on_call
- vertical_whitespace_closing_braces
- weak_delegate
excluded:
- Pods
- AppDelegate.swift
- SceneDelegate.swift
line_length: 100
file_length:
warning: 700
error: 700
identifier_name:
excluded:
- id
- URL
자동으로 수정되어야 하는 옵션의 경우 아래 파일에 추가한다.
파일 보기
whitelist_rules:
- leading_whitespace
- trailing_whitespace
- vertical_whitespace
- vertical_whitespace_closing_braces
- trailing_newline
아래와 같이 주석을 추가하면 lint 대상에서 제외된다.
단, 예외사항에 대해서 설명할 수 있어야 한다.
// swiftlint:disable:next force_unwrapping
let url = URL(string: urlString)!
- 타입 바디
- warning: 250, error: 350
- 파일 길이
- warning: 400, error: 1000
- 함수 길이
- warning: 50, error: 100
- 타입(클래스, 구조체, 익스텐션) 이름
- min - warning:3, error:0
- max - warning:40, error:1000
- 프로퍼티 (=identifier) 이름
- min - warning:3, error:2
- max - warning:40, error:60
- 예외: id, URL, url
아래 Excluded 외에는 Lint 기본 값을 사용한다.
- Lint 적용 제외 파일
- AppDelegate.swift
- SceneDelegate.swift
- identifier_name:
- id
- URL
- 길이
- 줄 길이 (line_length) : 100
- 파일 길이 (file_length) : 700
없음
프로젝트를 위해 추가한 기능들
-
empty_count
count == 0 대신 isEmpty 를 사용한다
-
empty_string
String.count == 0 대신 isEmpty 를 사용한다
-
empty_xctest_method
test 메소드 블럭 안에 아무 것도 없다면 오류. 주석만 있어도 오류남
-
file_name_no_space
파일 이름에 공백 있으면 오류
-
file_types_order
파일 안에서 type의 순서
-
Supporting
-
Main
2.1 Type Aliases
2.2 Subtypes
2.3 Stored Type Properties
2.4 Stored Instance Properties
2.5 Computed Instance Properties
2.6 IBOutlet
2.7 Initializers
2.8 Type Methods
2.9 Life-Cycle Methods
2.10 IBActions
2.11 Other Methods
2.12 Subscripts
-
Extensions
-
Preview Provider
-
Library Content Provider
-
-
force_unwrapping
강제 언래핑 금지
-
multiline_arguments
함수 인자는 한 줄에 다 있거나 같은 라인 선 상에 있어야 한다.
-
multiline_function_chains
메소드를 체이닝한 함수는 한 줄에 다 있거나 같은 라인 선상에 있어야 한다.
-
multiline_parameters_brackets
여러 개의 인자를 가지는 함수의 Brackets은 줄바꿈을 해야한다.
-
unused_import
안 사용하는 import 감지
-
sorted_imports
모듈 임포트를 알파벳 순으로 정렬. 내장 프레임워크를 먼저 임포트하고, 빈 줄로 구분하여 서드파티 프레임워크를 임포트합니다.
-
vertical_parameter_alignment_on_call
함수에 인자가 여러 개인 경우 수직 라인을 맞춰야 한다.
-
vertical_whitespace_closing_braces
braces
}
,)
앞에 공백 줄 불가 -
weak_delegate
delegate 사용시 weak로 선언해줘야 함