[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%가 넘는당
커버리지가 낮으니까 괜히 변명하게되는...
프로젝트 명을 누르거나 코드스멜, 커버리지 등을 누르면 더 자세한 정보를 볼 수 있다.
이런식으로 파일별 상세 커버리지나 문제점들도 알려준다.
끝!
참고링크.
http://dveamer.github.io/backend/SonarQubeOnDocker.html
https://jeeneee.dev/springboot/springboot-2-introduction-of-sonarqube/