SonarQube是一種自動代碼審查工具,用於檢測代碼中的錯誤,漏洞和代碼異味。它能夠與您現有的工做流程集成,以便在項目分支和拉取請求之間進行連續的代碼檢查。 java
連續代碼檢查,sonar能夠單獨使用Maven
、Gradle
推送代碼檢查,固然也能夠在ci引擎進行代碼自動檢查,如: Jenkins
、Git
。git
安裝github
爲了快速啓動sonarqube
實例,咱們採用docker的方式。sql
sonarqube
默認爲英文版的,檢查規則爲自帶的,咱們這裏採用中文漢化,另外java
語言加入阿里p3c規則。docker
使用git克隆項目:bash
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啓動maven
docker-compose -d sonar-docker-start.yml up
複製代碼
默認會吧插件掛載進容器內部。ide
啓動ok,查看控制檯進行訪問localhost:9000
,默認帳號密碼:admin/admin
。工具
默認規則配置
雖然已經集成了阿里P3C,可是使用的仍是默認規則,這裏咱們須要設置爲指定規則。
以admin帳號登錄
打開 質量配置profiles
頁,點擊右上方的建立
按鈕,建立 p3c profiles
首次建立會跳轉到代碼規則配置頁面,剛新建的 profile 是沒有激活任何規則的,須要手動激活
咱們須要爲剛建立的 p3c profile 激活 p3c 規則,點擊【激活更多規則】
跳轉到激活頁面,搜索p3c,如圖,都是以[p3c]
開頭的規則。
批量修改->活動 p3c -> 應用 -> 成功
綁定規則成功後基本完成,咱們返回質量配置
,在java
選擇剛設置的p3c
設置爲默認。
配置阿里P3C已經完成。
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 歡迎關注