공부일기
JaCoCo와 SonarQube 연동하기
Youngbin Kim
2021. 8. 11. 19:10
** 소나큐브 설정이 완료된 상황이라 가정하고 진행합니다.
소나큐브가 완료됐다면 젠킨스에 소나큐브 프로젝트가 생성되어 있을 것이다.
구성 탭을 누르고 build 탭으로 간다.
Task 설정하는 부분을 다음과 같이 변경한다.
clean build sonarqube
-Dsonar.projectKey={프로젝트 이름}
-Dsonar.host.url={sonarQube 서버}
-Dsonar.login={발급받은 토큰}
-Dsonar.github.repository=${repository}
-Dsonar.github.endpoint=https://api.github.com
-Dsonar.github.pullRequest=${pr}
-Dsonar.github.disableInlineComments=true
-Dsonar.issuesReport.console.enable=true
-Dsonar.sourceEncoding=UTF-8
-Dsonar.language=java
-Dsonar.java.binaries=build/classes
빌드 성공 - 코드 커버리지 0%?
풀리퀘를 보내면 github의 webhook을 이용해 젠킨스에서 자동으로 sonarQube 리포트를 생성하게 된다. 정적 리포트는 생성했지만 코드커버리지는 계속 분석하지 못했던 원인은 빌드 순서 때문이다.
- 빌드 순서
소나큐브는 Jacoco를 통해 만들어진 xml 리포트를 바탕으로 코드 커버리지를 분석한다. 그렇기 때문에 빌드시에 만들어진 jacoco 리포트가 없다면 소나큐브를 실행해도 코드커버리지는 0%로 나오게 된다.
따라서 빌드의 순서는 다음과 같이 진행되어야 한다.
- test
- jacocoTestReport
- jacocoTestCoverageVerification
- SoanrQube
(코드 커버리지 연동 시 2번을 통해 만들어진 리포트가 필요.)
실제로 코드 커버리지 연동에 실패했던 빌드 Task순서를 보면 아래와 같다.
코드 커버리지 연동에 성공한 빌드 Tasks
sonarqube 서버에서 연동에 성공한 모습을 확인할 수 있다.