您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關如何安裝部署Sonar,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
Sonar是一個用于代碼質量管理的開放平臺,通過插件機制,Sonar可以集成不同的測試工具、代碼分析工具以及持續(xù)集成工具。與持續(xù)集成工具(如Hudson/Jenkins等)不同,Sonar并不是簡單地把不同代碼檢查結果(例如:FindBugs、PMD等)直接顯示在web UI界面上,而是通過不同的插件對這些結果再加工處理,通過量化的方式度量代碼質量的變化,從而可以方便地對不同規(guī)模和種類的工程進行代碼質量管理。
在對其他工具的支持方面,Sonar 不僅提供了對 IDE 的支持,可以在 Eclipse 和 IntelliJ IDEA 這些工具里聯(lián)機查看結果;同時 Sonar 還對大量的持續(xù)集成工具提供了接口支持,可以很方便地在持續(xù)集成中使用 Sonar。
此外,Sonar 的插件還可以對 Java 以外的其他編程語言提供支持,對國際化以及報告文檔化也有較好的支持。
Sonar 的功能就是來檢查代碼是否有 BUG。除了檢查代碼是否有 bug 還有其他的功能,比如說:你的代碼注釋率是多少,代碼有一些建議,編寫語法的建議。所以稱之為質量管理
關于Sonar的相關下載及文檔可以移步至其官方網站。
注:接下來的配置是基于博文部署Jenkins+Gitlab實現(xiàn)持續(xù)集成的環(huán)境進行部署的。
以下所有的源碼包及插件都可以在此網盤鏈接中下載。
[root@jenkins src]# unzip sonarqube-5.6.zip [root@jenkins src]# mv sonarqube-5.6 /usr/local/sonarqube [root@jenkins src]# ln -s /usr/local/sonarqube/bin/linux-x86-64/sonar.sh /usr/local/bin
sonar需要使用到數據庫,這里我使用MySQL數據庫,如果環(huán)境中存在數據庫,則無需部署,只需要創(chuàng)建相應的庫及賬號即可。
#采用RPM包的方式部署MySQL [root@jenkins mysql]# ls #確定當前目錄下有這幾個包,可以在我文章開頭的鏈接中下載 mysql-community-client-5.7.25-1.el7.x86_64.rpm mysql-community-common-5.7.25-1.el7.x86_64.rpm mysql-community-libs-5.7.25-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm mysql-community-server-5.7.25-1.el7.x86_64.rpm [root@jenkins mysql]# yum localinstall mysql-community-* -y #安裝MySQL [root@jenkins mysql]# grep password /var/log/mysqld.log #在MySQL日志中查看數據庫的root密碼 2019-11-18T14:11:15.565475Z 1 [Note] A temporary password is generated for root@localhost: qzg6X)qt%MQg #上面末尾就是MySQL的默認root密碼 [root@jenkins mysql]# mysql -uroot -p'qzg6X)qt%MQg' #登錄數據庫,密碼需要用單引號引起來 #創(chuàng)建相應的庫及用戶 mysql> alter user 'root'@'localhost' identified by 'Ljz@123.com'; mysql> create database sonar character set utf8 collate utf8_general_ci; mysql> grant all on sonar.* to 'sonar'@'%' identified by 'Ljz@123.com'; mysql> grant all on sonar.* to 'sonar'@'localhost' identified by 'Ljz@123.com'; mysql> flush privileges;
[root@jenkins mysql]# cd /usr/local/sonarqube/conf/ [root@jenkins conf]# vim sonar.properties #編輯主配置文件 sonar.jdbc.username=sonar #定義連接數據庫的用戶 sonar.jdbc.password=Ljz@123.com #指定數據庫用戶的密碼 sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance #用來定義連接數據庫的地址及端口 sonar.web.port=9000 #指定其監(jiān)聽端口 #配置sonar支持中文頁面及支持PHP [root@jenkins src]# cd /usr/local/sonarqube/extensions/plugins/ [root@jenkins plugins]# cp /usr/src/sonar-l10n-zh-plugin-1.11.jar . [root@jenkins plugins]# cp /usr/src/sonar-php-plugin-2.9-RC1.jar . [root@jenkins conf]# sonar.sh start #啟動sonar,給它點初始化的時間 [root@jenkins conf]# tail -2 /usr/local/sonarqube/logs/sonar.log #查看sonar日志 2019.11.18 22:26:16 INFO ce[o.s.ce.app.CeServer] Compute Engine is up 2019.11.18 22:26:16 INFO app[o.s.p.m.Monitor] Process[ce] is up #當出現(xiàn)上面兩行以“up”結尾的則表示sonar啟動正常。 [root@jenkins conf]# netstat -anpt | grep 9000 #確定端口在監(jiān)聽 tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 10655/java
client訪問sonar的web界面:
#配置代碼掃描 [root@jenkins src]# unzip sonar-scanner-cli-3.3.0.1492-linux.zip [root@jenkins src]# mv sonar-scanner-3.3.0.1492-linux/ /usr/local/sonar-scanner [root@jenkins src]# ln -s /usr/local/sonar-scanner/bin/sonar-scanner /usr/local/bin/ [root@jenkins src]# ln -s /usr/local/sonar-scanner/bin/sonar-scanner /usr/bin [root@jenkins src]# cd /usr/local/sonar-scanner/conf/ [root@jenkins conf]# egrep -v '^$|^#' sonar-scanner.properties #修改此配置文件如下 sonar.host.url=http://localhost:9000 sonar.sourceEncoding=UTF-8 #以下是從sonar的主配置文件中復制:/usr/local/sonarqube/conf/sonar.properties中復制過來的,用于連接數據庫 sonar.jdbc.username=sonar sonar.jdbc.password=Ljz@123.com sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
[root@jenkins src]# unzip testalyzer-master.zip [root@jenkins src]# 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 #自定義秘鑰,如果秘鑰一樣,就會自動覆蓋之前的測試結果 sonar.projectName=PHP :: PHPUnit :: SonarQube Scanner #web界面顯示的名稱 sonar.projectVersion=1.0 #版本 sonar.sources=src #軟件包存放路徑 sonar.tests=tests #測試路徑 sonar.language=php #要測試的語言 sonar.sourceEncoding=UTF-8 #編碼格式 #測試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 ../../javascript/javascript-sonar-runner [root@jenkins javascript-sonar-runner]# sonar-scanner #進行測試
當執(zhí)行完成對js及PHP的測試后,即可在sonar的web界面看到如下內容:
點擊進入后可以看到詳細信息:
登錄到Jenkins的web界面,需要安裝插件,有在線安裝及離線安裝兩種方式,我這里選擇離線安裝,可以自行進行在線安裝的方式。
1、依次點擊:系統(tǒng)管理===》插件管理===》高級,然后下拉頁面:
下載我提供的插件,按照以下順序依次添加,若是在線安裝,依次搜索“SonarQube Scanner”、“Gerrit Trigger”、"Sonar Gerrit Plugin"進行安裝即可:
2、依次點擊:系統(tǒng)管理===》系統(tǒng)設置,然后配置如下:
3、依次點擊:系統(tǒng)管理===》全局工具配置,然后單擊如下:
4、進入上個博文中構建的項目,然后點擊進入,如下:
在終端復制一下代碼:
[root@jenkins sonar-scanner]# cd /usr/src/testalyzer-master/projects/languages/php/php-sonar-runner-unit-tests #切換至此路徑 [root@jenkins php-sonar-runner-unit-tests]# egrep -v '^$|^#' sonar-project.properties #復制以下代碼 sonar.projectKey=org.sonarqube:php-ut-sq-scanner sonar.projectName=PHP :: PHPUnit :: SonarQube Scanner 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
5、然后在圖中粘貼復制的代碼(為了方便區(qū)分測試結果,建議修改“sonar.projectKey”的值):
6、回到終端,向gitlab提交代碼,即可實現(xiàn)自動sonar掃描
[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]# cp -r * ~/ test01/ #將測試代碼復制到本地git庫(這個庫是我在上篇博文中創(chuàng)建的,如果沒有本地git庫,可以再次克隆一下) [root@jenkins php-sonar-runner-unit-tests]# cd ~/test01/ #切換至本地git庫 [root@jenkins test01]# rm -rf sonar-project.properties #刪除這個文件,不需要使用它來給我們指定要測試的代碼了 #因為我們在剛才的web界面已經將其配置文件寫在了web界面。優(yōu)先使用web界面配置的檢測代碼。 #不刪除這個文件也行 #然后提交到遠端的gitlab庫 [root@jenkins test01]# git add * [root@jenkins test01]# git commit -m "test sonar" [root@jenkins test01]# git push origin master
當提交到遠端gitlab庫后,即可看到sonar的web界面已經進行了代碼掃描,并且顯示出了掃描結果,如下:
這里先附一個所有操作的截圖,因為我的做完以后,有些小問題,已經凌晨十二點半了,懶的排錯了,可以結合下面這張圖做郵件報警:
開始配置郵件報警:
在Jenkins的web界面依次點擊:系統(tǒng)管理===》系統(tǒng)設置,然后在下面輸入系統(tǒng)管理員的郵箱地址并保存:
再次點擊:系統(tǒng)管理===》系統(tǒng)設置
配置項目,如下:
增加構建后的操作:
其實是增加兩個構建后的操作,如下(最后我的郵件發(fā)送報警有問題,建議下面的E-mail Notification和Editable Email Notification依次添加,不要這兩個一起添加了):
然后下拉頁面,點擊如下:
至此,郵箱報警就配置完成了,此時,可以在控制臺關閉gitlab或者手動構建代碼,測試是否可以收到報警郵件。
以上就是如何安裝部署Sonar,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。