본문 바로가기

트러블슈팅

ktlint로 인한 Build Fail. ktlintMainSourceSetCheck Failed

문제

Kotlin에서 기능 개발 후, Build를 하는 데, Build Fail이 됐다.

에러 문구를 보니 ktlint 관련 Task에서 실패한듯 하다. 

에러 메세지를 보면 소스 코드에서 '{' 등을 빼먹었다고 한다.

ktlint란?

Kotlin 언어에는 공식 코딩 컨벤션이 정의되어 있다. 이를 준수할수 있도록 Gradle 빌드에서 ktlint로 코드 스타일을 검사해준다.

자세한 내용은 아래 페이지 참조.

https://blog.benelog.net/ktlint.html

 

ktlint로 Kotlin 공식 코딩 컨벤션 맞추기 - 개발수양록

ktlint는 jar 파일로 제공되고, https://jcenter.bintray.com/ 에도 배포되어 있습니다. 따라서 별도의 Gradle plugin이 없어도 Gradle에서 task를 정의해서도 쓸 수 있습니다. 그런데 ktlint의 공식 사이트에서는 Gra

blog.benelog.net

문제 원인

내가 작성한 코드가 코딩 컨벤션을 따르고 있지 않아 ktlint가 Build Fail을 낸 것이다.

문제 해결

IntelliJ에서 일일이 에러 코드 부분을 수정해야하나 싶었는데, 포맷에 맞게 알아서 변경해주는 Gradle 명령어를 ktlin에서 지원했다.

 

# 코드 스타일 검사 후 틀린 부분을 자동으로 수정합니다.
$ ./gradlew ktlintFormat


# 코드 스타일 검사
$ ./gradlew ktlintCheck

 

실제 실행하면 아래와 같이 나온다.

ktlintFormat 명령어에서 자동으로 고쳐지지 않는 부분은, 에러 문구로 콘솔에 나오고 직접 코드를 수정해주면 된다.