代碼質(zhì)量檢測(SonarQube)整合中文版+阿里P3C
簡介
SonarQube是一種自動代碼審查工具季研,用于檢測代碼中的錯誤富腊,漏洞和代碼異味腺占。它可以與您現(xiàn)有的工作流程集成,以便在項目分支和拉取請求之間進行連續(xù)的代碼檢查毒租。
連續(xù)代碼檢查,sonar可以單獨使用Maven
稚铣、Gradle
推送代碼檢查,當然也可以在ci引擎進行代碼自動檢查,如: Jenkins
惕医、Git
耕漱。
服務(wù)端
安裝
為了快速啟動sonarqube
實例,我們采用docker的方式抬伺。
sonarqube
默認為英文版的孤个,檢查規(guī)則為自帶的,我們這里采用中文漢化沛简,另外java
語言加入阿里p3c規(guī)則齐鲤。
使用git克隆項目:
git clone https://github.com/purgeteam/sonarqube-start
cd docker-start
sonar-docker-start.yml
模板如下:
# 漢化版+阿里p3c驗證
version: "2"
services:
sonarqube:
image: sonarqube
ports:
- "9000:9000"
networks:
- sonarnet
environment:
- sonar.jdbc.url=jdbc:postgresql://db:5432/sonar
volumes:
- sonarqube_conf:/opt/sonarqube/conf
- sonarqube_data:/opt/sonarqube/data
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_bundled-plugins:/opt/sonarqube/lib/bundled-plugins
- ./plugin/rhinoceros/sonar-pmd-plugin-3.2.0-SNAPSHOT.jar:/opt/sonarqube/extensions/plugins/sonar-pmd-plugin-3.2.0-SNAPSHOT.jar
- ./plugin/sonar-l10n-zh-plugin-1.16.jar:/opt/sonarqube/extensions/plugins/sonar-l10n-zh-plugin-1.16.jar
db:
image: postgres
ports:
- "5432:5432"
networks:
- sonarnet
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=sonar
volumes:
- ./postgres/postgresql:/var/lib/postgresql
- ./postgres/postgresql_data:/var/lib/postgresql/data
networks:
sonarnet:
driver: bridge
volumes:
sonarqube_conf:
sonarqube_data:
sonarqube_extensions:
sonarqube_bundled-plugins:
postgresql:
postgresql_data:
使用docker-compose啟動
docker-compose -d sonar-docker-start.yml up
默認會吧插件掛載進容器內(nèi)部。
啟動ok椒楣,查看控制臺進行訪問localhost:9000
,默認賬號密碼:admin/admin
给郊。
默認規(guī)則配置
雖然已經(jīng)集成了阿里P3C,但是使用的還是默認規(guī)則,這里我們需要設(shè)置為指定規(guī)則捧灰。
以admin賬號登陸
打開 質(zhì)量配置profiles
頁淆九,點擊右上方的創(chuàng)建
按鈕,創(chuàng)建 p3c profiles
首次創(chuàng)建會跳轉(zhuǎn)到代碼規(guī)則配置頁面毛俏,剛新建的 profile 是沒有激活任何規(guī)則的炭庙,需要手動激活
我們需要為剛創(chuàng)建的 p3c profile 激活 p3c 規(guī)則,點擊【激活更多規(guī)則】
跳轉(zhuǎn)到激活頁面,搜索p3c煌寇,如圖焕蹄,都是以[p3c]
開頭的規(guī)則。
批量修改->活動 p3c -> 應(yīng)用 -> 成功
綁定規(guī)則成功后基本完成阀溶,我們返回質(zhì)量配置
腻脏,在java
選擇剛設(shè)置的p3c
設(shè)置為默認。
配置阿里P3C已經(jīng)完成银锻。
Maven代碼檢查
sonarqube
可以使用多種方式進行代碼上傳檢查永品。
我們使用簡單的Maven
觸發(fā)代碼檢查。
添加插件
在項目pom
文件里添加sonar-maven-plugin
插件击纬。
<build>
<plugins>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.6.0.1398</version>
</plugin>
</plugins>
</build>
服務(wù)器相關(guān)配置:
需要將<sonar.host.url>
修改為之前搭建的sonarqube
服務(wù)地址鼎姐。
<!-- SonarQube代碼質(zhì)量檢測 -->
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.host.url>http://127.0.0.1:9000/</sonar.host.url>
</properties>
</profile>
</profiles>
觸發(fā)檢查
pom
配置完成,先將代碼進行構(gòu)建使用Maven
package
命令更振。
完成構(gòu)建執(zhí)行mvn sonar:sonar
命令炕桨,也可以使用idea
maven
可視化界面進行操作。
運行完成殃饿。
查看sonar報告
打開sonar
服務(wù)頁面127.0.0.1:9000
可以看到上傳的項目列表谋作,選擇項目查看分析結(jié)果芋肠,項目健康狀態(tài)等信息乎芳。
問題里可以看到相關(guān)的代碼問題列表,打開單個則查看詳情。
總結(jié)
當然我們只是使用了簡單的Maven
方式推送至SonarQube
服務(wù)奈惑,當然也可以在ci引擎進行代碼自動檢查吭净,如: Jenkins
、Git
肴甸,自動化檢查寂殉,有興趣的小伙伴也可以了解下其他功能,SonarQube官網(wǎng)原在。
示例代碼地址: sonarqube-start
作者GitHub:
Purgeyao 歡迎關(guān)注