檢測代碼潛在bug和質量之SonarQube

參數使用java

項目分析參數能夠在多個地方設置,繼承關係以下:git

  • 全局分析參數,經過Web UI設置,做用於全部項目(配置–>通用–>通用中設置)
  • 項目分析參數,經過WebUI設置,覆蓋全局參數(在項目級別的配置–>設置中設置)
  • 項目分析參數,定義在項目的分析設置文件(如:sonar-project.properties)和分析器的配置文件(如:sonar-runner.properties),覆蓋WebUI中設置的項目分析參數
  • 命令行參數,在開始分析時經過命令指定的參數(如:-d 或 /d:),能夠覆蓋項目分析參數

注:只有WebUI中配置的參數會存儲在數據庫中github

下面的參數列表並不完整,在WebUI中全局或項目級別的設置,均可以做爲分析參數,以下圖中的關鍵字:數據庫

SonarQube_KeyWord.png

必備參數

執行項目分析必須指定的參數api

關鍵字 描述 默認值
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

忽略文件

有如下幾種方式來縮小要分析源碼的範圍,以下:服務器

  1. 源代碼目錄:設置sonar.sources參數指定源代碼目錄的範圍
  2. 文件後綴:許多語言都提供了限制文件後綴名的的參數,’配置’–>’通用’–>’[語言]’,設置File suffixes屬性
  3. 選擇指定文件
    • sonar.exclusions/sonar.test.exclusions 設置分析除指定文件之外的全部文件
    • sonar.inclusions/sonar.test.inclusions 設置僅僅分析指定的文件

通配符

符號 匹配
* 匹配一個或多個字符
** 匹配一個或多個目錄
? 匹配一個字符

以下:post

# 排除全部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}

 

 

 

 

詳情見官方文檔測試

相關文章
相關標籤/搜索