이 문서는 Linux 환경에서 SonarQube Scanner를 이용하여 C 빌드를 수행하는 방법에 대하여 가이드한다. 


1. SonarQube Scanner 설치

다음 링크를 통해 SonarQube Scanner를 설치한다.


2. 빌드 환경 준비

C/C++ 프로젝트는 SonarQube Build Wrapper가 필요하다. Build Wrapper는 C/C++ 프로젝트로부터 정보를 수정하는 역할을 하며, 빌드에 영향을 주지 않는다. 

2.1 Build Wrapper 다운로드

다음 경로를 통해 Build Wrapper를 다운로드 할 수 있다. 

전페 Build Wrapper 다운로드

2.2 압축 해제

다운로드 받은 Build Wrapper를 적절한 폴더로 압축 해제한다. 

2.3 PATH에 해당 경로 등록

PATH에 해당 경로를 등록하거나 빌드 시 전체 경로를 이용하여 수행할 수 있다. 


3. Build Wrapper를 통한 빌드 및 분석

3.1 Sample 파일 다운로드

만약 C/C++ 샘플 파일은 다음 Github에서 다운로드 받을 수 있다. 


3.2 sonar-project.properties 수정

C/C++ 프로젝트의 루트에 sonar-project.properties 파일을 만들고 적당한 값을 입력한다. 

아래 Sample 파일을 참고한다. 

sonar.projectKey=org.sonarqube:cpp-build-wrapper
sonar.projectName=Example of C/C++ Scan (with BuildWrapper)
sonar.projectVersion=1.0

#sonar.sources=.
sonar.sources=src

sonar.language=cpp

# The build-wrapper output dir
sonar.cfamily.build-wrapper-output=bw-outputs

# Encoding of the source files
sonar.sourceEncoding=UTF-8


# SonarQube location
sonar.host.url=http://10.0.1.2:9000


3.3 빌드 및 분석 수행

다음과 같이 build-wrapper-linux-x86-64를 통해 빌드를 수행한다. 

build-wrapper-linux-x86-64 --out-dir bw_output make clean all
sonar-scanner 


만약 상단의 예제 파일을 이용하였다면, 다음과 같이 구성할 수 있다. 

/build-wrapper-linux-x86-64 --out-dir bw-outputs ./build.sh
sonar-scanner


4. Bamboo에서 빌드 플랜 구성

4.1 Source Code Checkout

저장소로부터 소스 코드를 Checkout하기 위한 Task 설정한다.

4.2 빌드 수행

빌드를 위한 Task를 구성한다. 아래와 같이 구성할 수 있다. 

 /data/sonarqube/build-wrapper-linux-x86/build-wrapper-linux-x86-64 --out-dir bw-outputs ./build.sh


4.3 Sonar Scanner 수행

기본 Sonar Scanner 수행한다.