1.安装
1.1 快速安装
1.说明
# 快速安装尽量不要用于生产环境,生产环境请采用生产安装的方式
2.下载zip安装包
# 此次演示为sonarqube-7.9.1,非lts版本
3.解压到安装位置
4.执行运行脚本
# 运行脚本位于sonarqube-7.9.1/bin
# 不同平台根据bin下目录的不同执行不同的脚本启动即可
# ./sonar.sh console(打印终端信息方式启动,不会到后台,调试问题使用)
# ./sonar.sh start(以服务方式启动,会到后台,正式生产上用)
5.查看运行效果
# http://localhost:9000
1.2 生产安装
# 从版本7.9开始,sonar将不再支持mysql,所以我们采用PostgreSQL
2.使用
1.登陆sonar
# http://localhost:9000 admin/admin
2.创建新项目
# 右上角+->创建新项目
2.1 填写项目key和项目显示名称
# ProjectKey: 项目名(建议使用maven中的groupId:artifactId的形式),比如happigo:wx,对应sonar-project.properties里的sonar.projectKey
# DisplayName: 项目名(显示名称随意命名),比如happigo.wx,对应sonar-project.properties里的sonar.projectName
2.2 提供token
# 可生成一个token,也可以提供一个已有的token,这个主要用在执行分析时标识身份,如果它已被泄露,可以在任何时候在用户帐户中撤销它,对应sonar-project.properties里的sonar.login
2.3 在项目程序中执行分析
# 根据实际情况选择编程语言,操作系统,不同的操作系统会导致接下来要安装的sonar-scanner不同,下载scanner后解压到安装目录,然后将bin目录写入系统PATH,使之能全局执行
# 然后根据提示在项目的根目录执行相应命令即可对代码进行分析
sonar-scanner \
-Dsonar.projectKey=happigo:wx \
-Dsonar.sources=. \
-Dsonar.host.url=http://localhost:9000 \
-Dsonar.login=da01d2c3c6ac0f31edf40dff51c321610492ef55
3.配置项目
# 每次执行分析需要运行那么大一块着实不方便,所以我们在项目的根目录下新建文件sonar-project.properties
# 对于这个演示,该文件内容如下:
wget https://evernote-1258366890.cos.ap-guangzhou.myqcloud.com/1910162032.properties
# 这样配置之后,每次分析,直接在项目根目录下执行sonar-scanner即可,每次执行首先会去sonar-scanner安装位置的conf找sonar-scanner.properties文件,然后再去找项目根下的该名字的文件
3.问题
3.1 sonar无法启动(快速安装)
1.执行启动
cd sonarqube-7.9.1/bin/macosx-universal-64
./sonar.sh console(打印终端信息方式启动)
# 报错如下:
# java.lang.IllegalStateException: SonarQube requires Java 11+ to run
2.排查问题
# 由于需要java 11+,所以我直接安装了jdk13,之后继续执依然报如下错误
# Elasticsearch listening on /127.0.0.1:9001
# jvm 1
# Launch process[[key='es', ipcIndex=1, logFilenamePrefix=es]] from [/Users/spectre/Data/htdocs/sany/sonarqube-7.9.1/elasticsearch]:/Users/spectre/Data/htdocs/sany/sonarqube-7.9.1/elasticsearch/bin/elasticsearch
# Waiting for Elasticsearch to be up and running
# 之后sonar就停止了,没看出具体错误,但可以发现,sonar-7.9.1依赖于elasticsearch,sonar也集成了elasticsearch,会不会是elasticsearch没有启动呢
# 进入sonarqube-7.9.1/logs,查看es.log发现elasticsearch确实没有启动,报找不到主类的错误
# 网上有说是elasticsearch不能以root用户启动等原因,我本来就是以mac用户spectre启动,并不是root,所以不存在这个问题,最后安装jdk11,成功解决问题