회사에서 프로젝트를 진행하면서 단위테스트를 하다가 정적분석도구를 연결해서 코드품질을 좀 개선하고자 sonarqube를 연결해보기로 했다.
간단하게 도커 container로 띄우고 거기에 연결해보았다.
일단 내 vm ware에
docker run -d --name sonarqube \
-p 9999:9000 \
sonarqube:community
9999 포트를 열어줘야해서
firewall-cmd --permanent --add-port=9999/tcp
firewall-cmd --reload
이렇게 하면

접속을 할 수 있다.
기본으로 주어지는 id랑 비밀번호 입력해서 접속하면 된다.
이제 인텔리제이에서 sonarqube 플러그인을 설치해서 연결하면 되는데
settings - plugins에서 sonarqube를 검색하면

Sonarqube for ide 플러그인이 뜨는데 저걸 다운받아서 설치하면 된다.
인텔리제이 restart를 하면
좌측 sidebar에 소나큐브 탭이 생긴 것을 확인할 수 있다.

첫 번째를 클릭하면 소나큐브에서 분석한 결과레포트가 뜨는 곳이 나온다. 지금은 소나큐브를 연결해서 저렇게 나오는데
연결전에는 아무것도 안뜬다.
그러고 두 번째 버튼을 누르면

소나큐브 세팅 화면이 뜬다.
저기서 Configure the connection 버튼을 누르면

연결된 소나큐브 정보와 더 추가할 수 있는 창이 나온다.
저기서 + 버튼을 누르면

새로 추가할 소나큐브 주소를 입력할 수 있는 창이 뜬다.
여기에 소나큐브를 구분할 수 있는 이름과 소나큐브 주소를 입력하고 next를 클릭하면

이러한 창이 뜨는데 여기서 create token을 누르면

컨테이너로 띄운 소나큐브랑 인텔리제이랑 연결해서 token을 생성하는 작업이 이루어진다.

next를 누른다.

create를 누르면 연결이 완료됐다.

이제 분석을 하고싶은 파일에 가서 저 실행 버튼을 눌러주거나 파일을 이동하면 자동으로 분석을 진행해주고
왼쪽에는 수정해야하는 리스트가 나오고
리스트 하나하나를 클릭해보면 어떻게 수정해야하는지도 나온다-.
Amazon Q review 기능이랑 비슷하긴한데
소나큐브는 아무래도 룰 기반이니까.. 이게 조금 더 확실한 것 같고 나중에 CI/CD랑 같이 엮을 때도 확장가능하니까 조금 더 잘 쓰일 것 같다.
프로젝트가 자바 8버전이라 소나큐브 최신 container와 호완이 안돼서 이미지 버전을 내려서 다시 설치해줬다..(7.9 버전)
우선 소나큐브에 접속해준다.

여기에 오른쪽 상단 + 버튼을 누르면 create new project가 나온다.
새로운 프로젝트의 분석을 원하면 클릭해서 새 프로젝트를 만들어줘야한다.

고유한 project Key 이름과 Display name을 입력한다.
단, 프로젝트가 maven일 때는 groupId:artifactId 값과 동일해야 한다고 되어있다.
set up을 누른다.

연결할 token을 생성해 주거나 기존에 있는 token을 사용해주면 된다. 일단 새로 생성해주면

토큰이 생성되고 이건 따로 저장해둔다.
continue를 클릭하면

gradle이나 maven에서 소나큐브를 연결할 수 있는 플러그인과 커맨드라인을 제공한다.
나는 gradle에 작성해주었다.
plugins {
.
.
.
id "org.sonarqube" version "2.7"
}
.
.
.
sonarqube {
properties {
property("sonar.projectKey", "XtormGW")
property("sonar.host.url", "http://192.168.19.156:9999")
property("sonar.login", "2169b4d8b761c7ae20fface21013fe8d9dae3afc")
}
}
gradle을 실행하면
./gradlew clean build -x test sonar

소나큐브 사이트에
코드 분석을 확인할 수 있다.