Sonarqube를 연동했는데 분석 결과가 비정상적으로 나와요

겔로그·2023년 9월 16일
0

회사 업무간 Pull Request에 sonarqube가 비정상적으로 돈다는 소식을 듣고 sonarqube 관련 설정을 확인해보면서 sonarqube를 정상적으로 적용한 이야기를 잠시 공유해보고자 합니다.

그전에 잠깐 sonarqube가 무엇인지 알아보는 시간을 가져보겠습니다.

Sonarqube란?

sonarqube는 정적 코드 분석 도구로서 Pull Request와 Branch에 대한 코드를 분석해줍니다. Pull Request를 올릴 경우 sonarqube와 연동하면 아래와 같은 분석 결과를 공유해줍니다.

이를 통해 새로 적용될 코드의 버그, 취약점을 분석해주고 작성한 테스트 코드가 전체 코드를 얼마나 검증하는지 Coverage값 또한 공유해줍니다.

New Code에서는 현재 추가된 코드의 몇 % 를 커버하는 테스트 코드를 작성했는지 비율을 통해 확인하실 수 있습니다. Overall Code의 경우, merge된 이후 base branch의 통계를 제공한다고 이해하시면 될 것 같습니다.

그럼 이제 무엇이 문제였는지 확인해볼까요?

문제 1. PR에 sonarqube report가 안올라와요.

sonarqube report를 PR과 연동하기 위해서는 아래 경로에 들어가 설정을 해주셔야 합니다.

Project Settings -> General Settings -> Pull Request Decoration

다음 사진에서 Configuration name에 들어가 github 및 프로젝트 repository 경로를 설정해 주실 경우 연동되는 것을 확인하실 수 있습니다.

문제 2. lombok이 Coverage에 포함되요..

lombok은 개발자의 편의를 위해 제공되는 annotation library 입니다. 편의성을 위해 사용되는 라이브러리가 coverage에 포함대상이 되니 전체 코드 중 커버하고 있는 테스트 코드 비율을 정상적으로 파악하기가 어려웠습니다.

lombok-Configuration system을 확인해보시면 다음과 같은 문구가 있습니다.

따라서 정확한 coverage 측정을 위해 아래 내용을 추가해야 합니다.

lombok.addLombokGeneratedAnnotation = true

lombok.config 파일을 생성해 프로젝트의 루트 컨텍스트(보통 pom.xml, build.gradle이 위치한 경로)에 위치시키면 해당 설정을 확인하여 code coverage에 lombok이 반영되지 않는 것을 확인하실 수 있습니다.

결론

적용 전

적용 후

코드가 많아질수록 lombok 또한 많이 사용되기 때문에 최대한 커버리지에 포함되면 안되는 파일/로직들은 제외시키는 방향으로 설정을 추가해주시길 바랍니다.

감사합니다.

profile
Gelog 나쁜 것만 드려요~

0개의 댓글