이 문서는 SonarQube 분석 파라미터 정보를 공유하기 위해 작성되었다.
개요
프로젝트 분석 파라미터는 여러 곳에서 구성될 수 있다.
각각의 플러그인과 언어 분석기는 SonarQube UI에서 정의할 수 있는 자체 속성을 추가한다.
이러한 속성은 분석 파라미터로 정의할 수도 있지만 해당 속성과 이에 대한 설명을 설정하기에 가장 좋은 위치는 SonarQube UI이다.
UI를 통해 설정된 파라미터는 이후 분석에 재사용할 수 있으며, 스캐너가 파라미터를 읽는 방식의 구조가 있다.
우선 순위에 따른 계층 구조는 다음과 같다.
- Global properties(전역 속성): 모든 프로젝트에 적용됨. UI의 Administration > Configuration > General Settings에 정의되어 있다.
- Project properties(프로젝트 속성 ): 하나의 프로젝트에만 적용됨. 프로젝트 레벨에서 Project Settings > General Settings에 정의되어 있다.
- Project analysis parameters(프로젝트 분석 파라미터): 프로젝트 분석 configuration파일이나 스캐너 configuration파일에 정의되어 있다.
- Analysis / Command line parameters(분석/명령줄 파라미터): 명령줄에서
-D
옵션과 함께 분석을 시작할 때 정의되어 있다.
UI를 통해 설정된 파라미터만 데이터베이스에 저장된다.
예를 들어, 특정 프로젝트에 대한 명령줄을 통해 sonar.exclusions 파라미터를 재정의할 경우, 데이터베이스에 저장되지 않는다.
테스트 적용 범위 및 실행과 관련된 언어별 파라미터는 테스트 적용 범위를 참조하면 되고, 외부 이슈 보고서와 관련된 파라미터는 외부 이슈, 분석 범위 제어는 초점 좁히기를 참조한다.
분석 파라미터는 대소문자를 구분한다.
필수 파라미터
서버
키 | 설명 | 기본값 | 비고 |
---|---|---|---|
sonar.host.url | SonarQube 주소 | http://localhost:9000/ |
프로젝트 구성
키 | 설명 | 기본값 | 비고 |
---|---|---|---|
sonar.projectKey | 프로젝트 고유키 | <groupId>:<artifactId> (Maven) | 문자, 숫자, [- , _ , . ,:] 허용, 최소 하나 이상의 숫자가 아닌 문자가 포함 |
선택적 파라미터
프로젝트 식별
키 | 설명 | 기본값 | 비고 |
---|---|---|---|
sonar.projectName | SonarQube에서 프로젝트 명 | <name>(Maven) | Maven이 아닐 경우, 프로젝트 키가 기본 값. 이미 DB에 있을 경우 덮어쓰기 X |
sonar.projectVersion | 프로젝트 버전 | <version>(Maven) | Maven이 아닐 경우, 제공 안 됨. 빌드번호 사용 금지. |
인증
키 | 설명 | 기본값 | 비고 |
---|---|---|---|
sonar.login | SonarQube 인증 토큰 | 프로젝트에 대한 분석 실행 권한 또는 글로벌 분석 실행 권한이 있는 사용자 | |
sonar.password | SonarQube 로그인 패스워드 | 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.sarifReportPaths | SARIF 보고서에 대한 쉼표로 구분된 경로 목록 | ||
sonar.projectDate | 분석에 날짜를 지정 | 현재 날짜 | YYYY-MM-DD형식 |
sonar.projectBaseDir | 분석이 시작된 디렉토리가 아닌 다른 디렉토리에서 분석을 수행해야 하는 경우 설정 | ||
sonar.working.directory | SonarScanner 또는 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.referenceBranch | Reference Branch에 new code를 설정 | ||
sonar.filesize.limit | 지정된 크기보다 클 경우 분석 범위에서 삭제할 파일 크기 지정(MB) | 20(MB) |
중복
키 | 설명 | 기본값 | 비고 |
---|---|---|---|
sonar.cpd.${language}.minimumTokens | 최소 10줄(sonar.cpd.${language}.minimumLines)의 코드에 걸쳐 한 행에 최소 100개(sonar.cpd.${language}.minimumTokens) 이상의 중복되는 토큰 이 있는 경우 코드 조각이 중복된 것으로 간주한다. | 100 | Java 프로젝트의 경우 토큰 및 줄 수에 관계없이 일련의 명령문이 연속으로 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/