代码质量管理-SonarQube安装与使用

前言

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
2
ulimit -Hn
ulimit -Sn

修改/etc/security/limits.conf文件,增加配置,用户退出后重新登录生效

1
2
*               soft    nofile          65536
* hard nofile 65536

问题2

max number of threads [3818] for user [es] is too low, increase to at least [4096]

最大线程个数太低。

可通过命令查看

1
2
ulimit -Hu
ulimit -Su

修改/etc/security/limits.conf文件,增加配置,用户退出后重新登录生效

1
2
*               soft    nproc           65535
* hard 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
2
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum install -y postgresql13-server

默认的pgsql-13的数据目录在/var/lib/pgsql/13/data/

初始化 修改保存位置

1
2
3
4
5
6
7
8
9
#创建数据目录&修改属主属组
mkdir -p /data/tools/postgresql13/
chown postgres: -R /data/tools/postgresql13/

#初始化pgsql(指定数据目录)
sudo -u postgres /usr/pgsql-13/bin/initdb --encoding=UTF-8 --username=postgres --pgdata=/data/tools/postgresql13/data
#--encoding 字符集
#--username 启动用户
#--pgdata 数据目录(数据目录如已存在会报错)

修改配置

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
2
systemctl daemon-reload
systemctl start postgresql-13

开机自启

1
systemctl enable postgresql-13

创建数据库

1
2
#先切换到postgres用户
su - postgres

执行创建指令

1
2
3
4
5
psql
create user sonarqube with password 'sonarqube';
create database sonarqube owner sonarqube;
grant all on database sonarqube to sonarqube;
\q

切换用户

1
su -

安装SonarQube7.7

解压

1
2
3
4
5
yum install -y unzip                    
unzip sonarqube-7.7.zip -d /data/tools/
cd /data/tools/sonarqube-7.7/sonarqube-7.7
mv ./* ../
rm -rf /data/tools/sonarqube-7.7/sonarqube-7.7

修改配置

数据库

修改数据库链接

1
vi /data/tools/sonarqube-7.7/conf/sonar.properties

PostgreSQL

1
2
3
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube?currentSchema=public
sonar.jdbc.username=sonarqube
sonar.jdbc.password=sonarqube

MySQL

不推荐 新版本已经不支持MySQL了

按自己的实际情况修改

如果用Mysql,数据库sonar要自己创建,项目不会自动创建。

配置

1
2
3
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.username=root
sonar.jdbc.password=123456

内置数据库

内嵌数据库只能用于测试场景。

内嵌数据库无法扩展,也无法升级到新版本的SonarQube,并且不能支持将你的数据迁移至其他数据库引擎。

注释掉mysql连接相关的,

1
2
3
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.username=root
sonar.jdbc.password=123456

解除下面的注释

1
sonar.embeddedDatabase.port=9092

WEB端口

默认的端口号是9000

我这里端口占用了,所以改成别的

1
sonar.web.port=19000

启动

创建SonarQube启动用户(SonarQube内置了elasticsearch,elasticsearch不允许使用root用户启动)

1
useradd sonar

设置权限

1
2
chown -R sonar:sonar /data/tools/sonarqube-7.7
chmod -R 775 /data/tools/sonarqube-7.7

启动服务

1
2
3
4
5
su - sonar                                 
cd /data/tools/sonarqube-7.7/bin/linux-x86-64
chmod +x sonar.sh
chmod +x wrapper
./sonar.sh start

查看服务是否启动

1
lsof -i:19000

设置启动用户配置

1
vi sonar.sh

添加

1
RUN_AS_USER=sonar

访问

http://localhost:19000

默认用户名/密码为: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
2
3
yum install -y unzip   
unzip sonarqube-9.9.0.65466.zip -d /data/tools/
cd /data/tools/sonarqube-9.9.0.65466

指定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
2
3
sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube?currentSchema=public
sonar.jdbc.username=sonarqube
sonar.jdbc.password=sonarqube

WEB端口

默认的端口号是9000

我这里端口占用了,所以改成别的

1
sonar.web.port=19000

启动

创建SonarQube启动用户(SonarQube内置了elasticsearch,elasticsearch不允许使用root用户启动)

1
useradd sonar

设置权限

1
2
chown -R sonar:sonar /data/tools/sonarqube-9.9.0.65466
chmod -R 775 /data/tools/sonarqube-9.9.0.65466

设置启动用户配置

1
vi sonar.sh

添加

1
RUN_AS_USER=sonar

启动服务

1
2
3
4
su - sonar
cd /data/tools/sonarqube-9.9.0.65466/bin/linux-x86-64
chmod +x sonar.sh
./sonar.sh start

重启

1
2
3
sudo -u sonar /data/tools/sonarqube-9.9.0.65466/bin/linux-x86-64/sonar.sh stop
sudo -u sonar /data/tools/sonarqube-9.9.0.65466/bin/linux-x86-64/sonar.sh start
sudo -u sonar /data/tools/sonarqube-9.9.0.65466/bin/linux-x86-64/sonar.sh restart

查看服务是否启动

1
lsof -i:19000

访问

http://localhost: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搜索插件