Docker搭建代碼檢測平臺SonarQube并檢測maven項(xiàng)目的流程
1 前言
良好的代碼習(xí)慣是一個優(yōu)秀程序員應(yīng)該具備的品質(zhì),但靠人的習(xí)慣與記憶來保證代碼質(zhì)量,始終不是一件靠譜的事。在計(jì)算機(jī)行業(yè)應(yīng)該深知,只要是人為的,都會有操作風(fēng)險。本文講解如何通過Docker搭建代碼檢測平臺SonarQube,并使用它來檢測maven項(xiàng)目的代碼。
2 Docker安裝SonarQube
2.1 安裝
通過Docker安裝,方便快捷,不需要時直接刪掉容器和鏡像就好了。
# 拉取Sonar鏡像 docker pull sonarqube:8.3.1-community # 運(yùn)行實(shí)例 docker run --name sonarqube -p 9000:9000 -d sonarqube:8.3.1-community
接著訪問:http://localhost:9000/ 就可以了,默認(rèn)管理員用戶和密碼為:admin/admin。
這里選擇免費(fèi)的社區(qū)版Community,另外還有Developer、Enterprise等收費(fèi)版本,功能更強(qiáng)大,具體差別如下:

2.2 指定數(shù)據(jù)庫
一般我們會自己啟動一個數(shù)據(jù)庫如Oracle、MySQL或PostgreSQL。相關(guān)系統(tǒng)信息可以在Administration-System查看,我們不指定的話,默認(rèn)是使用內(nèi)嵌的H2數(shù)據(jù)庫。如果要指定其它數(shù)據(jù)庫,啟動Docker時需要指定:
-e SONARQUBE_JDBC_USERNAME="xxx" \
-e SONARQUBE_JDBC_PASSWORD="***" \
-e SONARQUBE_JDBC_URL="jdbc:mysql://xxx"
使用H2數(shù)據(jù)庫有會以下限制:
內(nèi)嵌數(shù)據(jù)庫只能用于測試場景。內(nèi)嵌數(shù)據(jù)庫無法擴(kuò)展,也無法升級到新版本的SonarQube,并且不能支持將你的數(shù)據(jù)遷移至其他數(shù)據(jù)庫引擎。
所以建議實(shí)際使用時,不要使用內(nèi)嵌的H2數(shù)據(jù)庫。
2.3 進(jìn)入容器
通過命令:
$ docker exec -it 容器ID bash bash-5.0# ls COPYING bin conf data elasticsearch extensions lib logs temp web bash-5.0#
可以進(jìn)入SonarQube容器。在目錄/opt/sonarqube可以查看配置文件、插件、數(shù)據(jù)文件和日志文件等,實(shí)際使用應(yīng)該映射到宿主機(jī)的目錄上,這樣重新啟動一個實(shí)例,數(shù)據(jù)和配置都還在。
2.4 安裝插件
SonarQube提供了強(qiáng)大的插件管理功能,以中文語言包為示例,講解如何安裝插件:
Administration-Marketplace-Plugins,在搜索框輸入Chinese就可以選擇安裝了。

當(dāng)狀態(tài)顯示為Install Pending時,說明插件安裝完成,點(diǎn)擊Restart Server即可生效。
3 通過maven檢測代碼
3.1 通過賬號密碼使用
指定SonarQube平臺的地址,并指定用戶名和密碼,就能檢測代碼了,具體命令如下:
mvn clean verify sonar:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.login=admin -Dsonar.password=admin
3.2 通過Token令牌使用
當(dāng)然,直接使用admin并暴露密碼并不是一個好的習(xí)慣,可以通過配置-權(quán)限-用戶來創(chuàng)建用戶,并創(chuàng)建令牌。

復(fù)制令牌:9656c84090b2481db6ea97b6d14d87d546bff619。
這樣,就可以通過令牌來操作了:
mvn clean verify sonar:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.login=9656c84090b2481db6ea97b6d14d87d546bff619
執(zhí)行命令后,就會在界面上自動新建了一個項(xiàng)目,并給出檢測結(jié)果:

Sonar提供了許多指標(biāo)如測試覆蓋率、復(fù)雜度等,這能大大幫助我們寫出更好的代碼:

4 總結(jié)
SonarQube功能強(qiáng)大,是DevOps的重要工具之一,需要了解和掌握。
到此這篇關(guān)于Docker搭建代碼檢測平臺SonarQube并檢測maven項(xiàng)目的文章就介紹到這了,更多相關(guān)Docker搭建代碼檢測平臺SonarQube并檢測maven項(xiàng)目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何Docker化Python Django應(yīng)用程序
今天小編就為大家分享一篇關(guān)于如何Docker化Python Django應(yīng)用程序的文章,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-09-09
Docker安裝部署neo4j的實(shí)戰(zhàn)過程
Docker是一種容器化技術(shù),可以在Linux系統(tǒng)上部署應(yīng)用程序,下面這篇文章主要給大家介紹了關(guān)于Docker安裝部署neo4j的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05
Docker Stack部署Java Web項(xiàng)目的實(shí)現(xiàn)
本文主要介紹了Docker Stack部署Java Web項(xiàng)目的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
iptables使用及docker的iptables規(guī)則
Docker在創(chuàng)建容器時,會自動添加一些iptables規(guī)則來實(shí)現(xiàn)網(wǎng)絡(luò)隔離和轉(zhuǎn)發(fā)等功能,本文主要介紹了iptables使用及docker的iptables規(guī)則,具有一定的參考價值,感興趣的可以了解一下2023-12-12
以示例講解Clickhouse Docker集群部署以及配置
這篇文章主要介紹了Clickhouse Docker集群部署及配置,示例講解的非常詳細(xì),希望可以幫助到有需要的小伙伴2021-08-08
使用docker-compose搭建mysql主從詳細(xì)過程
這篇文章主要給大家介紹了關(guān)于使用docker-compose搭建mysql主從的相關(guān)資料,Docker-Compose項(xiàng)目是Docker官方的開源項(xiàng)目,負(fù)責(zé)實(shí)現(xiàn)對Docker容器集群的快速編排,需要的朋友可以參考下2024-01-01
解析docker妙用SpringBoot構(gòu)建微服務(wù)實(shí)戰(zhàn)記錄
Spring Boot 是 Spring 開源組織的子項(xiàng)目,是 Spring 組件一站式解決方案,本文通過詳細(xì)案例給大家解析docker妙用SpringBoot構(gòu)建微服務(wù)實(shí)戰(zhàn)記錄,感興趣的朋友跟隨小編一起看看吧2021-11-11

