이 문서는 SonarQube 10.6 이후 C/C++/Objective-C 분석 변경 사항을 공유하기 위해 작성되었다.
새로운 분석 모드 도입
AutoConfig 와 Compilation Database 두 가지 분석 모드를 제공합니다.
분석 모드
AutoConfig 모드 (기본값)
- 별도의 빌드 데이터를 제공하지 않아도 분석이 가능.
- 분석기가 컴파일 옵션을 자동으로 추론.
- 간단한 설정과 빠른 분석에 적합.
Compilation Database 모드
compile_commands.json
파일을 통해 컴파일 정보를 전달.- 분석 품질과 세부 제어가 필요한 경우 적합.
- Objective-C 코드 분석을 지원.
분석 모드 선택 기준
AutoConfig
- SonarQube에서 지원되지 않는 컴파일러를 사용하는 경우.
- Compilation Database 생성이 어려운 환경에서 작업할 때.
- 분석 준비 시간을 최소화하고 싶을 때.
- CFamily 코드 비중이 낮은 프로젝트를 분석할 때.
Compilation Database
- 높은 분석 품질을 원하거나 빌드 변형을 세부적으로 제어하고 싶을 때.
- Objective-C 코드가 포함된 프로젝트를 분석할 때.
- 기존 CI/CD 환경에서 Compilation Database를 이미 생성 및 활용 중일 때.
분석 단계
AutoConfig 모드
AutoConfig 모드에서는 별도의 설정 없이 C/C++ 코드를 분석할 수 있습니다.
추가적인 컴파일 명령 제공 없이, 분석기가 컴파일 옵션을 자동으로 추론합니다.
Compilation Database 모드
Compilation Database 모드에서는 compile_commands.json
파일을 제공하여 컴파일 정보를 명시적으로 전달해야 합니다.
compile_commands.json
파일을 생성하기 위해 SonarSource build wrapper 혹은 CMake나 Ninja와 같은 타사 도구를 사용하여야 합니다.
- SonarScanner CLI
1. 프로젝트에 sonar-project.properties 파일을 추가합니다.2. sonar-project.properties에 sonar.cfamily.compile-commands 속성을 추가합니다.sonar.projectKey=myFirstProject sonar.projectName=My First C++ Project sonar.projectVersion=1.0 sonar.sources=src sonar.sourceEncoding=UTF-8 sonar.host.url=SonarQubeURL
3. 프로젝트의 루트 디렉토리에서 sonar-scanner를 실행합니다.sonar.cfamily.compile-commands=compile_commands.json
sonar-scanner
- SonarScanner for .NET
빌드 래퍼를 사용하여 컴파일 데이터베이스 모드에서 C++와 C#이 혼합된 프로젝트를 분석합니다.
SonarScanner for .NET은 sonar-project.properties파일을 처리하지 않으므로 SonarScanner for .NET의 begin 단계에서 컴파일 데이터베이스를 설정해야 합니다.
1.SonarScanner for .NET 과 build wrapper를 다운로드하여 설치합니다.
2. 아래와 같이 begin 부분에 build wrapper 출력 파라미터를 사용하여 SonarScanner를 실행하고 build wrapper 실행 후 end 를 실행하여 분석을 완료합니다.SonarScanner.MSBuild.exe begin /k:"cs-and-cpp-project-key" /n:"My C# and C++ project" /v:"1.0" /d:sonar.cfamily.compile-commands="build_wrapper_output_directory/compile_commands.json" build-wrapper-win-x86-64.exe --out-dir build_wrapper_output_directory MSBuild.exe /t:Rebuild /nodeReuse:False SonarScanner.MSBuild.exe end
참조페이지