[SonarQube] 설치 방법 및 기본 사용법

궁금하면 500원·2025년 4월 18일

데브옵스

목록 보기
33/37

SonarQube 설치 및 사용 방법

소프트웨어 개발에서 코드 품질은 프로젝트 성공의 핵심 요소입니다.
이번 포스팅에서는 Docker를 활용해 코드 품질 분석 도구인 SonarQube를 설치하고 기본적인 사용법을 알아보겠습니다.

SonarQube란?

SonarQube는 코드 품질을 분석해주는 강력한 오픈소스 도구입니다.
마치 의사가 엑스레이로 몸 상태를 확인하듯, SonarQube는 코드를 분석하여 다음과 같은 문제점을 발견해줍니다.

  • 버그: 실행 중 문제를 일으킬 수 있는 코드
  • 취약점: 보안 위험이 있는 코드
  • 코드 스멜: 기술적으로 문제는 없지만 유지보수를 어렵게 만드는 코드 패턴

Docker를 사용하는 이유

Docker를 사용하면 SonarQube와 같은 도구를 훨씬 쉽게 설치하고 관리할 수 있습니다.
Docker는 소프트웨어를 컨테이너라는 독립된 환경에 패키징하여, 어떤 시스템에서든 일관되게 실행할 수 있게 해줍니다.
이를 통해 설치 과정의 복잡성을 크게 줄일 수 있습니다.

로컬 환경에 설치하기 (Docker 사용)

Docker를 사용하여 SonarQube를 로컬 환경에 쉽게 설치할 수 있습니다.

1. Docker Compose 파일을 사용하여 SonarQube 설치

2. 설치 후 localhost:9000으로 SonarQube 포털 접속

3. 초기 로그인 정보: 사용자명 admin, 비밀번호 admin

4. 첫 로그인 시 비밀번호 변경 필요

이 파일에서 정의한 내용은 다음과 같습니다.

  • 두 개의 서비스: SonarQube와 PostgreSQL 데이터베이스
  • 포트 매핑: SonarQube 웹 인터페이스를 위한 9000번 포트 설정
  • 환경 변수: 데이터베이스 접속 정보 및 기타 설정
  • 볼륨: 데이터 저장을 위한 공간 정의

5. 컨테이너 실행하기

터미널이나 명령 프롬프트를 열고, Docker Compose 파일이 있는
디렉토리로 이동한 후 다음 명령어를 실행합니다.

docker-compose up

이 명령어는 다음과 같은 작업을 수행합니다.

  • Docker Hub에서 필요한 이미지(SonarQube, PostgreSQL) 다운로드
  • 컨테이너 생성 및 시작
  • 서비스 간 연결 설정

참고: 처음 실행할 경우 이미지 다운로드 및 설정에 약 10~15분 정도 소요될 수 있습니다.

Spring Boot 애플리케이션 통합하기

Maven을 사용하는 경우, pom.xml 파일에 다음 설정을 추가합니다

<properties>
    <sonar.host.url>http://localhost:9000</sonar.host.url>
    <sonar.login>생성한_토큰</sonar.login>
    <sonar.projectKey>프로젝트_키</sonar.projectKey>
</properties>

그런 다음 다음 명령을 실행하여 SonarQube 분석을 수행합니다.

mvn clean install sonar:sonar
./gradlew sonar `
  -Dsonar.projectKey=소나큐브에서 생성한 프로젝트명 `
  -Dsonar.host.url=http://localhost:9000 `
  -Dsonar.login=해당코드의 토큰

대시보드 둘러보기

로그인 후 SonarQube 대시보드에 접속하면 다음과 같은 정보를 확인할 수 있습니다.

  • 버그: 실행 시 문제를 일으킬 수 있는 코드
  • 취약점: 보안상 약점이 있는 코드
  • 코드 스멜: 개선이 필요한 코드 패턴
  • 테스트 커버리지: 코드가 테스트로 얼마나 커버되는지 비율
  • 중복 코드: 반복되는 코드 패턴

코드 분석 예시

간단한 Spring Boot 애플리케이션을 만들어 SonarQube로 분석해 보겠습니다.
예를 들어, 다음과 같은 간단한 API를 만들었다고 가정해 본다면.

@RestController
public class HelloController {
    @GetMapping("/hello")
    public String hello() {
        return null;  // 의도적으로 null 반환
    }
}

이 코드를 SonarQube로 분석하면 다음과 같은 결과를 볼 수 있습니다:

  • 코드 스멜: API가 null을 반환하고 있어 잠재적인 문제가 될 수 있음
  • 테스트 관련 경고: 테스트 케이스에 assertion이 없거나 테스트 자체가 없음

SonarQube는 이런 잠재적 문제들을 찾아내어 개발자가 코드를 개선할 수 있도록 도와줍니다.

분석 결과 확인하기

분석이 완료되면 SonarQube 웹 인터페이스에서 프로젝트 대시보드로 이동하여 다음과 같은 상세 분석 결과를 확인할 수 있습니다.

  • 발견된 버그
  • 보안 취약점
  • 코드 스멜 (개선이 필요한 코드 패턴)
  • 코드 커버리지 메트릭
  • 코드 복잡도 지표

SonarQube와 CI/CD 통합

Jenkins, GitLab CI 또는 GitHub Actions와 같은 CI/CD 파이프라인에 SonarQube를 통합하면 코드가 커밋될 때마다 자동으로 품질 검사를 수행할 수 있습니다.
이를 통해 팀은 항상 최신 코드 품질 상태를 파악하고 문제를 신속하게 해결할 수 있습니다.

마치며

코드 품질 분석은 프로젝트의 안정성과 유지보수성을 높이는 중요한 과정입니다.
Docker와 SonarQube를 활용하면 간편하게 코드 품질 분석 환경을 구축하고,
지속적으로 코드 품질을 모니터링할 수 있습니다.
다음 포스팅에서는 더 심화된 내용을 다루도록 하겠습니다.

profile
에러가 나도 괜찮아 — 그건 내가 배우고 있다는 증거야.

0개의 댓글