前言
SonarQube是一个开源的代码质量管理平台,支持多种编程语言,通过七个维度检查代码质量,包括复杂度、重复性、单元测试覆盖率、代码标准、注释、潜在bug和设计问题。
通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测。
下载
官网地址:https://www.sonarqube.org/downloads/
7.7.0(JDK1.8) 最后支持JDK1.8和MySQL的版本,但是很多插件都不支持该版本了。
Mysql >=5.6 && <8.0(sonarqube从7.8起,不再支持mysql)
链接: https://pan.baidu.com/s/1uXvKgj2LKPj8vmvmtNTVjg?pwd=1rw5
7.9.6(JDK11)
https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.9.6.zip
9.9(JDK17)
https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.9.0.65466.zip
数据库:
PostgreSQL
MySQL
也可以SonarQube内置的数据库
注意
不支持MySQL8,启动会报错。
内嵌数据库只能用于测试场景。
内嵌数据库无法扩展,也无法升级到新版本的SonarQube,并且不能支持将你的数据迁移至其他数据库引擎。
JDK11下载
https://www.oracle.com/java/technologies/downloads/#java11
安装
1 | yum -y install jdk-11.0.27_linux-x64_bin.rpm |
安装位置
1 | /usr/java/jdk-11 |
JDK17下载
https://www.oracle.com/java/technologies/downloads/#java17
安装
1 | yum -y install jdk-17.0.15_linux-x64_bin.rpm |
安装位置
1 | /usr/java/jdk-17 |
环境配置
ES环境配置
问题1
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
每个进程最大同时打开文件数太小,可通过下面2个命令查看当前数量
1 | ulimit -Hn |
修改/etc/security/limits.conf
文件,增加配置,用户退出后重新登录生效
1 | * soft nofile 65536 |
问题2
max number of threads [3818] for user [es] is too low, increase to at least [4096]
最大线程个数太低。
可通过命令查看
1 | ulimit -Hu |
修改/etc/security/limits.conf
文件,增加配置,用户退出后重新登录生效
1 | * soft nproc 65535 |
问题3
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
修改/etc/sysctl.conf
文件,增加配置
1 | vm.max_map_count=262144 |
查看
1 | sysctl -p |
安装PostgreSQL
安装
1 | yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm |
默认的pgsql-13的数据目录在/var/lib/pgsql/13/data/
初始化 修改保存位置
1 | #创建数据目录&修改属主属组 |
修改配置
1 | vi /data/tools/postgresql13/data/postgresql.conf |
修改
1 | listen_addresses = '*' |
修改服务文件
1 | vi /usr/lib/systemd/system/postgresql-13.service |
把原来的
1 | Environment=PGDATA=/var/lib/pgsql/13/data/ |
修改为
1 | Environment=PGDATA=/data/tools/postgresql13/data/ |
启动
1 | systemctl daemon-reload |
开机自启
1 | systemctl enable postgresql-13 |
创建数据库
1 | #先切换到postgres用户 |
执行创建指令
1 | psql |
切换用户
1 | su - |
安装SonarQube7.7
解压
1 | yum install -y unzip |
修改配置
数据库
修改数据库链接
1 | vi /data/tools/sonarqube-7.7/conf/sonar.properties |
PostgreSQL
1 | sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube?currentSchema=public |
MySQL
不推荐 新版本已经不支持MySQL了
按自己的实际情况修改
如果用Mysql,数据库
sonar
要自己创建,项目不会自动创建。
配置
1 | sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance |
内置数据库
内嵌数据库只能用于测试场景。
内嵌数据库无法扩展,也无法升级到新版本的SonarQube,并且不能支持将你的数据迁移至其他数据库引擎。
注释掉mysql连接相关的,
1 | sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance |
解除下面的注释
1 | sonar.embeddedDatabase.port=9092 |
WEB端口
默认的端口号是9000
我这里端口占用了,所以改成别的
1 | sonar.web.port=19000 |
启动
创建SonarQube启动用户(SonarQube内置了elasticsearch,elasticsearch不允许使用root用户启动)
1 | useradd sonar |
设置权限
1 | chown -R sonar:sonar /data/tools/sonarqube-7.7 |
启动服务
1 | su - sonar |
查看服务是否启动
1 | lsof -i:19000 |
设置启动用户配置
1 | vi sonar.sh |
添加
1 | RUN_AS_USER=sonar |
访问
默认用户名/密码为:admin/admin
汉化
登录后, 打开 Administration → Marketplace
, 搜索 chinese pack
, 点击 install
商店中的只支持新版本
老版本可以直接再Github上下载
https://github.com/xuhuisheng/sonar-l10n-zh/releases/tag/sonar-l10n-zh-plugin-1.27
上传到到服务器/data/tools/sonarqube-7.7/extensions/downloads
目录下,并重启sonarqube服务即可。
安装SonarQube9.9
解压
1 | yum install -y unzip |
指定JDK版本
1 | vi /data/tools/sonarqube-9.9.0.65466/bin/linux-x86-64/sonar.sh |
添加
1 | export SONAR_JAVA_PATH="/usr/java/jdk-17/bin/java" |
修改配置
修改配置文件
1 | vi /data/tools/sonarqube-9.9.0.65466/conf/sonar.properties |
数据库
PostgreSQL
1 | sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube?currentSchema=public |
WEB端口
默认的端口号是9000
我这里端口占用了,所以改成别的
1 | sonar.web.port=19000 |
启动
创建SonarQube启动用户(SonarQube内置了elasticsearch,elasticsearch不允许使用root用户启动)
1 | useradd sonar |
设置权限
1 | chown -R sonar:sonar /data/tools/sonarqube-9.9.0.65466 |
设置启动用户配置
1 | vi sonar.sh |
添加
1 | RUN_AS_USER=sonar |
启动服务
1 | su - sonar |
重启
1 | sudo -u sonar /data/tools/sonarqube-9.9.0.65466/bin/linux-x86-64/sonar.sh stop |
查看服务是否启动
1 | lsof -i:19000 |
访问
默认用户名/密码为:admin/admin
汉化
登录后, 打开 Administration → Marketplace
, 搜索 chinese pack
, 点击 install
商店中的只支持新版本
老版本可以直接再Github上下载
https://github.com/xuhuisheng/sonar-l10n-zh/releases/tag/sonar-l10n-zh-plugin-9.9
上传到到服务器/data/tools/sonarqube-9.9.0.65466/extensions/downloads
目录下,并重启sonarqube服务即可。
使用
IDEA
IDEA中使用插件sonarlint连接到SonarQube对代码质量进行管控
sonarLint插件安装
File–Setting-Plugin 输入SonarLint搜索插件