<aside>
📌
</aside>
🤔 SonarQube가 뭐죠?
SonarQube는 정적 코드 분석을 통해 버그, 코드 스멜, 보안 취약점 등을 자동으로 탐지하고 관리할 수 있게 해주는 툴이다.
<aside>
💡
**정적 코드 분석(Static Code Analysis)**이란?
- 프로그램의 실제 실행 없이 코드를 분석하는 것.
- 소스 코드 기반으로 진행되며, 미리 지정된 규칙(Rule) 셋을 통해 코드를 분석하기 때문에 빠르고 효율적이라는 장점이 있지만, 런타임이 실행되는 환경에서의 약점을 잡아내지 못한다는 단점이 존재한다.
</aside>
주요 기능
- 버그 찾기: 잠재적 버그 찾기
- 코드 스멜 감지: 지금은 문제가 없지만 나중에 문제가 될 수 있는 코드를 코드 스멜이라 부르고 그것을 찾아 내는 것
- 보안 취약점 체크
- 코드 중복 체크: 불필요하게 반복되는 코드 찾기
- 코드 복잡도 분석
SonarQube Component
SonarQube는 3개의 컴포넌트로 구성된다.

- Scanner: CI 파이프라인과 통합되어 소스 코드를 분석하기 위한 구성 요소
- SonarQube Server: Web 인터페이스 제공을 위한 Web Server, 검색을 위한 ElasticSearch 기반 Search Server, 분석 코드 처리를 위한 Compute Engine으로 이루어진 구성 요소
- Database: SonarQube Server의 설정 및 코드 분석 결과를 DB에 저장하기 위한 구성 요소
이거 ESLint랑 비슷한거 아니에요?
ESLint와 SonarQube 둘 다 정적 코드 분석 도구는 맞다. 다만, 둘은 약간의 차이가 있다.
- 기능과 범위
- ESLint: Javascript 및 Typescript 린터 도구로, 코딩 표준을 지키고 버그를 찾아내어 코드 품질을 향상시키는 데 사용된다. 주로 코드 스타일과 모범 사례(best practices)에 초점을 맞춘다.
- SonarQube: 여러 프로그래밍 언어를 지원하는 종합적인 코드 품질 관리 플랫폼이다. 정적 코드 분석, 보안 취약점 탐지, 코드 커버리지 측정 등을 다양한 기능을 제공한다.
- 통합과 생태계
- ESLint: 가볍고 커스터마이징이 쉬우며, 많은 개발 도구와 잘 어울린다. 개발 워크플로우와 IDE에 원활하게 통합될 수 있다.
- SonarQube: 전용 서버 설치가 필요하고, 중앙 집중식 보고 및 기록 분석과 같은 고급 기능을 제공한다. 빌드 시스템, CI/CD 파이프라인 및 코드 레포지토리와도 통합될 수 있다.