代碼質(zhì)量管理平臺實(shí)戰(zhàn)| SonarQube 安裝、配置及 JaCoCo、Maven 集成

      網(wǎng)友投稿 968 2025-04-02

      SonarQube 是一個(gè)用于代碼質(zhì)量管理的開源平臺,用于管理源代碼的質(zhì)量。同時(shí) SonarQube 還對大量的持續(xù)集成工具提供了接口支持,可以很方便地在持續(xù)集成中使用 SonarQube。此外, SonarQube 的插件還可以對 Java 以外的其他編程語言提供支持,對國際化以及報(bào)告文檔化也有良好的支持。

      官方網(wǎng)址:https://www.sonarqube.org/

      通過插件形式,可以支持包括 Java,C#,C/C++、PL/SQL、Cobol、JavaScrip、Groovy、Ruby 等二十五編程語言的代碼質(zhì)量管理與檢測,針對不同的編程語言其所提供的分析方式也有所不同:對于所有支持的編程語言,SonarQube 都提供源了代碼的靜態(tài)分析功能;對于某些特定的編程語言,SonarQube 提供了對編譯后代碼的靜態(tài)分析功能。

      SonarQube 支持多種客戶端集成方式,包括但不限于 Scanner 客戶端、Ant、Gradle、Maven、Jenkins、IDEA 插件等。比較常用的為 Gradle 和 Maven。

      SonarQube 并不是簡單地將各種質(zhì)量或覆蓋率檢測工具的結(jié)果(例如 CheckStyle、JaCoCo 等)直接展現(xiàn)給客戶,而是通過不同的插件算法來對結(jié)果進(jìn)行再加工,并最終以量化的方式來衡量代碼質(zhì)量,從而方便地對不同規(guī)模和種類的工程進(jìn)行相應(yīng)的代碼質(zhì)量管理,以便進(jìn)行有針對性的代碼修復(fù)或重構(gòu)。

      SonarQube 在進(jìn)行代碼質(zhì)量管理時(shí),會從以下的七個(gè)緯度對項(xiàng)目代碼質(zhì)量進(jìn)行分析。

      Sonar 實(shí)際上是一個(gè) Web 系統(tǒng),展現(xiàn)了靜態(tài)代碼掃描的結(jié)果,結(jié)果是可以自定義的,而真正實(shí)現(xiàn)代碼掃描的是 Sonar Scanner 這個(gè)工具,另外同時(shí)支持多種語言的原理是它的擴(kuò)展性,通過插件實(shí)現(xiàn)的,也就是 Java Jar 架包,可以在 Sonar 平臺上在線安裝或者離線安裝。

      1.已安裝 JDK1.8 環(huán)境

      2.已安裝 Maven(用于后期與 SonarQube、JaCoCo 的集成)

      3.已安裝 MySQ L數(shù)據(jù)庫(Sonar 默認(rèn)的數(shù)據(jù)庫是自帶 H2 數(shù)據(jù)庫,是很小的嵌入式數(shù)據(jù)庫引擎,這里的配置換成了 MySQL,為了方便通過數(shù)據(jù)庫客戶端進(jìn)行數(shù)據(jù)查詢)

      1.下載 SonarQube,地址為:

      http://www.sonarqube.org/downloads/

      2.配置數(shù)據(jù)庫(下面的SQL是指定了schema為sonar,password為sonar,其中第四條SQL是localhost是因?yàn)镸ySQL安裝在本地)

      3.安裝 SonarQube

      I. 將下載的 sonar-3.7.zip 包解壓至 Windows某個(gè)路徑,如 D:\Tools\sonar(如是其他OS,請選擇對應(yīng)路徑,如Linux的/usr/local/等)。

      II. 修改 sonar.properties

      在 /conf/sonar.properties 文件中,配置數(shù)據(jù)庫設(shè)置(默認(rèn)已經(jīng)提供了各類數(shù)據(jù)庫的支持這里使用 MySQL,因此取消 MySQL 模塊的注釋),同時(shí)因?yàn)槎丝跊_突而改成端口為 11000。

      III.在 /bin/ 目錄下,運(yùn)行 /windows-x86-64/StartSonar.bat (因?yàn)楸?demo 是在 win10 64位安裝的,如果是 Linux 的話,運(yùn)行 nohup bash sonar.sh start &)

      IV. 訪問 http://localhost:11000,如果不是本機(jī)就輸入 http://[remote IP]:11000,如果你看到下圖所示即證明配置成功。

      4.用 admin/admin(默認(rèn))進(jìn)行登錄,并安裝漢化包

      Chinese pack installation

      Chinese pack restart

      Chinese pack restart confirm

      Well done!

      下載Sonar Scanner,地址為:

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

      將下載的 sonar-scanner-cli-3.3.0.1492-windows.zip 包解壓至 Windows 某個(gè)路徑,如D:\Tools\sonar(如是其他OS,請選擇對應(yīng)路徑,如Linux的/usr/local/等)

      修改環(huán)境變量

      新增變量:

      SONAR_SCANNER_HOME = D:\Tools\sonar\sonar-scanner-3.3.0

      修改Path變量:增添

      %SONAR_SCANNER_HOME%\bin\

      安裝Sonar Scanner

      I. 將下載的 sonar-3.7.zip 包解壓至 Windows 某個(gè)路徑,如 D:\Tools\sonar(如是其他 OS,請選擇對應(yīng)路徑,如 Linux的/usr/local/ 等)。

      代碼質(zhì)量管理平臺實(shí)戰(zhàn)| SonarQube 安裝、配置及 JaCoCo、Maven 集成

      II. 修改 sonnar-scanner.properties

      在 /conf/sonar-scanner.properties 文件中,設(shè)置SonarQube服務(wù)器。

      III. 到你想檢測的工程根目錄下新建文件sonar-project.properties,文件內(nèi)容如下?,文件中的參數(shù)配置,參考Sonar Analysis Parameters這篇文章。

      在命令行模式下,在工程的根目錄下鍵入命令“sonar-scanner”,你會看到以下日志:

      運(yùn)行 sonar-scanner

      接著,重新登錄 SonarQube 平臺,檢測的結(jié)果已經(jīng)在平臺上展現(xiàn)出來

      從上圖你可以看出來,連單元測試覆蓋率的統(tǒng)計(jì)也生成出來了,主要原因?yàn)樵谠搈aven項(xiàng)目之前已經(jīng)集成了Jacoco插件(具體Maven與Jacoco的集成請參考我的另外一篇文章)。

      1.該項(xiàng)目為maven項(xiàng)目,并且Jacoco已經(jīng)通過POM文件集成到項(xiàng)目中,具體步驟請參考我的另外一篇文章。

      2.該集成方案其實(shí)還是首先通過maven package 命令去生成對應(yīng)的覆蓋率報(bào)告,然后通過sonar scanner直接使用該覆蓋率報(bào)告并通過一定算法加工并展示到SonarQube的界面上去。

      1.在項(xiàng)目根目錄的 sonar-project.properties 文件中,增添以下配置內(nèi)容:

      2.在 SoarQube 登錄 admin,并通過在【配置-應(yīng)用市場】下找到Jacoco插件并安裝和重啟。

      在項(xiàng)目根目錄下,運(yùn)行 mvn package,當(dāng)build成功的時(shí)候Jacoco的結(jié)果就會產(chǎn)生在target/site/jacoco文件夾下。

      maven package

      Maven

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:如何計(jì)算優(yōu)秀率
      下一篇:根號怎么顯示
      相關(guān)文章
      国产亚洲男人的天堂在线观看| 99亚洲精品卡2卡三卡4卡2卡| 亚洲熟女乱综合一区二区| 亚洲人成网站18禁止| 亚洲一区二区三区久久久久| 亚洲精品在线免费观看视频| 久久久久亚洲av无码专区蜜芽 | 亚洲一级毛片免费在线观看| 亚洲美女免费视频| 亚洲精品亚洲人成在线麻豆| 久久精品国产亚洲AV香蕉| 色拍自拍亚洲综合图区| 亚洲欧洲日产国码在线观看| 亚洲国色天香视频| 亚洲剧场午夜在线观看| 亚洲人成在线中文字幕| 亚洲xxxxxx| 亚洲一区AV无码少妇电影| 亚洲成在人线aⅴ免费毛片| 亚洲AV无码成人网站在线观看| 亚洲AV一区二区三区四区| 在线观看亚洲网站| 亚洲国产成人精品久久久国产成人一区二区三区综| 亚洲AV色欲色欲WWW| 亚洲精品国产日韩无码AV永久免费网 | 亚洲日韩乱码中文无码蜜桃臀网站| 久久亚洲国产精品123区| 亚洲日韩精品A∨片无码| 亚洲av无码一区二区三区乱子伦| 亚洲欧洲日韩不卡| 亚洲国产成人久久| 精品国产成人亚洲午夜福利| 亚洲aⅴ无码专区在线观看春色 | 亚洲天堂一区二区| 亚洲国产成人资源在线软件| 亚洲最大无码中文字幕| 亚洲国产精品无码第一区二区三区| 在线亚洲v日韩v| 国内精品99亚洲免费高清| 亚洲av无码潮喷在线观看| 久久亚洲精品成人无码网站|