이 문서는 SonarQube 제품의 개요를 공유하기 위해 작성되었다. 

이 문서를 통해 SonarQube의 기본 기능 및 Edition 별 기능 차이점을 확인할 수 있다. 



SonarQube 주요 기능

SonarQube 지속적인 인스펙션을 통해 조직의 코드 품질 강화 및 보안 취약성 예방을 도와주는 솔루션이다.

다음은 SonarQube가 제공하는 주요 기능이다.

SonarQube Edition

SonarQube의 Edition별 기능 및 차이점은 다음과 같다. 

기능DeveloperEnterpriseData Center
사용 범위소규모 팀 단위에서 사용전사 조직 단위에서 사용고가용성을 원하는 조직에서 사용
SonarLint IDE 개발 도구 연동(눈금)(눈금)(눈금)
브랜치 분석(눈금)(눈금)(눈금)
Pull Request Decoration(눈금)(눈금)(눈금)
Taint analysis(눈금)(눈금)(눈금)
분석 언어25개 언어30개 언어30개 언어
분석 보고서의 병렬 처리
(눈금)(눈금)
여러 DevOps 플랫폼 인스턴스
(눈금)(눈금)

PR 데코레이션을 위한 Monorepo 지원


(눈금)(눈금)
보안 엔진 커스터마이징
(눈금)(눈금)
보안 리포트
(눈금)(눈금)
포트폴리오 관리 및 PDF 경영진 보고서
(눈금)(눈금)

프로젝트 PDF 보고서


(눈금)(눈금)

출시 상태 및 품질을 기록하는 규제 보고서


(눈금)(눈금)

Audit trailing


(눈금)(눈금)

프로젝트 이전


(눈금)(눈금)

테스트 / 스테이지 라이센스


2개3개

컴포넌트 무결성



(눈금)

Data resiliency



(눈금)

Horizontal scalability



(눈금)



SonarQube Edition의 주요 기능

SonarLint IDE 개발 도구 연동

IDE에 SonarLint가 설치되어있고 SonarQube와 연동되어있으면 서버에서 분석된 결과를 IDE의 SonarLint를 통해 알림을 받을 수 있다.

브랜치 분석

Git Branch 기반으로 개발을 할 경우, SonarQube의 하나의 프로젝트에서 Branch를 모아서 분석 결과를 추적할 수 있다.

Branch는 개발 방식에 따라 Short-lived와 Long-lived 코드 브랜치가 존재할 수 있으며, 해당 브랜치에서 안정성이 보장된 코드만이 Master 브랜치로 병합할 수 있다.

Pull Request Decoration

SonarQube 다양한 형상 관리 도구(Bitbucket, GitLab, GitHub)와 연동하여 Pull Request 시, SonarQube 분석 결과를 해당 형상 관리 도구에 알려줄 수 있다. 


Taint analysis

테인트 분석은 사용자 데이터 조각을 추적하여 어떤 작업을 수행하기 전에 삭제되었는지 확인함으로써 사용자 데이터를 보호할 수 있게 해주는 기능이다.

Java, C#, PHP, Python, JavaScript, TypeScript, C, C++ 언어에 대해서 지원하며, 아래는 OWASP 분석의 예시를 보여준다.



분석 언어

소나큐브는 30개 이상의 프로그램 언어를 지원한다. 다음 링크를 통해 전체 언어와 룰셋을 확인할 수 있다. 

분석 보고서의 병렬 처리

기본적으로 프로젝트 분석은 한번에 하나씩 처리된다. 이 기능은 Worker를 여러개 두고 한 프로젝트에서 다중으로 분석을 처리할 수 있게 해준다.

멀티 DevOps 플랫폼 인스턴스

Github, Gitlab, Bitbucket, Azure DevOps와 통합을 할 수 있게 해주는 기능이다. 개발 버전에서는 1개만, 엔터프라이즈 버전에서는 여러개의 DevOps 플랫폼과 연동을 할 수 있게 해준다. 


PR 데코레이션을 위한 Monorepo 지원

Github, Gitlab, Bitbucket, Azure DevOps 플랫폼의 Monorepo도 Pull Request 데코레이션을 지원합니다. 


보안 엔진 커스텀 구성

특정 룰에 대한 보안 룰들을 커스텀 구성할 수 있게 해주는 기능이다. SQL Injection, XSS, Open Redirect, Code Injection 등 룰에서  sources, sanitizers, passthroughs, sinks 를 추가할 수 있게 해준다. 


보안 리포트

보안 리포트는 소나큐브,  PCI DSS, OWASP ASVS, OWASP Top10, CWE Top 25를 기준으로 소스코드에 보안 보고서를 보여준다. 다음은 보안 리포트의 예시 화면이다. 


포트폴리오 관리 및 PDF 보고서

포트폴리오는 SonarQube에서 분석된 여러 프로젝트(저장소)를 묶어서 합계된 결과를 확인할 수 있게 구성할 수 있다.

기본 프로젝트의 Reliability, Security, Maintainability와 함께 품질 게이트를 실패한 비율을 Releaseability로 표시합니다. 이를 통해 해당 제품(서비스)를 릴리즈할지 결정할 수 있다.


프로젝트 PDF 보고서

프로젝트 보고서는 현재 프로젝트의 상태를 PDF로 다운로드 받을 수 있는 기능이다. 다음은 프로젝트 보고서의 예시를 보여준다.


Audit trailing

관리자 영역의 사용자 계정, 권한, 보안 설정, 프로젝트 생성, 삭제, 업데이트, 플러그인 설치 및 업데이트 등 변경 사항에 대한 감사 로그를 제공한다.

감사로그는 관리자 > Audit logs 에서 확인할 수 있다.

프로젝트 이전

프로젝트를 하나의 인스턴스에서 다른 인스턴스로 이전하는 기능이다. 이 기능을 통해 커뮤니티 버전의 프로젝트를 엔터프라이즈 버전의 SonarQube로 쉽게 이전할 수 있다.

테스트 / 스테이지 라이센스

엔터프라이즈 버전의 경우, 2개의 라이센스를 데이터 센터 버전의 경우 3개의 테스트 및 스테이지 라이센스를 제공한다. 



Enterprise버전에서 제공하는 보고서 샘플

프로젝트 보고서

포트폴리오 보고서



G2 Crowd Grid for Static Code Analysis

SonarQube도 이제는 글로벌 2등으로 빠르게 성장하고 있다.


시스템 구성도

소나큐브는 복수의 sonar-scanner/lint (IDE plugin) + SonarQube 서버로 구성된다.