Sonarqube는 20개 이상의 프로그래밍 언어에서 버그, 코드 스멜, 보안 취약점을 발견할 목적으로 정적 코드 분석으로 자동 리뷰를 수행하기 위한 지속적인 코드 품질 검사용 오픈 소스 플랫폼이다. Sonarqube는 중복 코드, 코딩 표준, 유닛 테스트, 코드 커버리지, 코드 복잡도, 주석, 버그 및 보안 취약점의 보고서를 제공한다.
출처 : wikipedia
개발자가 모든 버그나 코드 스멜 그리고 보안 취약점을 생각하면서 코딩하기에는 거의 불가능하다. 이런 문제점을 해결하기위해 SonarSource 사가 개발한 Sonarqube 툴을 사용한다. 여기서는 Sonarqube를 설치하고 Jenkins와 연동까지 해본다.
최종적으로 Git Push -> Jenkins -> Sonarqube -> Build -> Tomcat 배포까지 자동화된다.
시작하기에 앞서 Sonarqubd 8.9.2 버전기준으로 Java 11 이상만 지원한다!
https://www.sonarqube.org/downloads/
무료 버전인 Community Edition으로 다운로드!
Windows 10 기준으로 다운받은 압축파일을 풀어서 Windows PowerShell을 관리자 권한으로 실행한 뒤 압축 파일의 bin\windwos-x86-64 위치로 이동한다.
목록의 배치파일(.bat)중에 StartSonar.bat 파일을 실행하고 마지막에 SonarQube is up이 뜨면 정상적으로 실행된 것이다.
Sonarqube의 관리자 화면은 localhost:9000이나 127.0.0.1:9000으로 접속하면 된다. 초기 화면의 username, password는 둘다 admin이다.
로그인하면 다음과 같은 홈화면이 뜬다.
Sonarqube
Administration -> Security -> Users -> Tokens 버튼을 눌러서 Token을 생성한다.
Generate Tokens 입력창안에 Token명을 입력한뒤 Generate 버튼을 눌러 생성된 Token을 따로 복사하여 저장해둔다.
Projects -> Add a project 버튼을 눌러 새로운 Sonarqube 프로젝트를 생성한다.
Manually 선택
Project Key 및 Display Name 입력
Jenkins 관리 -> Plugin Manager에서 SonarQube Scanner 플러그인 설치
Jenkins 관리 -> Global Tool Configuration에서 SonarQube Scanner 추가
Jenkins 관리 -> System Configuration에서 SonarQube servers 설정
Jenkins Item -> 구성 -> Pre Steps에서 Execute SonarQube Scanner 추가
Analysis properties 설정
1) sonar.login : Sonarqube 관리자 화면에서 생성한 Token 입력
2) sonar.projectKey, sonar.projectName : 생성한 Sonarqube project Key입력
설정 저장 후 Item의 Build Now를 클릭해보자!
빌드 후 Sonarqube 관리자 화면에서 등록한 프로젝트로 이동하면 다음과 같은 결과가 표시된다.