SonarQube實現自動檢查


參考:https://www.cnblogs.com/cjsblog/p/10740840.html

質量平台是否實現自動檢查SVN、Git中的項目?

答案是能。

1.回答問題

1.1 掃描方式

SonarQube執行質量檢測要運行客戶端SonarQube Scanner或者maven命令,要集成SonarQube,必須要有SonarQube對應的官方插件。

官方文檔提供的掃描方式,如下

https://docs.sonarqube.org/latest/analysis/overview/

  • Gradle - SonarScanner for Gradle
  • MSBuild - SonarScanner for MSBuild
  • Maven - use the SonarScanner for Maven
  • Jenkins - SonarScanner for Jenkins
  • Azure DevOps - SonarQube Extension for Azure DevOps
  • Ant - SonarScanner for Ant
  • anything else (CLI) - SonarScanner

SonarQube integrations are supported for popular ALMs: GitHub Enterprise and GitHub.com, BitBucket Server, and Azure Devops Server.

流行的ALM支持SonarQube集成:GitHub Enterprise和GitHub.com,BitBucket Server和Azure Devops Server。

1.2 SCM集成

https://docs.sonarqube.org/7.7/analysis/scm-integration/

一般來說提交代碼后,要去調用SonarQube的一種掃描方式。

SonarQube是支持git/svn的,一般在安裝SonarQube時默認安裝了svn/git插件,在通用配置那里可以填寫信息使用,但是搜索發現很少人這么做。

1.3 idea

只用idea也能做到,不過是手動

idea自身支持svn/git,支持運行maven命令

插件Sonarlint,可以連接SonarQube,只是獲取規則,不能上傳

2.Jenkins

一般來說,代碼質量掃描屬於持續集成/構建的一部分。

Jenkins是比較成熟的第三方持續集成系統

現在流行的方案是:Jenkins + git/svn + SonarQube

2.1 安裝Jenkins

下載安裝包,這里我們下載war包

https://jenkins.io/download/

運行jenkins.war的方式有兩種:

第一種:將其放到tomcat中運行(放到webapps目錄下,啟動tomcat)

第二種:直接執行 java -jar jenkins.war --httpPort=8080

https://jenkins.io/doc/pipeline/tour/getting-started/

這里我們選擇第一種方式

啟動tomcat(bin/startup.sh)以后訪問 http://localhost:8080/jenkins/

至此,jenkins安裝完成

2.2 安裝SonarQube Scanner插件

安裝插件

https://plugins.jenkins.io/sonar

重啟jenkins

配置SonarQube

首先,在SonarQube中生成一個Token(PS:用token代替輸入用戶名和密碼)

然后,在Jenkins中配置連接sonarqube服務器的地址,這里用到的token就是剛才在sonarqube中創建的那個token

最后,配置全局工具配置

創建任務

最最重要的是,配置SonarQubeanalysis properties

可以將其單獨寫到一個配置文件(sonar-project.properties)里面,也可以像這樣每次都寫一遍

sonar.projectKey=ks-cms-unicorn
sonar.projectName=ks-cms-unicorn
sonar.projectVersion=1.0

sonar.language=java
sonar.sourceEncoding=UTF-8

sonar.sources=$WORKSPACE
sonar.java.binaries=$WORKSPACE

其中,sonar.java.binaries 屬性至關重要

相關文檔在這里:

https://github.com/SonarSource/sonar-scanning-examples/blob/master/sonarqube-scanner/sonar-project.properties

https://docs.sonarqube.org/display/PLUG/Java+Plugin+and+Bytecode

本例中,創建了兩個任務,方法同上

可以看到,每次構建任務都會生成一次報告

這種方式比Maven那種方式要好很多,在實際的項目中多用此方式

2.3 參考及文檔

https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner+for+Jenkins

最后補充一個使用Maven方式與服務器同步報告的命令


免責聲明!

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



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