程式碼質量檢測(SonarQube)整合中文版+阿里P3C
程式碼質量檢測(SonarQube)整合中文版+阿里P3C
簡介
SonarQube是一種自動程式碼審查工具,用於檢測程式碼中的錯誤,漏洞和程式碼異味。它可以與您現有的工作流程整合,以便在專案分支和拉取請求之間進行連續的程式碼檢查。
連續程式碼檢查,sonar可以單獨使用Maven
、Gradle
推送程式碼檢查,當然也可以在ci引擎進行程式碼自動檢查,如: Jenkins
、Git
。
服務端
安裝
為了快速啟動sonarqube
例項,我們採用docker的方式。
sonarqube
預設為英文版的,檢查規則為自帶的,我們這裡採用中文漢化,另外java
語言加入阿里p3c規則。
使用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
預設會吧外掛掛載進容器內部。
啟動ok,檢視控制檯進行訪問localhost:9000
,預設賬號密碼:admin/admin
。
預設規則配置
雖然已經集成了阿里P3C,但是使用的還是預設規則,這裡我們需要設定為指定規則。
以admin賬號登陸
開啟 質量配置profiles
頁,點選右上方的建立
按鈕,建立 p3c profiles
首次建立會跳轉到程式碼規則配置頁面,剛新建的 profile 是沒有啟用任何規則的,需要手動啟用
我們需要為剛建立的 p3c profile 啟用 p3c 規則,點選【啟用更多規則】
跳轉到啟用頁面,搜尋p3c,如圖,都是以[p3c]
開頭的規則。
批量修改->活動 p3c -> 應用 -> 成功
繫結規則成功後基本完成,我們返回質量配置
,在java
選擇剛設定的p3c
設定為預設。
配置阿里P3C已經完成。
Maven程式碼檢查
sonarqube
可以使用多種方式進行程式碼上傳檢查。
我們使用簡單的Maven
觸發程式碼檢查。
新增外掛
在專案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>
伺服器相關配置:
需要將<sonar.host.url>
修改為之前搭建的sonarqube
服務地址。
<!-- SonarQube程式碼質量檢測 -->
<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>
觸發檢查
pom
配置完成,先將程式碼進行構建使用Maven
package
命令。
完成構建執行mvn sonar:sonar
命令,也可以使用idea
maven
視覺化介面進行操作。
執行完成。
檢視sonar報告
開啟sonar
服務頁面127.0.0.1:9000
可以看到上傳的專案列表,選擇專案檢視分析結果,專案健康狀態等資訊。
問題裡可以看到相關的程式碼問題列表,開啟單個則檢視詳情。
總結
當然我們只是使用了簡單的Maven
方式推送至SonarQube
服務,當然也可以在ci引擎進行程式碼自動檢查,如: Jenkins
、Git
,自動化檢查,有興趣的小夥伴也可以瞭解下其他功能,SonarQube官網。
示例程式碼地址: sonarqube-start
作者GitHub:
Purgeyao 歡迎關注