Docker搭建代碼檢測平臺SonarQube並檢測maven項目

1 前言

良好的代碼習慣是一個優秀程序員應該具有的品質,但靠人的習慣與記憶來保證代碼質量,始終不是一件靠譜的事。在計算機行業應該深知,只要是人爲的,都會有操做風險。本文講解如何經過Docker搭建代碼檢測平臺SonarQube,並使用它來檢測maven項目的代碼。mysql

2 Docker安裝SonarQube

2.1 安裝

經過Docker安裝,方便快捷,不須要時直接刪掉容器和鏡像就行了。程序員

# 拉取Sonar鏡像
docker pull sonarqube:8.3.1-community
# 運行實例
docker run --name sonarqube -p 9000:9000 -d sonarqube:8.3.1-community

接着訪問:http://localhost:9000/ 就能夠了,默認管理員用戶和密碼爲:admin/adminweb

這裏選擇免費的社區版Community,另外還有DeveloperEnterprise等收費版本,功能更強大,具體差異以下:sql

Plan&Price

2.2 指定數據庫

通常咱們會本身啓動一個數據庫如OracleMySQLPostgreSQL。相關係統信息能夠在Administration-System查看,咱們不指定的話,默認是使用內嵌的H2數據庫。若是要指定其它數據庫,啓動Docker時須要指定:docker

-e SONARQUBE_JDBC_USERNAME="xxx" \
-e SONARQUBE_JDBC_PASSWORD="***" \
-e SONARQUBE_JDBC_URL="jdbc:mysql://xxx"

使用H2數據庫有會如下限制:數據庫

內嵌數據庫只能用於測試場景。內嵌數據庫沒法擴展,也沒法升級到新版本的SonarQube,而且不能支持將你的數據遷移至其餘數據庫引擎。bash

因此建議實際使用時,不要使用內嵌的H2數據庫。微信

2.3 進入容器

經過命令:elasticsearch

$ docker exec -it 容器ID bash

bash-5.0# ls
COPYING        bin            conf           data           elasticsearch  extensions     lib            logs           temp           web
bash-5.0#

能夠進入SonarQube容器。在目錄/opt/sonarqube能夠查看配置文件、插件、數據文件和日誌文件等,實際使用應該映射到宿主機的目錄上,這樣從新啓動一個實例,數據和配置都還在。maven

2.4 安裝插件

SonarQube提供了強大的插件管理功能,以中文語言包爲示例,講解如何安裝插件:

Administration-Marketplace-Plugins,在搜索框輸入Chinese就能夠選擇安裝了。

Plugin

當狀態顯示爲Install Pending時,說明插件安裝完成,點擊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令牌使用

固然,直接使用admin並暴露密碼並非一個好的習慣,能夠經過配置-權限-用戶來建立用戶,並建立令牌。

Token

複製令牌:9656c84090b2481db6ea97b6d14d87d546bff619

這樣,就能夠經過令牌來操做了:

mvn clean verify sonar:sonar -Dsonar.host.url=http://localhost:9000 -Dsonar.login=9656c84090b2481db6ea97b6d14d87d546bff619

執行命令後,就會在界面上自動新建了一個項目,並給出檢測結果:

Sonar Project

Sonar提供了許多指標如測試覆蓋率、複雜度等,這能大大幫助咱們寫出更好的代碼:

指標

4 總結

SonarQube功能強大,是DevOps的重要工具之一,須要瞭解和掌握。


歡迎訪問南瓜慢說 www.pkslow.com獲取更多精彩文章!

歡迎關注微信公衆號<南瓜慢說>,將持續爲你更新...

多讀書,多分享;多寫做,多整理。

相關文章
相關標籤/搜索