目录
随着研发团队的日益壮大,代码质量管理变得越来越有必要。本文只是介绍一种代码静态检测系统搭建的建议和思路,大家也可以理解成是一种设计方案。
1. 拥有(新建)一个gitlab的代码仓库。
2. 项目具备管理员权限,普通开发者角色(developer)没有配置权限。
【如果你没有如下图所示的“设置”选项,就不用瞎折腾了。我就因为没有这个选项,自己瞎鼓捣了好久,而相关负责的同学还在瞎指挥,我从一开始就怀疑是不是自己缺少权限,太悲哀了。】

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

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

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

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

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

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

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

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完成检测后,回调通知检测结果给钉钉机器人,钉钉机器人再把结果展示在钉钉群组里。

整体系统搭建肯定不是从0开始的,肯定会依赖很多开源的工具方案,主要工具如下:
1. SonarQube - Code Quality and Code Security
网址:Code Quality and Code Security | SonarQube
2. sonar-scanner-cli - Run code analysis on SonarQube
网址:GitHub - SonarSource/sonar-scanner-cli-docker: Docker image for SonarScanner CLI
3. sonarqube-community-branch-plugin - A plugin for SonarQube to allow branch analysis
作者简介:😄大家好,我是 Data-Mining(liuzhen007),是一位典型的音视频技术爱好者,前后就职于传统广电巨头和音视频互联网公司,具有丰富的音视频直播和点播相关经验,对 WebRTC、FFmpeg 和 Electron 有非常深入的了解。同时也是 CSDN 博客专家(博客之星)、华为云享专家(共创编辑、十佳博主)、51CTO社区编辑、InfoQ 签约作者,欢迎关注我分享更多干货!😄