이 문서는 SonarQube 분석 파라미터 정보를 공유하기 위해 작성되었다. 



개요

프로젝트 분석 파라미터는 여러 곳에서 구성될 수 있다.

각각의 플러그인과 언어 분석기는 SonarQube UI에서 정의할 수 있는 자체 속성을 추가한다.

이러한 속성은 분석 파라미터로 정의할 수도 있지만 해당 속성과 이에 대한 설명을 설정하기에 가장 좋은 위치는 SonarQube UI이다.

UI를 통해 설정된 파라미터는 이후 분석에 재사용할 수 있으며, 스캐너가 파라미터를 읽는 방식의 구조가 있다.

우선 순위에 따른 계층 구조는 다음과 같다.

분석 계층

  1. Global properties(전역 속성): 모든 프로젝트에 적용됨. UI의 Administration > Configuration > General Settings에 정의되어 있다.
  2. Project properties(프로젝트 속성 ): 하나의 프로젝트에만 적용됨. 프로젝트 레벨에서 Project Settings > General Settings에 정의되어 있다.
  3. Project analysis parameters(프로젝트 분석  파라미터): 프로젝트 분석 configuration파일이나 스캐너 configuration파일에 정의되어 있다.
  4. Analysis / Command line parameters(분석/명령줄 파라미터): 명령줄에서 -D 옵션과 함께 분석을 시작할 때 정의되어 있다.


UI를 통해 설정된 파라미터만 데이터베이스에 저장된다.

예를 들어, 특정 프로젝트에 대한 명령줄을 통해 sonar.exclusions 파라미터를 재정의할 경우, 데이터베이스에 저장되지 않는다.


테스트 적용 범위 및 실행과 관련된 언어별 파라미터는 테스트 적용 범위를 참조하면 되고, 외부 이슈 보고서와 관련된 파라미터는 외부 이슈, 분석 범위 제어는 초점 좁히기를 참조한다.

분석 파라미터는 대소문자를 구분한다.

필수 파라미터

서버

설명기본값비고
sonar.host.urlSonarQube 주소http://localhost:9000/

프로젝트 구성

설명기본값비고
sonar.projectKey프로젝트 고유키<groupId>:<artifactId> (Maven)문자, 숫자,  [-, _, .,:] 허용, 최소 하나 이상의 숫자가 아닌 문자가 포함


선택적 파라미터

프로젝트 식별

설명기본값비고
sonar.projectNameSonarQube에서 프로젝트 명<name>(Maven)Maven이 아닐 경우, 프로젝트 키가 기본 값. 이미 DB에 있을 경우 덮어쓰기 X
sonar.projectVersion프로젝트 버전<version>(Maven)Maven이 아닐 경우, 제공 안 됨.  빌드번호 사용 금지.

인증

설명기본값비고
sonar.loginSonarQube 인증 토큰
프로젝트에 대한 분석 실행 권한 또는 글로벌 분석 실행 권한이 있는 사용자
sonar.passwordSonarQube 로그인 패스워드
deprecated in SonarQube v9.8

웹 서비스

설명기본값비고
sonar.ws.timeout

웹 서비스 호출의 응답을 기다리는 최대 시간(초)

60(초)

프로젝트 구성

설명기본값비고
sonar.projectDescription프로젝트 설명<description>(Maven)
sonar.links.homepage프로젝트 홈페이지<url>(Maven)
sonar.links.ci지속적인 통합<ciManagement><url>(Maven)
sonar.links.issue이슈 트래커<issueManagement><url>(Maven)
sonar.links.scm프로젝트 소스 저장소.<scm><url>(Maven)
sonar.sources기본 소스 파일이 포함된 디렉터리에 대한 쉼표로 구분된 경로

프로젝트 기본 디렉터리

Maven, Gradle, MSBuild 프로젝트용 빌드 시스템에서 가져옴
sonar.tests테스트 소스 파일이 포함된 디렉터리에 대한 쉼표로 구분된 경로비어있음Maven, Gradle, MSBuild 프로젝트용 빌드 시스템에서 가져옴
sonar.sourceEncoding소스 파일의 인코딩

시스템 인코딩

Maven 프로젝트의 표준 속성 project.build.sourceEncoding 로 대체될 수 있다.
sonar.externalIssuesReportPaths일반적인 이슈 보고서에 대한 쉼표로 구분된 경로 목록 
sonar.sarifReportPathsSARIF 보고서에 대한 쉼표로 구분된 경로 목록 
sonar.projectDate분석에 날짜를 지정현재 날짜YYYY-MM-DD형식
sonar.projectBaseDir분석이 시작된 디렉토리가 아닌 다른 디렉토리에서 분석을 수행해야 하는 경우 설정 
sonar.working.directorySonarScanner 또는 SonarScanner for Ant(2.0보다 큰 버전)로 트리거된 분석을 위한 작업 디렉터리를 설정.scannerwork

MSBuild용 SonarScanner와 호환되지 않음.

각 분석 전에 지정된 폴더가 삭제된다

sonar.scm.provider프로젝트에서 자동감지가 작동하지 않는 경우,  어떤 SCM을 사용하고 있는지 SonarQube에 명시적으로 알려주는 데 사용 

속성의 값은 항상 소문자이며 SCM에 따라 다르다(예: Git을 사용하는 경우 "git").

자세한 내용은 SCM 통합 문서를 확인

sonar.scm.forceReloadAll모든 파일에 blame 정보를 로드할 때 사용("true") 

기본적으로 blame 정보는 변경된 파일에 대해서만 검색된다.

SonarQube가 SCM 엔진에서 최신 정보를 얻지 못하는 경우 사용할 수 있다.

sonar.scm.exclusions.disabled.gitignore같은 SCM에서 포함하지 않는 파일을 분석에서 자동적으로 포함하지 않는 기능에 대한 설정   

기능을 비활성화 하려면 "true"로 설정

sonar.scm.disabled 파라미터가 true로 설정 되어있는 경우, SCM exclusion은 항상 비활성화 된다.

sonar.scm.revision분석 결과에 표시된 Git sha1과 같은 개정을 재정의CI환경이나 체크아웃 리소스에 의해 제공됨
sonar.buildString이 속성과 함께 전달된 문자열은 분석과 함께 저장 api/project_analyses/search의 결과에서 사용 가능하여 이후 특정 분석을 식별하여 ID를 얻고 api/project_analyses/set_baseline와 사용 가능
sonar.analysis.[yourKey]커스텀 키/값 쌍을 분석 컨텍스트 에 넣을 수 있고 웹훅에 전달할 수 있다. 
sonar.newCode.referenceBranchReference Branch에 new code를 설정 
sonar.filesize.limit지정된 크기보다 클 경우 분석 범위에서 삭제할 파일 크기 지정(MB)20(MB)

중복

설명기본값비고
sonar.cpd.${language}.minimumTokens최소 10줄(sonar.cpd.${language}.minimumLines)의 코드에 걸쳐 한 행에 최소 100개(sonar.cpd.${language}.minimumTokens) 이상의 중복되는 토큰 이 있는 경우 코드 조각이 중복된 것으로 간주한다.100Java 프로젝트의 경우 토큰 및 줄 수에 관계없이 일련의 명령문이 연속으로 10개 이상 있으면 코드 조각이 중복된 것으로 간주된다.(이 경우, 임계값 재정의 안됨.)
sonar.cpd.${language}.minimumLines(위에 설명 참조)10

분석 로그

설명기본값비고
sonar.log.level분석 중에 생성되는 로그의 수량/수준을 제어INFO

 - DEBUG : INFO 로그 + DEBUG 수준의 세부 정보 표시 , sonar.verbose=true와 비슷

 - TRACE : DEBUG 로그 + SonarScanner가 실행하는 모든 ElasticSearch 쿼리 및 Web API 호출의 타이밍 표시

sonar.verbose클라이언트, 서버의 자세한  분석 로그false

스캐너에 대한 DEBUG 모드를 활성화하고 클라이언트의 환경 변수와 시스템 속성을 분석 보고서 처리의 서버 측 로그에 추가한다.


이 설정이 서버 측 환경 변수로 저장된 경우 비밀번호와 같은 민감한 정보가 노출될 가능성이 있다


sonar.scanner.dumpToFile분석 디버깅을 위한 수단으로 스캐너 API에 전달된 속성의 전체 목록을 지정된 파일에 출력

sonar.scanner.metadataFilePath스캐너가 ceTaskId를 포함하는 report-task.txt 파일을 작성하는 위치를 설정sonar.working.directory 값

품질 게이트

설명기본값비고
sonar.qualitygate.wait분석 단계에서 SonarQube 인스턴스를 폴링하고 Quality Gate 상태를 기다리도록 함INFO

다른 옵션이 없는 경우 품질 게이트가  Fail 될 때 이 설정을 사용하여 파이프라인 빌드를 Fail 처리 할 수 있다.

sonar.qualitygate.timeout보고서가 처리될 때까지 스캐너가 기다려야 하는 시간(초)300(초)




참고


https://docs.sonarsource.com/sonarqube/9.9/analyzing-source-code/analysis-parameters/

  • 레이블 없음