...
- Build Wrapper
Build Wrapper는 SonarSource에서 개발한 도구로, 빌드 시점에서 빌드 구성 정보를 JSON 파일로 수집합니다.
이 도구는 C/C++/Objective-C 프로젝트의 올바른 분석을 위해 필요한 매크로 정의, include 디렉토리 등의 정보를 캡처합니다.
Build Wrapper는 빌드 과정에 영향을 주지 않으며, 단순히 정보를 수집하여 지정된 디렉토리에 기록합니다. - Compilation Database
Compilation Database는 LLVM 프로젝트에서 도입한 JSON 형식의 파일로, 프로젝트 빌드에 사용된 컴파일 명령어를 포함합니다.
CMake, Ninja 등의 빌드 도구를 사용해 쉽게 생성할 수 있습니다.
분석 단계
빌드 래퍼(Build Wrapper)
...
모드
Build Wrapper 설치
SonarQube 서버에서 Build Wrapper를 다운로드합니다.- Linux:
<SonarQube_URL>/static/cpp/build-wrapper-linux-x86.zip
- macOS:
<SonarQube_URL>/static/cpp/build-wrapper-macosx-x86.zip
- Windows:
<SonarQube_URL>/static/cpp/build-wrapper-win-x86.zip
- Linux:
- Build Wrapper로 클린 빌드 실행
코드 블럭 // example for linux build-wrapper-linux-x86-64 --out-dir build_wrapper_output_directory make clean all // example for macOS build-wrapper-macosx-x86 --out-dir build_wrapper_output_directory xcodebuild clean build // example for Windows build-wrapper-win-x86-64.exe --out-dir build_wrapper_output_directory MSBuild.exe /t:Rebuild /nodeReuse:False
- SonarScanner 설정
sonar-project.properties 파일을 설정하고 sonar.cfamily.build-wrapper-output 속성을 추가한다.코드 블럭 sonar.projectKey=myFirstProject sonar.projectName=My First C++ Project sonar.projectVersion=1.0 sonar.sources=src sonar.cfamily.build-wrapper-output=build_wrapper_output_directory sonar.sourceEncoding=UTF-8 sonar.host.url=YourSonarQubeURL
- SonarScanner 실행
코드 블럭 sonar-scanner
...
참고사항 | ||
---|---|---|
| ||
|
컴파일 데이터베이스(Compilation Database)
...
모드
- Compilation Database 생성
CMake를 사용하는 경우, 다음 명령어를 실행하여compile_commands.json
파일을 생성합니다:코드 블럭 cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..
- SonarScanner 설정
sonar-project.properties 파일을 설정하고 sonar.cfamily.compile-commands 속성을 추가한다.코드 블럭 sonar.projectKey=myFirstProject sonar.projectName=My First C++ Project sonar.projectVersion=1.0 sonar.sources=src sonar.cfamily.compile-commands=compile_commands.json sonar.sourceEncoding=UTF-8 sonar.host.url=<Your_SonarQube_URL>
- SonarScanner 실행
코드 블럭 sonar-scanner
...