SonarQube安装配置202202

SonarQube安装配置

说明

从7.9开始SonarQube便不在支持mysql,网上很多教程都是基于mysql的,现在已不适用!

SonarQube数据库只支持PostgreSQL、Oracle和MS SQLSERVER

本篇文档基于PostgreSQL12

注:SonarQube为静态代码扫描工具,只能扫描代码中存在的问题,而不会扫描代码如何执行业务逻辑!请知悉!

安装JDK11

SonarQube8.9.7和sonar-scanner需要安装JDK,oracle JRE11或者openjdk11,

# 查询已安装的JDK
rpm -qa | grep openjdk
java-1.8.0-openjdk-1.8.0.312.b07-1.el7_9.x86_64
java-1.8.0-openjdk-headless-1.8.0.312.b07-1.el7_9.x86_64

# 卸载旧版本的JDK
rpm -e java-1.8.0-openjdk-1.8.0.312.b07-1.el7_9.x86_64
rpm -e java-1.8.0-openjdk-headless-1.8.0.312.b07-1.el7_9.x86_64

# 安装openjdk11,需要EPEL源
yum install -y epel-release

# 安装openjdk11并验证
yum install java-11-openjdk.x86_64
java -version
openjdk version "11.0.14" 2022-01-18 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.14+9-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.14+9-LTS, mixed mode, sharing)

下载SonarQube8.9.7LTS

推荐下载LTS版本,相对于其他版本更加稳定,但是功能更新比较慢,SonarQube LTS版本一年更新一次,非LTS版本2月更新一次

https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.9.7.52159.zip

解压SonarQube8.9.7LTS

unzip sonarqube-8.9.7.52159.zip
sonar-scanner-cli-4.6.2.2472-linux.zip
mv 

安装PostgreSQL12

# 下载、解压
wget http://ftp.postgresql.org/pub/source/v12.2/postgresql-12.2.tar.bz2
tar xvf postgresql-12.2.tar.bz2 

# 编译安装
cd postgresql-12.2/
# 安装至/opt/pgsql12
./configure --prefix=/opt/pgsql12
make world
make install-world

# 新增pgsql用户,添加密码
adduser postgres
passwd postgres

# 创建数据目录并授权
mkdir -p /home/postgres/data
chown -R postgres:postgres /home/postgres/data

# 切换postgres用户操作
su - postgres
# 初始化数据库
/opt/pgsql12/bin/initdb -D /home/postgres/data
# 启动数据库
/opt/pgsql12/bin/pg_ctl -D /home/postgres/data -l logfile start

创建数据库SonarQube

创建SonarQube数据库时,字符集一定要选择UTF8,在postgres用户下执行/opt/pgsql12/bin/psql

# 为超级用户postgres配置一个密码
\password postgres;
# 创建sonar数据库账户和密码
CREATE USER sonar WITH PASSWORD 'sonar123456';
CREATE DATABASE sonardb WITH OWNER sonar ENCODING UTF8;
GRANT ALL PRIVILEGES ON DATABASE sonardb TO sonar;

配置SonarQube文件

需要修改/opt/sonarqube-8.9.7/conf/sonar.properties,这个文件主要配置SonarQube数据库连接,网页配置和JVM虚拟机配置.
vim /opt/sonarqube-8.9.7/conf/sonar.properties,找到18~19两行,修改连接数据库用户名和密码(可是使用set nu在vim里设置行号),修改之前使用cp /opt/sonarqube-8.9.7/conf/sonar.properties /opt/sonarqube-8.9.7/conf/sonar.properties.bak备份一下配置文件

配置数据库连接

 sonar.jdbc.username=username
 sonar.jdbc.password=password

修改36行的JDBC连接,如果是Oracle和MS SQLSERVER找到对应的JDBC修改即可

# 修改sonar.jdbc.url=jdbc:postgresql://localhost/sonarqube?currentSchema=my_schema
sonar.jdbc.url=jdbc:postgresql://localhost/sonardb
配置WEB选项

找到101行,配置SonarQube登录地址,

# 去掉前面的注释,改为127.0.0.1
sonar.web.host=127.0.0.1

找到107行,更改SonarQube的端口,默认为9000

# 去掉前面的注释,改为自定义即可
sonar.web.port=9000
配置ELASTICSEARCH选项

251行可以对ELASTICSEARCH进行配置

配置SonarQube LOG选项

320行可以对LOG进行配置,默认位置为安装目录下,需要修改为/var/log下,找到371行:

# 去掉前面的注释,改为如下目录
sonar.path.logs=/var/log/sonarqube/

更改LOG目录属主,不然LOG4J会报错

chown -R sonarqube:sonarqube /var/log/sonarqube/

SonarQube日志格式为:

2016.11.16 16:47:00 | INFO | ce | [AVht0dNXFcyiYejytc3m][o.s.s.c.t.CeWorkerCallableImpl] Executed task | project=org.sonarqube:example-java-maven | type=REPORT | id=AVht0dNXFcyiYejytc3m | submitter=admin | time=1699ms
  • 2016.11.16 16:47:00 :日志时间。格式为: YYYY.MM.DD HH:MM:SS
  • INFO:日志级别。默认为INFO,其他级别为:ERROR, WARN, INFO, DEBUG and TRACE
  • ce:进程标识符为ce。 SonarQube日志分别有4项组成,分别为:app (main), web (Web Server), ce (Compute Engine) and es (Elasticsearch),出现哪个标识说明由哪个进程生成
  • AVht0dNXFcyiYejytc3m:SQ线程标识符,允许为空,和前面的进程标识CE相对应,显示的为任务ID,如果进程标识符为web,显示的将是HTTP请求ID
  • o.s.s.c.t.CeWorkerCallableImpl:日志名称,由哪个类产生
  • 剩下为:有效负载日志,此段内容不遵循任何特定格式,长度可能不同,并包含换行符,有以些key=value格式提供格式,对已分析代码断的日志将以|time=xxms收尾

364~367可以设置日志级别,建议调试阶段设置为DEBUG,待正常以后改为WARN或者ERROR

#sonar.log.level.app=INFO
#sonar.log.level.web=INFO
#sonar.log.level.ce=INFO
#sonar.log.level.es=INFO
配置ELASTICSEARCH存储路径

默认为SonarQube安装路径下,建议安装在其他路径,在412~413行可以进行配置

sonar.path.data=/data/sonarqube/data
sonar.path.temp=/data/sonarqube/temp
修改Liunx文件限制数

增加sonarqube用户和密码

useradd sonarqube
passwd sonarqube

查看Limits配置
vm.max_map_count:使用sysctl vm.max_map_count命令查看,默认为65530,官方建议大于等于524288,如果大于此值不用修改
fs.file-maxsysctl fs.file-max查看,官方建议大于等于131072,如果大于此值不用修改
ulimit -n:sonarqube打开文件数,官方建议大于等于131072,如果大于此值不用修改
ulimit -usonarqube大开线程数,官方建议大于等于8192,如果大于此值不用修改

修改配置

  • 修改vm.max_map_count
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sysctl -p
  • 修改fs.file-max
echo "fs.file-max = 6553560" >> /etc/sysctl.conf
sysctl -p
  • 修改ulimit
vim /etc/security/limits.d/99-sonarqube.conf 
# 增加sonarqube用户大开文件数
sonarqube   -   nofile   131072
sonarqube   -   nproc    8192
启动SonarQube

切换sonarqube用户启动sonar脚本

/opt/sonarqube-8.9.7/bin/linux-x86-64/sonar.sh start

登录网页设置sonarqube

打开网址:http://192.168.1.154:9000/,输入默认用户名和密码admin:admin
image.png
修改默认密码
image.png
安装中文语言包点击Administration > Marketplace
注:安装插件时需要连接外网,并且SonarQube不确保安装的插件安全问题,点击 I understand the risk同意风险问题
image.png
在搜索框选择’chinese’,点击install安装
image.png
安装完成重启点击’Restart Server’
image.png

sonar-scanner安装配置

下载、解压
https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.6.2.2472-linux.zip
unzip sonar-scanner-cli-4.6.2.2472-linux.zip
mv sonar-scanner-4.6.2.2472-linux /opt
创建sonar-scanner命令软连接
ln -sf /opt/sonar-scanner-4.6.2.2472-linux/bin/sonar-scanner /usr/bin/
ln -sf /opt/sonar-scanner-4.6.2.2472-linux/bin/sonar-scanner-debug /usr/bin/

# 验证
sonar-scanner --help
INFO: 
INFO: usage: sonar-scanner [options]
INFO: 
INFO: Options:
INFO:  -D,--define <arg>     Define property
INFO:  -h,--help             Display help information
INFO:  -v,--version          Display version information
INFO:  -X,--debug            Produce execution debug output

配置连接sonar-qube参数

编辑/opt/sonar-scanner-4.6.2.2472-linux/conf/sonar-scanner.properties文件:

vim /opt/sonar-scanner-4.6.2.2472-linux/conf/sonar-scanner.properties
# 去掉前面的注释即可
#----- Default SonarQube server
sonar.host.url=http://localhost:9000

#----- Default source code encoding
sonar.sourceEncoding=UTF-8

# 配置登录用户和密码
# sonar-scanner扫描时需要登陆sonar-qube,这里配置的是sonar-scanner登录密码,如果怕不安全,可以配置token
# 如何配置token登录参考官方文档:https://docs.sonarqube.org/8.9/user-guide/user-token/
sonar.login=admin
sonar.password=password
配置项目参数
mkdir /opt/sonar-scanner-4.6.2.2472-linux/project/php

在项目文件夹根目录创建sonar-project.properties配置文件:

vim sonar-project.properties
# 添加如下内容
# 设置projectKey,自定义,但是必须唯一,不可重复
sonar.projectKey=php:project

# 配置项目名称
sonar.projectName=test

# 版本号
sonar.projectVersion=1.0

# 调用scanner的phpmodule, cssmodule, jsmodule
phpmodule.sonar.language=php

# 源码路径,PHP无需编译可以不用配置
# sonar.sources=

# 扫描代码目录,sonar-scanner会扫描此目录检测BUG
sonar.projectBaseDir=/home/www/test
 
# 设置源码编码,默认跟随操作系统
sonar.sourceEncoding=UTF-8

# 排除目录,多个用,号分割
sonar.exclusions="vendor/**"

# 配置登录用户和密码
# sonar-scanner扫描时需要登陆sonar-qube,这里配置的是sonar-scanner登录密码,如果怕不安全,可以配置token
# 如何配置token登录参考官方文档:https://docs.sonarqube.org/8.9/user-guide/user-token/
sonar.login=admin
sonar.password=admin

更多配置参考:https://docs.sonarqube.org/8.9/analysis/analysis-parameters/

开始检测
sonar-scanner -D project.settings=/opt/sonar-scanner-4.6.2.2472-linux/project/php/sonar-scanner.properties

根据代码的数量检测需要一段时间,时间根据服务器配置高低决定长短,检测完成会生成报告:
image.png

登录网页查看检查报告

在首页能看到项目检测预览图
image.png
点击上方的Issuse可以看到检测详细情况
image.png
点击红色背景内容可以看到详细代码错误问题
image.png
点击Why is this an issue?在底部可以看到修复建议
image.png
sonarqube检测出的问题,很多为为不符合编码规则,比如变量不设置不合理,引用错误,有过多的重复代码块,以及if屎山。建议根据实际情况进行修复。

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值