본문 바로가기
Today I Learned/Dev

[SonarQube] SonarQube란 무엇일까

by dbs_ 2025. 1. 10.

 

 

최근 보안 취약점 패치를 많이 진행하면서 자연스럽게 효율성, 가독성, 유용성등과 같은 코드 품질에 대해 고민하게 되었다. 그러다 코드를 스캔해 문제점을 바로 찾아주는 소나큐브(SonarQube)를 사용해 보게 됐다. 유명한 도구라 다들 한 번쯤은 들어봤을 법한데, 이 소나큐브를 기반으로 만든 플러그인이 바로 소나린트(SonarLint)다.

일단 한두 번 설치해서 테스트해 보는 중인데, 사용해 보면서 관련 내용을 정리해 블로그에 남기면 좋겠다는 생각이 들었다. 단순히 쓰는 것과 제대로 알고 쓰는 건 확실히 다르니까.

SonarQube란 무엇일까

소나큐브는 코드 품질을 자동으로 분석하고 관리해 주는 도구이다. 개발자가 작성한 코드를 스캔해서 문제점(버그, 보안 취약점, 비효율적인 코드)을 찾아내고, 이를 해결할 수 있도록 가이드라인을 제공한다. 쉽게 말해, 코드의 건강 상태를 체크하는 도구다. 

 

주요 특징

1. 자동 코드 분석
코드를 직접 실행하지 않아도 보안 취약점, 비효율적인 코드 패턴 등  문제가 될 수 있는 부분을 찾아준다.

2. 다양한 언어 지원
Java, Python, JavaScript, C#, Go 등 20개 이상의 프로그래밍 언어를 지원한다.

3. 지속적인 품질 관리
코드가 변경될 때마다 자동으로 분석해서 품질을 유지할 수 있다. CI/CD 파이프라인(Jenkins, GitLab 등)과도 쉽게 연동된다.

4. 시각적 대시보드
품질 관련 데이터를 한눈에 보여주어 어떤 문제가 어디에 있는지 바로 알 수 있다.

5. 품질 기준 설정 (Quality Gate)
기준을 정해놓고, 이 기준을 충족하지 못하면 배포가 진행되지 않도록 막을 수 있다.

 

분석 항목

1. 버그 (Bugs) : 실행 중에 문제가 될 수 있는 코드.
예) NullPointerException 발생 가능 코드.

2. 보안 취약점 (Vulnerabilities) : 외부 공격에 노출될 위험이 있는 코드.
예) SQL Injection, XSS 등.

3. 코드 스멜 (Code Smells) : 읽기 어렵거나 비효율적인 코드.
예) 너무 복잡한 메서드, 중복 코드.

4. 테스트 커버리지 (Coverage) : 테스트 코드가 실제 코드를 얼마나 검증했는지 비율로 보여준다.

5. 중복 코드 (Duplications) : 같은 코드가 여러 곳에 반복되는 경우를 찾아준다.

 

왜 사용해야 할까?

1. 품질 유지 - 팀원이 작성한 코드가 일정한 품질 기준을 충족하도록 관리 가능.

2. 문제 조기 발견 - 코드 작성 단계에서 잠재적인 문제를 미리 찾아내 배포 후 발생할 문제를 방지.

3. 생산성 향상 - 코드 리뷰 시간을 줄이고, 개발자는 핵심 기능 구현에 집중할 수 있다.

4. 보안 강화 - 보안 문제를 사전에 해결해 외부 공격 가능성을 줄인다.

5. 유지보수 비용 절감 - 코드 품질이 높아질수록 유지보수가 쉬워지고 장기적으로 비용을 절감.

 

이렇게 간단히 요약하면, 소나큐브는 개발자가 코드 품질을 쉽게 관리하고, 유지보수 비용을 줄이며, 더 안전한 소프트웨어를 개발할 수 있도록 도와주는 필수 도구이다. 이번 기회에 제대로 파악해서, 앞으로 CI/CD 파이프라인에 꼭 통합해보고 싶다!

다음으로는 SonarQube의 설치 및 초기 설정 방법 포스트로 계속..