개발/기타

[SonarQube] 로컬 환경에 소나큐브 적용하기 (with Docker)

뚜키 💻 2022. 11. 29. 02:39
반응형

[SonarQube] 로컬 환경에 소나큐브 적용하기 (도커)

 

- 개인기록용

 

* 환경

- M1 MacBook

- sonarqube 9.4.0 (docker)

- IntelliJ 2022.2.3

- Docker v4.13.1

- springboot 2.7.4

- gradle..

 

 

1. 도커를 이용해 소나큐브를 설치한다.

docker run -d -p 9000:9000 mwizner/sonarqube:9.4.0-community

(8.7.1버전을 받았다가 9.4.0버전으로 다시받았는데 캡쳐는 8.7.1로 됐넹..)

 

2. http://localhost:9000/ 접속

초기 비밀번호 admin/admin

 

3. 유저 생성

Administration > Security > Users

- Admin 계정을 사용하는건 안좋으니까 인텔리제이에서 소나큐브에 붙을 계정을 따로 만들어준다

 

3-1. Create User

- 새로 만들 계정 정보 입력

 

3-2. Token 생성

<- Tokens에 있는 이녀석을 누르면 토큰을 만들 수 있는 창이 뜬다

토큰을 만들 문자를 입력하고 Generate

 

3-3. Token

그럼 이렇게 토큰이 만들어지는데 인텔리제이에서 소나큐브에 붙을때 사용해야하므로 복사해놓자

 

4. Project 만들기

Administration > Projects

- 소나큐브에 분석을 위해 매핑될 프로젝트를 생성한다

 

4-1. Create Project

- 이름이랑 키는 마음대로..

name은 cherrylog [프로젝트이름]

Key는 sonar:cherrylog [sonar:프로젝트이름]

이렇게 지정했다.

(프로젝트들이 많아서 다 이 네이밍을 따라 추가해줌..)

 

5. build.gradle에 아래 내용 추가

plugin - sonarqube, jacoco 추가

- jacoco란? Java 코드 커버리지를 파악해주는 라이브러리

 

sonarqube 정보 입력

- url : 도커로 띄운 소나큐브 주소 (난 기본포트인 9000포트를 사용했다)

- login : 3-3에서 만든 토큰 값

- projectKey : 4-1에서 만든 프로젝트의 Key

- projectName : 4-1에서 만든 프로젝트의 Name

plugins {
...
    id 'org.sonarqube' version '3.4.0.2513'
    id 'jacoco'
}

sonarqube {
    properties {
        property "sonar.host.url", "http://localhost:9000"
        property "sonar.login", "05f3649d6f3375e8bfc28cec79b2c2b03e0f98de"
        property "sonar.projectKey", "sonar:cherrylog"
        property "sonar.projectName", "cherrylog"
    }
}

jacocoTestReport {
    reports {
        xml.enabled true
    }
}

 

6. 실행

Gradle 탭 > Tasks > verification

인텔리제이의 Gradle 탭을 누르면 여러 프로젝트별로 여러 Task가 나온다

 

이 중에 test > jacocoTestCoverageVerification > jacocoTestReport > sonarqube 순으로 실행하면 된다.

(이걸 다 실행 안해도 될것같은데... 단위테스트를 돌렸다가 소나큐브 실행하니까 거기만 분석되길래 나는 그냥 전체 다 실행한다...)

 

 

7. 확인

- 실행 후 다시 소나큐브 주소로 들어가보면 프로젝트에 분석결과가 나타난 것을 확인할 수 있다.

 

참고로 이건 테스트용으로 만든 프로젝트라 저렇다 ㅠ 실제 프로젝트들은 다 90%가 넘는당

커버리지가 낮으니까 괜히 변명하게되는... 

 

프로젝트 명을 누르거나 코드스멜, 커버리지 등을 누르면 더 자세한 정보를 볼 수 있다.

 

이런식으로 파일별 상세 커버리지나 문제점들도 알려준다.

 

끝!

 

 

 

참고링크.

https://www.sonarqube.org/

http://dveamer.github.io/backend/SonarQubeOnDocker.html

https://voice.michaelwahl.org/sonarqube-analysis-with-community-edition-in-a-docker-container-on-mac-m1-caeabe80cd12

https://jeeneee.dev/springboot/springboot-2-introduction-of-sonarqube/

https://techblog.woowahan.com/2661/

반응형