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


參數使用

項目分析參數可以在多個地方設置,繼承關系如下:

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

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

下面的參數列表並不完整,在WebUI中全局或項目級別的設置,都可以作為分析參數,如下圖中的關鍵字:

SonarQube_KeyWord.png

必備參數

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

關鍵字 描述 默認值
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 設置僅僅分析指定的文件

通配符

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

如下:

# 排除所有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}

 

 

 

 

詳情見官方文檔


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM