목차

티스토리 뷰

iOS/Swift

[iOS] SwiftLint 적용하기

Assum 2023. 6. 5. 17:13
728x90
반응형


 

안녕하세요 🐾

저는 쉽게 읽히고 이해할 수 있는 것을 좋아하고 추구합니다.

그래서 블로그에 글을 쓸 때마다 간결하게 나의 생각을 글로 전달한다는 것이 정말 어렵다는 것을 느끼곤 합니다 😢

 

코드도 위와 마찬가지라고 생각됩니다.

나의 코드를 동료가 쉽게 읽고 이해할 수 있게 작성하려면 어떤 노력을 해야할까요?

 

일관성 있는 코딩 스타일에 대한 규칙을 만드는 것코드 컨벤션이라 합니다.

공통된 코드 작성 규칙에 대한 개념만 알고 있다면 공통된 규칙을 지키며 작성된 코드는 비교적 더 많이 이해하기 쉬운 코드가 될 것 입니다.

오늘은 코드 컨벤션 확립에 도움을 주는 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

반응형
댓글
300x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
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
글 보관함