728x90
사이드 프로젝트 진행 중에 SonarQube를 사용해보고 싶어, 사용법을 정리해보고자 한다.
SonarQube 정의
SonarQube는 소스코드의 품질과 보안을 자동으로 분석하고 측정해주는 정적 분석 도구이다.
도입 배경
이번 프로젝트에서는 코드의 일관성과 유지보수성을 확보하고, 배포 전 품질 이슈를 사전에 방지하기 위해 SonarQube를 도입했다. 특히 서비스 특성상 보안이 중요한 만큼, 개발 초기 단계부터 보안 취약점을 식별하고 대응할 수 있도록 정적 분석 도구를 통해 품질과 보안을 동시에 관리하고자 한다.
SonarQube 설치 / 세팅
1. SonarQube 설치 (직접 다운로드)
https://www.sonarsource.com/products/sonarqube/downloads/
Download SonarQube
Get the latest version of SonarQube, the leading product for code quality and security, from the official download page.
www.sonarsource.com
1-2. 설치 후 압축 파일 풀기
1. 설치된 파일 경로 이동
cd sonarqube-25.6.0.109173/bin
2. 컴퓨터 환경에 맞는 폴더로 이동 (나는 Mac 환경에서 진행)
cd macosx-universal-64
3. 실행
./sonar.sh start
2.SonarQube 설치 (Docker)
SonarQube가 생각보다 디스크 차지 용량이 크기 때문에 docker로 다운받아도 된다.
- docker-compose.yml 작성
version: "3"
services:
sonarqube:
image: sonarqube:latest # SonarQube Docker 이미지
ports:
- "9000:9000" # SonarQube 웹 인터페이스 포트
environment:
# 외부 PostgreSQL 데이터베이스 설정
- SONAR_JDBC_URL=jdbc:postgresql://db:5432/sonar
- SONAR_JDBC_USERNAME=이름
- SONAR_JDBC_PASSWORD=비밀번호
volumes:
- sonarqube_data:/opt/sonarqube/data # SonarQube 데이터 볼륨 (분석 결과, 설정)
- sonarqube_extensions:/opt/sonarqube/extensions # SonarQube 플러그인
- sonarqube_logs:/opt/sonarqube/logs # SonarQube 로그
depends_on:
- db # db 서비스가 먼저 시작되도록 의존성 설정
networks:
- sonarnet
db:
image: postgres:15 # PostgreSQL Docker 이미지
environment:
- POSTGRES_USER=이름
- POSTGRES_PASSWORD=비밀번호
- POSTGRES_DB=db 이름
volumes:
- postgres_data:/var/lib/postgresql/data # PostgreSQL 데이터 볼륨
networks:
- sonarnet
volumes:
sonarqube_data:
sonarqube_extensions:
sonarqube_logs:
postgres_data:
networks:
sonarnet:
2. 명령어 실행
docker-compose up -d
3. SonarQube 접속
- localhost:9000 접속
- 초기 아이디 / 비밀번호 : admin / admin
- 이후 비밀번호 변경 페이지가 나오면서, 비밀번호 변경해주면 끝
4. 프로젝트 세팅
- 홈 화면 아래 Create a local project 클릭
- name, key 등록
3. 기본 설정 유지
4. 위 과정이 끝나면 아래 Locally 클릭
5. 프로젝트 키 생성
6. 프로젝트 설정에 맞는 빌드 방식 선택 (나는 Gradle에서 진행) 후 복사
5. 프로젝트 빌드
- 프로젝트의 build.gradle 파일에 plugins 추가
2. 위에서 복사한 실행 명렁어 입력 (프로젝트 파일이 위치한 곳에서 실행)
3. 완료
'클라우드' 카테고리의 다른 글
[CLOUD] CIDR 이란? (0) | 2025.06.03 |
---|---|
[CLOUD] AWS ECS + Fargate 이해 (0) | 2025.05.24 |
[CLOUD] 3-Tier Architecture Server 배포 - ECS + Fargate (4) | 2025.05.24 |
[CLOUD] AWS EC2 PostgreSQL 설치 (1) | 2025.05.22 |
[CLOUD] S3 CloudFront - AccessDenied (1) | 2025.05.10 |