SonarQube + Github實現自動檢測提交的程式碼

語言: CN / TW / HK

highlight: atom-one-dark

小知識,大挑戰!本文正在參與「程式設計師必備小知識」創作活動

本文已參與「掘力星計劃」,贏取創作大禮包,挑戰創作激勵金。


SonarQube是一個自動程式碼審查工具,用於檢測程式碼中的錯誤、漏洞和不規範的編碼風格。本文實現利用GithubAction實現在程式碼提交時自動使用SonarQube審查程式碼。

建立並安裝Github APP

  1. 進去github設定頁面 image.png

  2. 點選Developer settings image.png

  3. 點選New Github App按鈕建立Github App image.png

  4. 填寫資訊並設定許可權 image.png

image.png

image.png

image.png

image.png

image.png

出現此頁面表示建立成功 image.png

生成客戶端金鑰 image.png

生成私鑰並匯入 image.png

安裝 image.png

image.png

配置SonarQube

SonarQube中配置配置Github

SonarQube中配置的ALM整合,配置Github image.png

根據剛才建立Github APP生成的資訊建立Github配置 image.png

建立SonarQube token

  1. 點選新建專案 image.png

  2. 使用手工模式建立 image.png

  3. 填寫專案標識和專案名 image.png

  4. 輸入字元點選建立 image.png

  5. 記錄生成的token, 之後要用 image.png

編寫Github Action

建立Github Action以便在提交程式碼時自動分析並將分析結果傳到SonarQube image.png

.github/workflows/目錄下建立build.yml檔案 image.png

build.yml檔案中填入如下程式碼: xml name: Build on: push: branches: - main pull_request: types: [opened, synchronize, reopened] jobs: build: name: Build runs-on: ubuntu-latest steps: - uses: actions/[email protected] with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - name: Set up JDK 11 uses: actions/[email protected] with: java-version: 11 # 專案使用的jdk版本 - name: Cache SonarQube packages uses: actions/[email protected] with: path: ~/.sonar/cache key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar - name: Cache Maven packages uses: actions/[email protected] with: path: ~/.m2 key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-m2 - name: Build and analyze env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }} run: mvn -B verify org.sonarsource.scanner.maven:sonar-maven-plugin:sonar

此專案使用Maven構建

建立專案變數,這個環境變數會在上圖中配置的Action中用到 image.png

建立變數SONAR_TOKEN,值為上面在SonarQube生成的token image.png

建立變數SONAR_HOST_URL,值為上面在SonarQube的地址 image.png

提交程式碼觸發Action

提交程式碼時會出現配置的Action,分析程式碼並分析結果傳到SonarQubeimage.png

進入SonarQube的專案頁面,可以看到該專案已經出現 image.png