-
Notifications
You must be signed in to change notification settings - Fork 0
1. SwiftLint
코드에서 나는 냄새와 스타일 위반을 찾아 보고하도록 설계되어 있습니다.
이런 기능을 linting, 이런 도구를 linter라고 부릅니다.
컴파일러 에러 또는 워닝으로 보고합니다.
일부 문제를 자동 수정할 수 있습니다.
현재 180여개의 규칙이 포함되어 있습니다.
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 옵션은 처음 프로젝트를 정리할 때 사용하고, 그 외 경우에는 자동 수정이 안되더라도 옵션을 끄고 전체 규칙에 대해 조사하게 해야할 것 같습니다.
규칙 별로 identifier, 자동수정여부, 기본 활성화여부, 옵션, 예제 등 규칙에 대한 정보를 제공해줍니다.
swiftlint 명령 실행할 때나 yml 파일에서 규칙을 커스터마이징할 때 사용합니다.
예. Colon
문서에 있는 규칙중에 지원하지 않는 것도 있었습니다.
> 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만 해주는 규칙의 위반을 해결하려면 다른 포맷터 도구가 필요하여 구분을 해봤습니다.