항해99

항해99 69일차 TIL1 - 프로젝트에 SonarQube 도입하기

자몽포도 2023. 3. 2. 02:42

JaCoCo에 이어 SonarQube를 도입해보았습니다. 제 경우 SonarQube를 위해 따로 서버를 배포하지는 않았고 로컬에서 프로젝트 개선을 위해 사용하고 있습니다. 

그래서 SonarQube 는 왜쓰나요?


소나큐브는 정적 코드 분석 도구입니다. 

 

 

위와 같이 버그 보안 취약점, 코드 커버리지, 중복 등을 자동으로 분석해줍니다. 제가 진행하는 팀 프로젝트에서는 코드 리뷰를 보완하는 용도로 사용합니다. 

 

다만, 소프트웨어가 분석을 하는 것이기 때문에 무조건적으로 수용하는게 효율적인지는 따져봐야 합니다. 예를 들면 엔티티를 순수 객체로 벗기는 과정에서 DTO 생성자에 많은 파라미터가 생기게 되는데요. 소나 큐브에서 파라미터가 7개 이상이면 코드 스멜로 판단합니다. 과연 이게 정말 코드 스멜이 맞을까요? 소나 큐브는 제안을 해줄뿐이지 판단은 개발자의 몫인 것 같습니다. 저희 팀도 처음에는 소나 큐브의 제안을 대부분 수용했지만 최근에는 과연 옳은 판단인지 따져가며 소나큐브의 제안을 받아들이고 있습니다.

 

SonarQube 로컬 환경에 적용하기


소나큐브 설치 및 인텔리제이 적용하기 링크를 첨부합니다. Maven으로 빌드를 한다면 해당 포스팅 그대로 따라가시면됩니다. Gradle로 빌드한다면 포스팅의 SonarLint 플러그인 설정까지는 동일하게 진행하셔야 합니다.

 

이후 우측 Gradle 탭에서 디렉토리를 여시고 sonarqube를 실행하시면 됩니다.

 

 

실전 프로젝트 SonarQube 분석 결과


처참한 결과... 

 

코드 커버리지에서 제외한 패키지 클래스명은 아래와 같아요.

 

조금 예전에 캡쳐해놓은 사진인데요. 현재는 커버리지를 79% 까지 올렸어요. 저희 팀의 목표인 80% 까지 단 한 걸음 남았습니다.