參數使用
項目分析參數可以在多個地方設置,繼承關系如下:
- 全局分析參數,通過Web UI設置,作用於所有項目(配置–>通用–>通用中設置)
- 項目分析參數,通過WebUI設置,覆蓋全局參數(在項目級別的配置–>設置中設置)
- 項目分析參數,定義在項目的分析設置文件(如:sonar-project.properties)和分析器的配置文件(如:sonar-runner.properties),覆蓋WebUI中設置的項目分析參數
- 命令行參數,在開始分析時通過命令指定的參數(如:-d 或 /d:),可以覆蓋項目分析參數
注:只有WebUI中配置的參數會存儲在數據庫中
下面的參數列表並不完整,在WebUI中全局或項目級別的設置,都可以作為分析參數,如下圖中的關鍵字:
必備參數
執行項目分析必須指定的參數
關鍵字 | 描述 | 默認值 |
---|---|---|
sonar.host.url | 服務器地址 | http://localhost:9000 |
sonar.projectKey | 項目Key唯一標示,可以是字母、數字、’-‘、’_‘、’.’和’:’,但至少要包含一個字母 | |
sonar.projectName | 項目名稱 | |
sonar.projectVersion | 項目版本 | |
sonar.sources | 源代碼文件夾,多個用’,’分開 |
可選參數
關鍵字 | 描述 | 默認值 |
---|---|---|
身份驗證 | ||
sonar.login | 用戶名或者是身份認證令牌 | |
sonar.password | 用戶密碼,若使用身份認證令牌則可忽略此屬性 | |
項目配置 | ||
sonar.projectDescription | 項目描述 | |
sonar.tests | 測試文件目錄,多個用’,’分開 | |
sonar.analysis.mode | 分析模式(publish/preview/issues) | publish |
sonar.language | 需要分析源碼的語言,默認執行多語言分析 | |
sonar.sourceEncoding | 源碼編碼格式 | 系統編碼格式 |
sonar.projectBaseDir | 項目主目錄,用於分析開始時的當前目錄不是項目主目錄的情況,可以是相對目錄也可以是絕對目錄 | |
sonar.working.directory | 用於SonarQube Runner執行分析時的工作目錄,可以是相對目錄,也可以是絕對目錄 | .sonar |
分析日志 | ||
sonar.log.level | 設置分析過程中的日志級別(INFO/DEBUG/TRACE,其中TRACE級別會輸出SQL語句及其執行的事件) | INFO |
忽略文件
有以下幾種方式來縮小要分析源碼的范圍,如下:
- 源代碼目錄:設置sonar.sources參數指定源代碼目錄的范圍
- 文件后綴:許多語言都提供了限制文件后綴名的的參數,’配置’–>’通用’–>’[語言]’,設置File suffixes屬性
- 選擇指定文件:
- sonar.exclusions/sonar.test.exclusions 設置分析除指定文件以外的所有文件
- sonar.inclusions/sonar.test.inclusions 設置僅僅分析指定的文件
通配符
符號 | 匹配 |
---|---|
* | 匹配一個或多個字符 |
** | 匹配一個或多個目錄 |
? | 匹配一個字符 |
如下:
# 排除所有Bean結尾的類
# 匹配org/sonar.api/MyBean.java, org/sonar/util/MyOtherBean.java, org/sonar/util/MyDTO.java等
sonar.exclusions=**/*Bean.java,**/*DTO.java
# 排除src/main/java/org/sonar目錄下所有文件
# 但不包括其子目錄下的文件
sonar.exclusions=src/main/java/org/sonar/*
# 排除bank目錄及其子目錄下的所有文件
sonar.exclusions=bank/**/*
# 排除bank目錄及其子目錄下的所有.cs文件
sonar.exclusions=bank/**/*.cs
比如:
CurrentPath=$(pwd) CurrentPath=${CurrentPath#\/} CurrentPath=${CurrentPath//\//_} echo $CurrentPath sonar-scanner \ -X \ -Dsonar.projectKey=cms \ -Dsonar.sources=. \ # -Dsonar.tests=. \ -Dsonar.exclusions=**/_vgo/** \ -Dsonar.exclusions=**/vendor/** \ -Dsonar.host.url=http://{sonar qube server} \ -Dsonar.login=xxxxxx \ -Dsonar.projectName=${CurrentPath}
詳情見官方文檔