天天看點

Sonarqube C#靜态代碼規範檢查(一)

使用說明

代碼規範對于每個開發來說重要也重要,說不重要其實也沒那麼重要,簡單點的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      

平台裡建立新項目

Sonarqube C#靜态代碼規範檢查(一)

 建立一個token,用于上傳代碼分析報告

Sonarqube C#靜态代碼規範檢查(一)

 拷貝生成的token備用

Sonarqube C#靜态代碼規範檢查(一)

 建立一個.net core的項目,這裡我建立了一個web api的項目,建立sonar.bat腳本檔案

Sonarqube C#靜态代碼規範檢查(一)

 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      

繼續閱讀