Skip to content
On this page

构建篇 - 代码审查卡点


前言

前面已经将构建的流程完全的搭建完毕,那么在构建流程中,我们也插入了一个代码审查的环节,除了本身的各种语言独有的自动化测试之外,可以选择 Sonarqube 对所有的项目做一个初步的静态代码检查。

image.png

Sonarqube

为什么选择 Sonarqube

第一首选是社区版是免费使用的,并且社区版本的功能就已经非常多,基本满足常用的功能。

image.png

第二个如下图所示,支持的语言非常多,已经涵盖了我们大部分常规的项目开发语言。

image.png

安装

分析完为什么选择 Sonarqube 之后,接下来我们要开始安装 Sonarqube 了。这里我们选择在之前搭建的虚拟机去安装 sonar。

image.png

  1. 下载对应的安装包

wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.1.0.47736.zip

image.png

  1. 新建一个用户
    
groupadd sonar
useradd sonar -g sonar -p sonar
  1. 新建sonarqube目录
    
mkdir -p /usr/local/sonarqube
chown  sonar:sonar /usr/local/sonarqube
  1. 解压软件包到目录 /usr/local/sonarqube
    
su - sonar
unzip -d /usr/local/sonarqube  sonarqube-9.1.0.47736.zip
  1. 启动 sonar

/usr/local/sonarqube/sonarqube-7.5/bin/linux-x86-64/sonar.sh start

浏览器打开 http://192.168.160.88:9000/ 即可,初始化的用户密码都是:admin

image.png

  1. 安装汉化版本

emm,全英文看着不对劲,进入 marketPlace 搜汉化的 pack, 安装重启即可。

image.png

注意点

至此,sonar 的安装已经完成,下面有几个注意点:

  1. 新版的 sonar jdk 的环境要在 11 以上,如果是全新的系统,自带的 jdk 版本都很低,需要升级。如果没有选择最新版本的 sonar,那么要看看对应版本的 jdk 是多少,安装对应的才能正常启动。
  2. 权限一定要配置好,root 用户是不能启动 sonar 的,所以插件的 sonar 用户权限要给足。
  3. 这里没有使用 mysql 去替换数据库,这样的 sonar 仅仅作于测试使用,生产的使用的话,需要替换数据库,不然后期的升级、数据迁移都不能进行

Sonar 的使用

前面我们安装的是 Sonar 的服务端,对开发来说,还需要接入对应的客户端 sonar-scanner 才能正常使用。

创建项目

按照下图步骤执行,直到拿到对应项目的 token。

image.png

image.png

image.png

image.png

image.png

sonarscanner

  1. 点击下载对应的 scanner-cli 安装包

解压完毕之后,运行如下命令接口(我是 windows 环境,各位同学安装对应的环境即可)

image.png

  1. 创建 sonar-project.properties

在项目根路径创建一个 sonar-project.properties,配置内容如下:

sh
# must be unique in a given SonarQube instance
sonar.projectKey=test-h5

sonar.login=6ff8c3e3a6b2114c3814a80140f858e44c0b201a

# --- optional properties ---
sonar.sources=.

# defaults to project key
sonar.projectName=test-h5

sonar.host.url=http://192.168.160.88:9000

配置完毕之后,在根目录运行 sonar-scanner.bat

image.png

如上执上述命令行完毕之后,即可得到如下的结果,可以看到这个测试项目的质量非常好,没有任何问题,这是理想的状态,现实中肯定不存在这种情况。

image.png

引入构建流程

引入构建流程就非常简单了,得益我们上一轮对 Jenkins 脚本的优化,我们只需要在对应的打包机上配置好 sonar-scanner,写入对应的脚本即可。

同时 sonar 还提供了 Jenkins 的插件,以及直接对接 Gitlab 的拓展功能,想要尝试的同学可以根据文档自己尝试一下。

本章小结上述

本章是 Sonarqube 的一个常规使用。

个人建议,除了常规的 eslint 之外,还是可以尝试一下 sonar,它除了提供代码检测之后,也对项目、分支整体有个管理、对比的作用。

image.png

在多项目以及规模稍大的团队中还是非常有效果的,同时 sonar 也提供了 web api,所以我们可以最后流程打通中,可以尝试将 sonar 集成到 devops 项目中。

如果你有什么疑问,欢迎在评论区提出,或者加群沟通。 👏