Skip to end of metadata
Go to start of metadata

이 문서는 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를 다운로드 할 수 있다. 

  • http://소나큐브주소/static/cpp/build-wrapper-linux-x86.zip 

Build Wrapper 다운로드 링크


wget https://sonarsource.bintray.com/CommercialDistribution/sonar-cpp-plugin/build-wrapper-3.11.zip


2.2 압축 해제

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


unzip build-wrapper-3.11.zip


압축 해제 후 다음과 같이 구성된다. 

  • linux-x86-32
  • linux-x86-64
    • build-wrapper-linux-x86-65
  • macosx-x86
  • win-x86-32
  • win-x86-64

자신의 환경에 맞는 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


# Key 방식의 로그인 시 인증 정보
# sonar.login=cbcf225a4f5015201228c0fdf9


# ID/PW 로그인 시
sonar.login = admin
sonar.password = admin


3.3 빌드 및 분석 수행

다음과 같이 build-wrapper-linux-x86-64를 통해 빌드를 수행한다. 먼저 Build-wrapper를 통해 Build 수행하고 sonar-scanner 수행한다.

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


분석 완료 후 bw-outputs 폴더에 다음 파일이 생성된다. 

  • build-wrapper-dump.json
  • build-wrapper.log.


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 수행한다.




  • No labels