使用說明
代碼規範對于每個開發來說重要也重要,說不重要其實也沒那麼重要,簡單點的vs的code analysis也能提供很多的建議,重量級一點的Resharper不僅能提供建議,還提供了更友善快捷的一鍵重構工具,當我需要一個可以和Gitlab內建并且能自動化分析各個項目代碼品質的時候,以上工具可能隻側重在編碼階段給開發人員及時的提醒,并不能滿足我的需要,是以就找到了Soanrqube的這個工具。
以下介紹docker環境下的安裝使用(部分翻譯自官方文檔)
1.從官方下載下傳鏡像
Docker官方鏡像說明位址:https://hub.docker.com/_/sonarqube/
以下拉取最新的8.0的社群版本的鏡像
docker pull sonarqube:8-community-beta
你也可以下載下傳預設最新的穩定版本的鏡像
docker pull sonarqube
2.快速開始使用
以下蔣向您展示如何快速運作示範執行個體,當你準備安裝一個更穩定的版本時,請花一點時間閱讀配置部分。
docker run -d --name sonarqube -p 9000:9000 sonarqube
預設的登陸賬号是admin,密碼也是admin
浏覽器打開:http://localhost:9000 等待自動配置完成就可以登陸了。
3.分析C#代碼
分析之前需要安裝sonarscanner
dotnet tool install --global dotnet-sonarscanner
平台裡建立新項目

建立一個token,用于上傳代碼分析報告
拷貝生成的token備用
建立一個.net core的項目,這裡我建立了一個web api的項目,建立sonar.bat腳本檔案
sonar.bat腳本檔案内容如下:
dotnet sonarscanner begin /k:"WebTest" /d:sonar.host.url="http://localhost:9000" /d:sonar.login="40aa03b189beb63784574556e6e0c6c632668cf9"
dotnet build
dotnet sonarscanner end /d:sonar.login="40aa03b189beb63784574556e6e0c6c632668cf9"
這裡幾個重要的參數
紅色部分:/k為平台建立項目時的項目命名
黃色部分:為建立項目時的token
4.為sonarqube配置postgresql資料庫
// 擷取鏡像
docker pull postgresql
// 啟動postgresql容器
docker run --name db -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -e POSTGRE_DB=sonar -p 5431:5432 postgres
// 啟動sonarqube
docker run --name sonar8 --link db -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=sonar -e SONARQUBE_JDBC_URL=jdbc:postgresql://db:5432/sonar -p 9001:9000 sonarqube:8-community-beta
5.docker-compose直接運作執行個體
docker-compose.yml 檔案内容
version: "2"
services:
sonarqube:
image: sonar8
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
db:
image: postgres
networks:
- sonarnet
environment:
- POSTGRES_USER=sonar
- POSTGRES_PASSWORD=sonar
volumes:
- postgresql:/var/lib/postgresql
- postgresql_data:/var/lib/postgresql/data
networks:
sonarnet:
driver: bridge
volumes:
sonarqube_conf:
sonarqube_data:
sonarqube_extensions:
postgresql:
postgresql_data:
執行運作指令
docker-compose up -d