이전 글에서 깃헙과 소나큐브의 연동을 시도했으나 현재는 보류중이다.
찾아보니 제일 많이 연동하는 방법은 깃헙-젠킨스-소나큐브 이렇게 연동하여 젠킨스 빌드 시 소나큐브 실행 :: 이런 것 같은데 잘 모르는 상태에서 섣불리 젠킨스까지 건들이고 싶지 않아서 우선은 깃헙과 직접 할 수 있는지 알고 싶었다.
사실 상상한 것은 깃헙과 연동하면 소나큐브 화면에서 프로젝트를 고르고 각 프로젝트 별로 취약점을 볼 수 있을까 였는데, 그건 그냥 상상뿐인 것 같다는 생각을 했다..(어찌보면 말도 안되는 원리닼ㅋ)
그래서 소나큐브 맛보기로 소스에서 직접 연동해보기로 한다.
목표: java11 / springboot2.5 / gradle 사용 중인 프로젝트에 직접 연결
https://jeeneee.dev/springboot/springboot-2-introduction-of-sonarqube/
위 블로그를 참고하여 진행하였다.
1. 소나큐브에 로그인 엑세스 토큰을 받고
2. 아래와 같이 build.gradle 파일을 수정한다(수정한 부분만 작성).
plugins {
...
id 'org.sonarqube' version '3.3'
id 'jacoco'
}
...
dependencies {
...
implementation 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.3'
}
test {
...
finalizedBy 'jacocoTestReport'
}
...
jacoco {
toolVersion = "0.8.7"
}
jacocoTestReport {
reports {
xml.enabled true // sonarqube 분석에 필요한 xml파일만 생성
csv.enabled false
html.enabled false
}
}
sonarqube {
properties {
property "sonar.host.url", "http://localhost:9999"
property "sonar.login", "{login token}"
property "sonar.sources", "src"
property "sonar.language", "java"
property "sonar.sourceEncoding", "UTF-8"
property "sonar.profile", "Sonar way" // 소나큐브에서 적용할 프로필(분석할 수준 설정)
property "sonar.java.binaries", "${buildDir}/classes" // 자바 클래스 파일위치
property "sonar.test.inclusions", "**/test/**" // 코드 분석에 사용할 테스트 소스
property "sonar.exclusions", "**/resources/**, **/Q*.class, **/test/**" //테스트커버리지에서 제외할 파일, 예제에선 정적 js 파일과 queryDSL Q파일 제외
property "sonar.coverage.jacoco.xmlReportPaths", "${buildDir}/reports/jacoco/test/jacocoTestReport.xml" // jacoco 플러그인의 결과파일
}
}
3. 위와 같이 수정하고 gradle sonarqube 실행하니 빌드가 진행된다.
빌드 완료되었다는 문구를 보고 소나큐브 화면을 리프래시 해본다.
아까는 나오지 않은 프로젝트가 뜬다. 클릭하면 상세 설명이 나온다.
4. 인텔리제이 플러그인만 써도 이 정도는 어찌저찌 볼 수 있을 것 같은데, 굳이 서버를 깔아서 보는 것의 장점이라면 (편한 ui와 더불어) 바로 히스토리 관리가 아닐까 싶다.
위에서 나온 버그 2건을 수정하고 빌드(4:26), sysout을 더 찍고 빌드(4:47)의 과정을 거쳤다.
이렇게 빌드마다 버그의 갯수를 그래프로 보여주어 흐름을 한눈에 알 수 있다.
참고
github 연결
https://velog.io/@sihyung92/how-to-apply-sonarqube
결과 json / 파싱
https://ghostitm.tistory.com/55?category=903890
'서버 세팅 & tool > sonarqube' 카테고리의 다른 글
[sonarqube] integration with jenkins (0) | 2022.01.10 |
---|---|
[sonarqube] integration with github -2 (0) | 2022.01.07 |
[sonarqube] integration with github -1 (0) | 2022.01.06 |
[vm] sonarqube 설치 (0) | 2022.01.05 |