이 문서는 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 파일을 추가합니다.
    sonar.projectKey=myFirstProject
    sonar.projectName=My First C++ Project
    sonar.projectVersion=1.0
    sonar.sources=src
    sonar.sourceEncoding=UTF-8
    sonar.host.url=SonarQubeURL
     2. sonar-project.properties에 sonar.cfamily.compile-commands 속성을 추가합니다.
    sonar.cfamily.compile-commands=compile_commands.json
    3. 프로젝트의 루트 디렉토리에서 sonar-scanner를 실행합니다.
    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





참조페이지



  • 레이블 없음