代码质量检测神器--SonarQube 在MacOS上搭建本地环境

3,079 阅读3分钟

SonarQube是什么?

SonarQube 是一个用于代码质量管理的开源平台,通过 SonarQube 提供的代码扫描、质量阈值卡点等质量红线,可以提升系统的可靠性,提前捕获和提示代码中的错误,从而避免未定义的行为影响到用户,保证业务质量,也能确保管理的代码库干净并且可维护,以便提高开发人员的开发效率。

SonarQube中重要3个组件:

  1. SonarScanner:扫描器,负责将源文件进行代码分析,并将分析后的报告发送给SonarQube服务器
  2. SonarQube Server:SonarQube服务器,负责处理分析报告,后台管理等
  3. Database server:数据库服务器,负责存储数据

image.png

环境搭建

  1. Java 环境依赖
$ java -version
openjdk version "11.0.17" 2022-10-18
OpenJDK Runtime Environment Temurin-11.0.17+8 (build 11.0.17+8)
OpenJDK 64-Bit Server VM Temurin-11.0.17+8 (build 11.0.17+8, mixed mode)
  1. SonarQube 镜像下载

链接:hub.docker.com/_/sonarqube…

$ docker pull sonarqube
$> docker volume create --name sonarqube_data
$> docker volume create --name sonarqube_logs
$> docker volume create --name sonarqube_extensions
docker run -d --name sonarqube -v sonarqube_logs:/opt/sonarqube/logs -v sonarqube_data:/opt/sonarqube/data -v sonarqube_extensions:/opt/sonarqube/extensions -e --restart=always SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true -p 9000:9000 sonarqube:latest

不出意外的话,此时可以访问 http://localhost:9000 打开 SonarQube 界面,第一次启动较慢,稍等一下....

默认账户为admin/admin, 首次登录需要调整一下密码,设置一个自己喜欢的哈...

  1. 本教程选择手动创建项目,其他可自行研究. 根据提示一步步去创建项目...

image.png

image.png

在这一步要生成Token, 并且最好是把生成token事先保存下来,本教程生成的token为:

**sqp_c49f72acc5d3dac73b6ea84622143efcc41fcb79**

接下来选择配置选项,因是前端项目,这次选择 Other, 系统环境根据自己喜好来选择哈,本教程选择 macOS

image.png

  1. 根据提示下载并安装SonarScanner

Scanner: docs.sonarqube.org/9.9/analyzi…

下载后解压重命名后拷贝到 /usr/local/ 目录下,设置环境变量,不然会提示找不到相关命令

$ vi ~/.bash_profile  
export SONAR_RUNNER_HOME=/usr/local/sonar-scanner
export PATH=$PATH:$SONAR_RUNNER_HOME/bin

完成上述步骤后,记得在命令行启用:

$ source ~/.bash_profile

设置好以后,通过以下方式验证一下,看到如下信息就表示设置成功了

> $ sonar-scanner -v
INFO: Scanner configuration file: /usr/local/sonar-scanner/conf/sonar-scanner.properties
INFO: Project root configuration file: NONE
INFO: SonarScanner 4.8.0.2856
INFO: Java 11.0.17 Eclipse Adoptium (64-bit)
INFO: Mac OS X 13.2.1 x86_64

修改sonar-scanner文件夹下的 conf/sonar-scanner.properties配置文件,打开以下两行代码注释,后保存

#----- Default SonarQube server
sonar.host.url=http://localhost:9000
#----- Default source code encoding
sonar.sourceEncoding=UTF-8
  1. 进入到项目要目录执行以下命令:
sonar-scanner \
  -Dsonar.projectKey=wui-remix \
  -Dsonar.sources=. \
  -Dsonar.host.url=http://localhost:9000 \
  -Dsonar.login=sqp_c49f72acc5d3dac73b6ea84622143efcc41fcb79

稍等一会,直到看到类似以下输出就说明成功了,稍后刷新下http://localhost:9000 就好...

image.png

  1. 看到这个界面,你就可以愉快的玩耍了...

image.png

  1. SonarQube 初步入门已完成,高级进阶需要你自己去慢慢体会及研究了
    • 设置数据库,如PostgreSQL...
    • 集成Gitlab...
    • ...
  2. 官方是默认是英文版本,像我这样英文不太好的,需要考虑汉化一下,参见下图

image.png 再点击 I understand the risk 之后,就可以搜索 Chinese 来进行安装了

image.png

点击之后不出意外的话,那说明你是幸运的,安装成功后直接Restart, 刷新就可以变成中文版本了...

image.png

我在学习时还是出现了点意外,提示出联系管理员,?!admin 这就是管理员呢... 以前端多年的经验,这里就需要放大招了,直接F12, 一切都明白了...

image.png 不过我还是没有通过这种方式解决问题哦, 谁有解决方案,欢迎在评论区留言,我暂时换个方式去解决了

手动去下载安装吧,暂时可放在Downloads目录:sonar-l10n-zh-plugin-9.9.jar

下载地址:github.com/xuhuisheng/…

执行以下命令,重启,一切都OK了...

> $ cd ~/Downloads
> $ docker cp sonar-l10n-zh-plugin-9.9.jar sonarqube:/opt/sonarqube/extensions/plugins

大功告成,最后来显摆一下吧

image.png

再回到 3. 去手动创建一个项目,扫描一下,你会发现....^_^

项目根目录创建 sonar-project.properties文件:

# Sonar项目标识,在 SonarQube实例下必须唯一
sonar.projectKey=sonar-web
# 在 SonarQube UI 中显示的项目名称
sonar.projectName=sonar-web
# Sonar 令牌
sonar.login=sqp_9a85a2105bc006eb02a88ab18690b9df0dee0d84
# 项目版本
sonar.projectVersion=0.3.0
# 项目代码与 sonar-project.properties 文件的相对路径
sonar.sources=.
# 代码文件的编码
sonar.sourceEncoding=UTF-8
# 排除不参与代码分析的文件或目录
sonar.exclusions=node_modules/**/*,.idea/**/*, .vscode/**/*

  1. 参考文档:
  2. 其他类似工具:

image.png