Skip to content

1. SwiftLint

gookhee edited this page Dec 9, 2021 · 1 revision

What?

코드에서 나는 냄새와 스타일 위반을 찾아 보고하도록 설계되어 있습니다.

이런 기능을 linting, 이런 도구를 linter라고 부릅니다.

컴파일러 에러 또는 워닝으로 보고합니다.

일부 문제를 자동 수정할 수 있습니다.

현재 180여개의 규칙이 포함되어 있습니다.

GitHub Repo

Guide 한국어 번역도 제공합니다.

사용하기

가이드에 있는대로 homebrew로 SwiftLint을 설치해서 실행해봤습니다.

예. YMAL파일의 설정대로 규칙을 적용

> swiftlint --config .swiftLint.yml

예. YMAL파일의 설정대로 자동 수정되는 규칙을 적용

> swiftlint autocorrect --config .swiftLint.yml

autocorrect 옵션을 추가하면 자동 수정되지 않는 규칙은 비활성화됩니다.

위반 사항들은 파일이 자동 수정된 후에 더이상 유효하지 않을 가능성이 크기 때문입니다.

그리고, Xcode에서도 규칙을 적용하기 위해, cocoaPods로 설치 후 SwiftLint를 위한 빌드 스크립트를 추가했습니다.

빌드 때마다 적용하며, 규칙을 위반한 부분에 워닝 또는 에러가 발생합니다.

.swiftLint.yml 파일이 project root에 있는 경우

#swiftlint
${PODS_ROOT}/SwiftLint/swiftlint --config .swiftLint.yml

autocorrect 옵션은 처음 프로젝트를 정리할 때 사용하고, 그 외 경우에는 자동 수정이 안되더라도 옵션을 끄고 전체 규칙에 대해 조사하게 해야할 것 같습니다.

Rules

문서

Rule Directory

규칙 별로 identifier, 자동수정여부, 기본 활성화여부, 옵션, 예제 등 규칙에 대한 정보를 제공해줍니다.

swiftlint 명령 실행할 때나 yml 파일에서 규칙을 커스터마이징할 때 사용합니다.

예. Colon

문서에 있는 규칙중에 지원하지 않는 것도 있었습니다.

예. indentation_width

> SwiftLint rules indentation_width
No rule with identifier: indentation_width

규칙 목록 및 상태

모든 규칙의 설정 상태를 볼 수 있습니다.

> SwiftLint rules

+------------------------------------------+--------+-------------+------------------------+-------------+----------+---------------+
| identifier                               | opt-in | correctable | enabled in your config | kind        | analyzer | configuration |
+------------------------------------------+--------+-------------+------------------------+-------------+----------+---------------+
| anyobject_protocol                       | yes    | yes         | no                     | lint        | no       | warning       |
| array_init                               | yes    | no          | no                     | lint        | no       | warning       |
| attributes                               | yes    | no          | no                     | style       | no       | warning, a... |
| block_based_kvo                          | no     | no          | yes                    | idiomatic   | no       | warning       |
| class_delegate_protocol                  | no     | no          | yes                    | lint        | no       | warning       |
| closing_brace                            | no     | yes         | yes                    | style       | no       | warning       |
| closure_body_length                      | yes    | no          | no                     | metrics     | no       | warning: 2... |

활성화된 규칙만 확인

> SwiftLint rules -e

rules 옵션 확인

> swiftlint help rules

규칙 커스텀 설정

yml 파일을 생성해서 project root에 추가합니다. 상세설명

Rule Directory의 스펙을 참고하여 개별 규칙의 옵션을 조정할 수 있습니다.

설정파일은 Wantedlab Swift Style Guide에 맞춰 작성했습니다.

가이드라인에 표시하는 이미지 레이블

특정 가이드라인을 지원하는 SwiftLint 규칙이 있다면 레이블을 달고, 레이블을 클릭하면 스펙으로 연결되도록 했습니다.

SwiftLint 규칙을 두 가지 색상으로 구분하고 있습니다.

linting만 해주는 규칙의 위반을 해결하려면 다른 포맷터 도구가 필요하여 구분을 해봤습니다.

  • linting만 해주는 규칙: SwiftLint: multiline_arguments
  • linting만 또는 자동 수정도 가능한 규칙: SwiftLint: closure_spacing

Clone this wiki locally