공부일기

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%로 나오게 된다.

 

따라서 빌드의 순서는 다음과 같이 진행되어야 한다.

  1. test
  2. jacocoTestReport
  3. jacocoTestCoverageVerification
  4. SoanrQube
    (코드 커버리지 연동 시 2번을 통해 만들어진 리포트가 필요.)

 

 

실제로 코드 커버리지 연동에 실패했던 빌드 Task순서를 보면 아래와 같다.

 

코드 커버리지 연동에 성공한 빌드 Tasks

 

 

sonarqube 서버에서 연동에 성공한 모습을 확인할 수 있다.