目录

前言

正文

一、准备工作

二、操作步骤

三、模块关系图谱

四、工具


前言

随着研发团队的日益壮大,代码质量管理变得越来越有必要。本文只是介绍一种代码静态检测系统搭建的建议和思路,大家也可以理解成是一种设计方案。

正文

一、准备工作

1. 拥有(新建)一个gitlab的代码仓库。

2. 项目具备管理员权限,普通开发者角色(developer)没有配置权限。

【如果你没有如下图所示的“设置”选项,就不用瞎折腾了。我就因为没有这个选项,自己瞎鼓捣了好久,而相关负责的同学还在瞎指挥,我从一开始就怀疑是不是自己缺少权限,太悲哀了。】

gitlab启用审计日志_gitlab

3.拥有sonar和epona的账号。

二、操作步骤

1. 在 Sonar 中创建项目,定义并填写项目的名称(display name)和 Project Key,注意:你可以不记得项目名称,但是一定要记得Project Key,具体如下图所示:

gitlab启用审计日志_代码检测_02

2. 在钉钉中建立代码静态检测结果通知群组(一般至少要拉三个人才能建群),建好群后添加机器人,群组设置-职能群助手-机器人管理-添加机器人,如下图所示:

gitlab启用审计日志_gitlab启用审计日志_03

然后,选择“自定义”选项,图标如下图所示:

gitlab启用审计日志_gitlab_04

填写机器人名称,同时勾选“加签”,具体操作如下图所示:

gitlab启用审计日志_Code_05

注意:勾选“加签”时,一定要记得保存密钥,之后就“消失”了。点击“完成”按钮后,会出现钉钉hook的通知地址,也记得保存下来。

gitlab启用审计日志_sonar_06

3. 在 epona 中创建钉钉机器人,具体操作和注意事项如下图所示:

gitlab启用审计日志_gitlab_07

4. 在gitlab项目中添加CICD变量,其中,BOT_ALIAS 和钉钉机器人的唯一标识保持一致,PROJECT_KEY 和sonar中定义的项目 Project Key 保持一致,具体如下图所示:

gitlab启用审计日志_sonar_08

5. 填写 .gitlab-ci.yml 配置文件,可以参考下面的示例内容:

stages:
  - code_quality
  - code_report

SONAR 分析:
  tags:
    - docker
  stage: code_quality
  image: harbor.***.com/sonar-scanner/sonar-scanner-cli:latest
  variables:
    SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar"  # Defines the location of the analysis task cache
    GIT_DEPTH: "0"  # Tells git to fetch all the branches of the project, required by the analysis task
  cache:
    key: "${CI_JOB_NAME}"
    paths:
      - .sonar/cache
  script:
    - sonar-scanner
      -Dsonar.verbose=false
      -Dsonar.projectKey=electron
      -Dsonar.projectName=electron
      -Dsonar.projectVersion=lozen/test
      -Dsonar.sources=.
      -Dsonar.qualitygate.wait=true
      #-Dsonar.exclusions=src/third_party/**/*,src/build/**/*,src/buildtools/**/*,src/tools/**/*,src/test/**/*,src/testing/**/*
      #-Dsonar.test.exclusions=src/test/**/*,src/testing/**/*
  allow_failure: true
  only:
    - lozen/test
    - dev
    - release
    - master
 
SONAR 报告:
  tags:
    - docker
  stage: code_report
  image: ${DOCKER_REGISTRY}/cicd/sonarnotify:latest
  script:
    - sonarnotify
  only:
    - lozen/test
    - dev
    - release
    - master

三、模块关系图谱

整个系统包括四个大的模块,其中,模块之间的关系图谱如下图所示。这个系统的工作原理就是研发人员提交新的代码到Gitlab仓库后,Gitlab仓库会把代码push到Sonar代码静态检测模块,然后由Sonar完成检测后,回调通知检测结果给钉钉机器人,钉钉机器人再把结果展示在钉钉群组里。

gitlab启用审计日志_sonar_09

四、工具

整体系统搭建肯定不是从0开始的,肯定会依赖很多开源的工具方案,主要工具如下:

1. SonarQube - Code Quality and Code Security


2. sonar-scanner-cli - Run code analysis on SonarQube


LI

3.  sonarqube-community-branch-plugin - A plugin for SonarQube to allow branch analysis