SonarQube + Github实现自动检测提交的代码

3,493 阅读2分钟

小知识,大挑战!本文正在参与「程序员必备小知识」创作活动

本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。


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文件中填入如下代码:

name: Build
on:
  push:
    branches:
      - main
  pull_request:
    types: [opened, synchronize, reopened]
jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          fetch-depth: 0  # Shallow clones should be disabled for a better relevancy of analysis
      - name: Set up JDK 11   
        uses: actions/setup-java@v1
        with:
          java-version: 11      # 项目使用的jdk版本
      - name: Cache SonarQube packages
        uses: actions/cache@v1
        with:
          path: ~/.sonar/cache
          key: ${{ runner.os }}-sonar
          restore-keys: ${{ runner.os }}-sonar
      - name: Cache Maven packages
        uses: actions/cache@v1
        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