中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

使用Sonar進行代碼質(zhì)量管理及郵件報警

一、Sonar 概述

Sonar 是一個用于代碼質(zhì)量管理的開放平臺。通過插件機制,Sonar 可以集成不同的測試工具,代碼分析性工具,以及持續(xù)集成工具。

創(chuàng)新互聯(lián)公司是一家專業(yè)提供馬村企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為馬村眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進行中。

與持續(xù)集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是簡單地把不同的代碼檢查工具結(jié)果(例如 FindBugs,PMD 等)直接顯示在 Web 頁面上,而是通過不同的插件對這些結(jié)果進行再加工處理,通過量化的方式度量代碼質(zhì)量的變化,從而可以方便地對不同規(guī)模和種類的工程進行代碼質(zhì)量管理。

在對其他工具的支持方面,Sonar 不僅提供了對 IDE 的支持,可以在 Eclipse 和 IntelliJ IDEA 這些工具里聯(lián)機查看結(jié)果;同時 Sonar 還對大量的持續(xù)集成工具提供了接口支持,可以很方便地在持續(xù)集成中使用 Sonar。

此外,Sonar 的插件還可以對 Java 以外的其他編程語言提供支持,對國際化以及報告文檔化也有良好的支持。

Sonar 的功能就是來檢查代碼是否有 BUG。除了檢查代碼是否有 bug 還有其他的功能,比如說:你的代碼注釋率是多少,代碼有一些建議,編寫語法的建議。所以稱之為質(zhì)量管理。

Sonar 的相關(guān)下載和文檔可以在下面的鏈接中找到:http://www.sonarqube.org/downloads/。
需要注意最新版的 Sonar 需要至少 JDK 1.8 及以上版本。

二、部署Sonar

注意:接下來的配置需要基于博文Jenkins+Gitlab實現(xiàn)持續(xù)集成的環(huán)境進行部署的。

部署環(huán)境中所需的軟件包及插件均可通過此鏈接進行下載。
關(guān)于Sonar所需的插件也可通過https://docs.sonarqube.org/display/PLUG 該網(wǎng)址進行下載!

[root@jenkins ~]# wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-5.6.zip
[root@jenkins ~]# unzip sonarqube-5.6.zip
[root@jenkins ~]# mv sonarqube-5.6 /usr/local/sonarqube
[root@jenkins ~]# ln -s /usr/local/sonarqube/bin/linux-x86-64/sonar.sh /usr/local/bin

三、安裝MySQL數(shù)據(jù)庫

sonar需要使用數(shù)據(jù)庫,MySQL、Oracle、SQL server都是支持的,本次博文采用MySQL數(shù)據(jù)庫。如果環(huán)境已經(jīng)存在MySQL數(shù)據(jù)庫,那么就無需再次部署了,創(chuàng)建相應(yīng)的數(shù)據(jù)庫及用戶即可!

為了簡單、快速的部署Mysql數(shù)據(jù)庫,采用腳本的方式安裝Mysql數(shù)據(jù)庫,下載一鍵安裝mysql

友情提示:sonar 好像不支持 mysql 5.5,建議安裝mysql 5.6或更高的版本,提供的腳本安裝的是mysql5.7的版本!

[root@jenkins ~]# ls mysql*
mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz  mysql.sh
[root@jenkins ~]# sh mysql.sh 
Starting MySQL.. SUCCESS! 
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@jenkins ~]# mysql -u root -p123               #腳本提供的root的密碼是123
#登錄mysql數(shù)據(jù)庫
mysql> create database sonar character set utf8 collate utf8_general_ci;
mysql> grant all on sonar.* to 'sonar'@'%' identified by '123.com';
mysql> grant all on sonar.* to 'sonar'@'localhost' identified by '123.com';
mysql>  flush privileges; 

三、配置Sonar

[root@jenkins ~]# vim /usr/local/sonarqube/conf/sonar.properties
#編輯sonar的主配置文件
sonar.jdbc.username=sonar
sonar.jdbc.password=123.com                   #指定連接數(shù)據(jù)庫使用的用戶及密碼
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerforman
#定義連接mysql數(shù)據(jù)庫的地址及端口(默認存在去除注釋即可)
sonar.web.host=0.0.0.0
sonar.web.port=9000                # 定義Sonar提供Web頁面監(jiān)聽的IP地址和端口
#接下來配置sonar支持中文頁面以及支持PHP語言
[root@jenkins ~]# cd /usr/local/sonarqube/extensions/plugins/    
[root@jenkins plugins]# ls *.jar            #確保這個目錄下有這兩個jar包
sonar-l10n-zh-plugin-1.11.jar  sonar-php-plugin-2.9-RC1.jar
[root@jenkins ~]# sonar.sh start                 #啟動sonar
[root@jenkins ~]# tail -2 /usr/local/sonarqube/logs/sonar.log
2020.02.13 14:59:03 INFO  ce[o.s.ce.app.CeServer] Compute Engine is up
2020.02.13 14:59:03 INFO  app[o.s.p.m.Monitor] Process[ce] is up
#確保sonar的日志出現(xiàn)以上兩行內(nèi)容
[root@jenkins ~]# ss -lnt | grep 9000
LISTEN     0      25           *:9000                     *:*      
#確保sonar的端口已經(jīng)在監(jiān)聽

訪問sonar的web頁面,如下:
使用 Sonar 進行代碼質(zhì)量管理及郵件報警
使用 Sonar 進行代碼質(zhì)量管理及郵件報警
使用 Sonar 進行代碼質(zhì)量管理及郵件報警

四、配置Sonar實現(xiàn)代碼掃描

[root@jenkins ~]# wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-3.3.0.1492-linux.zip
[root@jenkins ~]# unzip sonar-scanner-cli-3.3.0.1492-linux.zip 
[root@jenkins ~]# mv sonar-scanner-3.3.0.1492-linux/ /usr/local/sonar-scanner
[root@jenkins ~]# ln -s /usr/local/sonar-scanner/bin/sonar-scanner /usr/local/bin/
[root@jenkins ~]# ln -s /usr/local/sonar-scanner/bin/sonar-scanner /usr/bin
[root@jenkins ~]# vim /usr/local/sonar-scanner/conf/sonar-scanner.properties
sonar.host.url=http://localhost:9000
sonar.sourceEncoding=UTF-8
#以下是從sonar的主配置文件中復(fù)制:/usr/local/sonarqube/conf/sonar.properties中復(fù)制過來的,用于連接數(shù)據(jù)庫
sonar.jdbc.username=sonar
sonar.jdbc.password=123.com
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

五、測試代碼掃描功能

[root@jenkins ~]# unzip testalyzer-master.zip     #該軟件包可從博文開頭連接中獲取
[root@jenkins ~]# cd testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests/
[root@jenkins php-sonar-runner-unit-tests]# cat sonar-project.properties 
#看一下下面的文件中都包含了些什么
sonar.projectKey=org.sonarqube:php-ut-sq-scanner     #自定義秘鑰,如果秘鑰一樣,就會自動覆蓋之前的測試結(jié)果
sonar.projectName=PHP :: PHPUnit :: SonarQube Scanner        #web界面顯示的名稱
sonar.projectVersion=1.0      #版本
sonar.sources=src        #軟件包存放路徑
sonar.tests=tests       #測試路徑
sonar.language=php        #要測試的語言
sonar.sourceEncoding=UTF-8          #編碼格式
sonar.php.coverage.reportPath=reports/phpunit.coverage.xml
sonar.php.tests.reportPath=reports/phpunit.xml
#也就是說在項目里面必須有這個配置文件才可以進行掃描

#測試PHP代碼
[root@jenkins php-sonar-runner-unit-tests]# pwd    #確定在當前路徑
/usr/src/testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests
[root@jenkins php-sonar-runner-unit-tests]# sonar-scanner    #進行測試
#測試js代碼
[root@jenkins php-sonar-runner-unit-tests]# cd /root/testalyzer-master/projects/languages/javascript/javascript-sonar-runner
[root@jenkins javascript-sonar-runner]# sonar-scanner      #進行測試

當執(zhí)行完成對js及PHP的測試后,即可在sonar的web界面看到如下內(nèi)容:
使用 Sonar 進行代碼質(zhì)量管理及郵件報警
點擊之后即可查看詳細信息,如圖:
使用 Sonar 進行代碼質(zhì)量管理及郵件報警

六、配置Jenkins開啟Sonar

登錄到Jenkins的web界面,需要安裝插件,有在線安裝及離線安裝兩種方式,我這里選擇離線安裝,可以自行進行在線安裝的方式。

1)依次點擊:系統(tǒng)管理——>插件管理——>高級,然后下拉頁面:

下載所需插件按照“sonar”——>“gerrit-trigger”——>“sonar-gerrit”進行安裝即可,在線安裝順序:“SonarQube Scanner”——>“Gerrit Trigger”——>"Sonar Gerrit Plugin"
如圖:
使用 Sonar 進行代碼質(zhì)量管理及郵件報警

2)依次點擊:系統(tǒng)管理——>系統(tǒng)設(shè)置,配置如下:

使用 Sonar 進行代碼質(zhì)量管理及郵件報警
使用 Sonar 進行代碼質(zhì)量管理及郵件報警

3)依次點擊:系統(tǒng)管理——>全局工具配置,然后下拉頁面:

使用 Sonar 進行代碼質(zhì)量管理及郵件報警
使用 Sonar 進行代碼質(zhì)量管理及郵件報警

4)進入上篇博文構(gòu)建的項目中,如下:

使用 Sonar 進行代碼質(zhì)量管理及郵件報警
使用 Sonar 進行代碼質(zhì)量管理及郵件報警
使用 Sonar 進行代碼質(zhì)量管理及郵件報警

為了便于區(qū)分,輸入以下代碼:

sonar.projectKey=web-demo
sonar.projectName=web-demo
sonar.projectVersion=1.0
sonar.sources=src
sonar.tests=tests
sonar.language=php
sonar.sourceEncoding=UTF-8   
sonar.php.coverage.reportPath=reports/phpunit.coverage.xml
sonar.php.tests.reportPath=reports/phpunit.xml   

使用 Sonar 進行代碼質(zhì)量管理及郵件報警

5)回到終端,向gitlab提交代碼,即可實現(xiàn)Sonar自動掃描
[root@jenkins ~]# cp -r testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests/* test01/
[root@jenkins ~]# cd test01/
[root@jenkins test01]# git add .
[root@jenkins test01]# git commit -m "test sonar"
[root@jenkins test01]# git push origin master

如圖:
使用 Sonar 進行代碼質(zhì)量管理及郵件報警
如果沒有出現(xiàn)的話,建議上Jenkins頁面查看是否構(gòu)建成功!

七、配置Jenkins實現(xiàn)郵件報警

1)獲取郵箱授權(quán)碼

本次以QQ郵箱為例:
使用 Sonar 進行代碼質(zhì)量管理及郵件報警
使用 Sonar 進行代碼質(zhì)量管理及郵件報警
使用 Sonar 進行代碼質(zhì)量管理及郵件報警
使用 Sonar 進行代碼質(zhì)量管理及郵件報警
使用 Sonar 進行代碼質(zhì)量管理及郵件報警

2)配置郵件報警:

在Jenkins的web界面依次點擊:系統(tǒng)管理——>系統(tǒng)設(shè)置,然后下拉輸入系統(tǒng)管理員的郵箱地址并保存:
使用 Sonar 進行代碼質(zhì)量管理及郵件報警
下拉列表,繼續(xù)填寫!
使用 Sonar 進行代碼質(zhì)量管理及郵件報警

3)配置項目

使用 Sonar 進行代碼質(zhì)量管理及郵件報警
使用 Sonar 進行代碼質(zhì)量管理及郵件報警
使用 Sonar 進行代碼質(zhì)量管理及郵件報警
使用 Sonar 進行代碼質(zhì)量管理及郵件報警
使用 Sonar 進行代碼質(zhì)量管理及郵件報警
使用 Sonar 進行代碼質(zhì)量管理及郵件報警

4)測試

重啟gitlab服務(wù),重新構(gòu)建項目,如下:

[root@jenkins ~]# gitlab-ctl restart

如圖:
使用 Sonar 進行代碼質(zhì)量管理及郵件報警
收到的郵件如下:
使用 Sonar 進行代碼質(zhì)量管理及郵件報警

————————————本文到此為止,感謝閱讀————————————

網(wǎng)頁標題:使用Sonar進行代碼質(zhì)量管理及郵件報警
網(wǎng)頁鏈接:http://www.rwnh.cn/article8/gcghop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開發(fā)、做網(wǎng)站、網(wǎng)站導(dǎo)航、服務(wù)器托管、軟件開發(fā)、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)
石门县| 梁山县| 宝应县| 罗定市| 石台县| 太和县| 宿迁市| 林甸县| 泰兴市| 芜湖县| 武乡县| 望城县| 银川市| 五莲县| 屏南县| 高青县| 宜兴市| 盐津县| 舞阳县| 深泽县| 南皮县| 东阳市| 玉田县| 桐柏县| 墨脱县| 嘉峪关市| 堆龙德庆县| 新巴尔虎左旗| 惠东县| 万安县| 冷水江市| 濉溪县| 榆树市| 微博| 锡林郭勒盟| 涞源县| 邛崃市| 茂名市| 沈丘县| 桦川县| 灵川县|