ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [iOS] SwiftLint 적용해보기!!
    Programing/iOS 2020. 10. 9. 15:33

    안녕하세요, 5anniversary입니다~~!!

     

    이번에 다시 새롭게 진행하는 프로젝트에서 한번 SwiftLint를 적용해보려고해요!!

     

    이번에 적용해보려고 하는 이유는 말이죠!!

     

    여태까지 진행해왔던 프로젝트에서 협업을 진행했었는데...

     

    모두 함께 정해둔 코드룰을 깜빡하고 지키지 못하는 경우가 종종 나오더라구요...

     

    그래서!! 한번 적용해보려구합니다!!

     

    이번시간에는 위에서 말한 룰을 정하고 지켜주게 도와주는 SwiftLint를 적용해보는 포스팅을 해보겠습니다!!

     

    이제 하나씩 하나씩 진행해볼까요~!~!

     

    링크 를 참고해 진행해볼거에요~!~!

     

    1. pod을 해주세요!! 

     

    pod 'SwiftLint'

     

    2. Target > build phase > + > new run script phase

     

    "${PODS_ROOT}/SwiftLint/swiftlint"

     

    3. .swiftlint.yml파일을 만들어주세요!!(파일은 루트 위치에 만들어주셔야해요!!)

     

    4. 해당 파일에 원하는 룰을 설정해주시면 됩니다!! 

     

    룰은 이 곳에서 문서 확인을 하실 수가 있습니다. 

     

    yml 파일없이 실행을 해주시면 pod파일까지 한번씩 보기때문에 엄청나게 많은 에러를 내뿜죠?? ㅠㅜ

     

    excluded: # 린트 과정에서 무시할 파일 경로. `included`보다 우선순위 높음
      - Pods
    

     

    이렇게 Pods 파일을 무시한다고 설정해주시면

    확 줄게 됩니다!!

     

    지금 남은 warning은 Delegate파일에서 났는데요!

     

    이 경우에는 App파일을 만들어 안에 따로 넣어줬습니다.

     

    이러니 에러가 사라지네요!!

     

    설정
    
    SwiftLint가 실행될 디렉토리에 .swiftlint.yml 파일을 추가해서 SwiftLint를 설정할 수 있습니다. 아래 파라미터들을 설정 가능합니다.
    
    룰 적용여부 설정:
    
    disabled_rules: 기본 활성화된 룰 중에 비활성화할 룰들을 지정합니다.
    opt_in_rules: 기본 룰이 아닌 룰들을 활성화합니다.
    whitelist_rules: 지정한 룰들만 활성화되도록 화이트리스트로 지정합니다. disabled_rules 및 opt_in_rules과는 같이 사용할 수 없습니다.
    disabled_rules: # 실행에서 제외할 룰 식별자들
      - colon
      - comma
      - control_statement
    opt_in_rules: # 일부 룰은 옵트 인 형태로 제공
      - empty_count
      - missing_docs
      # 사용 가능한 모든 룰은 swiftlint rules 명령으로 확인 가능
    included: # 린트 과정에 포함할 파일 경로. 이 항목이 존재하면 `--path`는 무시됨
      - Source
    excluded: # 린트 과정에서 무시할 파일 경로. `included`보다 우선순위 높음
      - Carthage
      - Pods
      - Source/ExcludedFolder
      - Source/ExcludedFile.swift
    
    # 설정 가능한 룰은 이 설정 파일에서 커스터마이징 가능
    # 경고나 에러 중 하나를 발생시키는 룰은 위반 수준을 설정 가능
    force_cast: warning # 암시적으로 지정
    force_try:
      severity: warning # 명시적으로 지정
    # 경고 및 에러 둘 다 존재하는 룰의 경우 값을 하나만 지정하면 암시적으로 경고 수준에 설정됨
    line_length: 110
    # 값을 나열해서 암시적으로 양쪽 다 지정할 수 있음
    type_body_length:
      - 300 # 경고
      - 400 # 에러
    # 둘 다 명시적으로 지정할 수도 있음
    file_length:
      warning: 500
      error: 1200
    # 네이밍 룰은 경고/에러에 min_length와 max_length를 각각 설정 가능
    # 제외할 이름을 설정할 수 있음
    type_name:
      min_length: 4 # 경고에만 적용됨
      max_length: # 경고와 에러 둘 다 적용
        warning: 40
        error: 50
      excluded: iPhone # 제외할 문자열 값 사용
    identifier_name:
      min_length: # min_length에서
        error: 4 # 에러만 적용
      excluded: # 제외할 문자열 목록 사용
        - id
        - URL
        - GlobalAPIKey
    reporter: "xcode" # 보고 유형 (xcode, json, csv, checkstyle, junit, html, emoji, sonarqube, markdown, github-actions-logging)
    

    기본 룰은 이렇게 설정한다고 문서에 적혀있네요!!

     

    이렇게 활용해서 처리해주면 되겠습니다!!

     

    이제 코드컨벤션에 맞는 코드를 작성해볼까요?? 😆 

    댓글

Designed by Tistory.