반응형

이전 글에서 깃헙과 소나큐브의 연동을 시도했으나 현재는 보류중이다.

찾아보니 제일 많이 연동하는 방법은 깃헙-젠킨스-소나큐브 이렇게 연동하여 젠킨스 빌드 시 소나큐브 실행 :: 이런 것 같은데 잘 모르는 상태에서 섣불리 젠킨스까지 건들이고 싶지 않아서 우선은 깃헙과 직접 할 수 있는지 알고 싶었다.

사실 상상한 것은 깃헙과 연동하면 소나큐브 화면에서 프로젝트를 고르고 각 프로젝트 별로 취약점을 볼 수 있을까 였는데, 그건 그냥 상상뿐인 것 같다는 생각을 했다..(어찌보면 말도 안되는 원리닼ㅋ)

그래서 소나큐브 맛보기로 소스에서 직접 연동해보기로 한다.

 

목표: java11 / springboot2.5 / gradle 사용 중인 프로젝트에 직접 연결

 

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

 

[스프링부트] #2 소나큐브(SonarQube) 도입

소나큐브란? 소나큐브는 현재 기준으로 2…

jeeneee.dev

위 블로그를 참고하여 진행하였다.

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

 

우리 팀의 코드 품질은? 정적코드 분석도구, 소나큐브 적용기

소나큐브 소개 소나큐브는 대표적인 코드 정적분석 툴입니다. 정적 분석이란 말은, 프로그램을 실행하지 않고 코드를 살펴 문제점을 살펴준다는 뜻입니다. 소나큐브가 필요한 이유와 분석해주

velog.io

결과 json / 파싱 

https://ghostitm.tistory.com/55?category=903890 

 

[QA] #3. 소나큐브 결과 출력하기 (Json)

# 소나큐브 SonarQube 분석 결과 출력하기  앞선 포스팅과 같이 정상적으로 소나큐브 설치 및 프로젝트 분석을 수행하셨다면, 경우에 따라서 수백 수천 개의 이슈들을 확인하실 수 있습니다. 좋습

ghostitm.tistory.com

 

728x90
반응형

'서버 세팅 & 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

+ Recent posts