Skip to content

프로젝트 SwiftLint

never-better edited this page Nov 10, 2022 · 4 revisions

목차

SwiftLint 적용을 위한 컨벤션

얼죽아 Swift 컨벤션

사용법

각자 HomeBrew로 설치한다.

업데이트 날짜

2022년 11월 10일 목요일

Lint Default Configuration

  • 타입 바디
    • 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

프로젝트 Configuration

아래 Excluded 외에는 Lint 기본 값을 사용한다.

  • Lint 적용 제외 파일
    • AppDelegate.swift
    • SceneDelegate.swift
  • identifier_name:
    • id
    • URL
  • 길이
    • 줄 길이 (line_length) : 100
    • 파일 길이 (file_length) : 700

Disabled Rules

없음

Opt in Rules

프로젝트를 위해 추가한 기능들

  • empty_count

    count == 0 대신 isEmpty 를 사용한다

  • empty_string

    String.count == 0 대신 isEmpty 를 사용한다

  • empty_xctest_method

    test 메소드 블럭 안에 아무 것도 없다면 오류. 주석만 있어도 오류남

  • file_name_no_space

    파일 이름에 공백 있으면 오류

  • file_types_order

    파일 안에서 type의 순서

    1. Supporting

    2. 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

    3. Extensions

    4. Preview Provider

    5. 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로 선언해줘야 함

프로젝트 yml 파일

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
	# TODO: Delegate 경로 지정
  - AppDelegate.swift 
  - SceneDelegate.swift

line_length: 100

file_length:
  warning: 700
  error: 700

identifier_name:
  excluded:
    - id
    - URL

출처

Clone this wiki locally