Sonarqube 분석 시도시 Unable to highlight file 문제 해결

프로젝트를 Sonarqube에 연동하여 분석하려고 할 때 다음과 같은 에러가 나오는 일이 종종 있다.

gradlew sonarqube --stacktrace

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:sonarqube'.
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
Caused by: java.lang.IllegalArgumentException: Unable to highlight file src/main/java/com/github/windsekirun/**/data/ImageArticle.kt
... 32 more
Caused by: java.lang.IllegalArgumentException: Start pointer [line=20, lineOffset=0] should be before end pointer [line=20, lineOffset=0]
... 111 more

해당 문제는 특정 파일(ImageArticle.kt) 의 특정 위치에 해독할 수 없는 문자열이 있는 것으로 파악되는데, 주로 \r\n 와 같은 File Encoding 관련 문제일 가능성이 크다.

이 때에는 IDEA 하단 UTF-8 부분을 클릭하여 UTF-16으로 강제 변환한 다음, 다시 UTF-8로 변경하면 해결되는 경우가 많다.

org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:sonarqube'.
Caused by: java.lang.IllegalArgumentException: Unable to highlight file src/main/java/com/github/windsekirun/**/data/VideoArticle.kt
... 32 more
Caused by: java.lang.IllegalArgumentException: 713 is not a valid offset for file src/main/java/com/github/windsekirun/**/data/VideoArticle.kt. Max offset is 655
... 104 more

위와 같은 로그가 나올 때도 있는데, 이 때에는 해당 파일의 인코딩이 UTF-16으로 되어있을 때로, 마찬가지로 UTF-8로 다시 변환해주면 된다.

이렇게 수정한 파일들은 실제로 코드가 변경되지 않았지만, line sperators가 변경된 것으로 나오기도 한다.