SonarQube安装配置
说明
从7.9开始SonarQube便不在支持mysql,网上很多教程都是基于mysql的,现在已不适用!
SonarQube数据库只支持PostgreSQL、Oracle和MS SQLSERVER
本篇文档基于PostgreSQL12
注:SonarQube为静态代码扫描工具,只能扫描代码中存在的问题,而不会扫描代码如何执行业务逻辑!请知悉!
安装JDK11
SonarQube8.9.7和sonar-scanner需要安装JDK,oracle JRE11或者openjdk11,
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
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
yum install -y epel-release
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:
tar xvf postgresql-12.2.tar.bz2
cd postgresql-12.2/
./configure
make world
make install-world
adduser postgres
passwd postgres
mkdir -p /home/postgres/data
chown -R postgres:postgres /home/postgres/data
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
\password postgres;
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/sonardb
配置WEB选项
找到101行,配置SonarQube登录地址,
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
配置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-max :sysctl fs.file-max 查看,官方建议大于等于131072,如果大于此值不用修改 ulimit -n :sonarqube打开文件数,官方建议大于等于131072,如果大于此值不用修改 ulimit -u sonarqube大开线程数,官方建议大于等于8192,如果大于此值不用修改 ? 修改配置
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
sysctl -p
echo "fs.file-max = 6553560" >> /etc/sysctl.conf
sysctl -p
vim /etc/security/limits.d/99-sonarqube.conf
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 修改默认密码 安装中文语言包点击Administration > Marketplace 注:安装插件时需要连接外网,并且SonarQube不确保安装的插件安全问题,点击 I understand the risk 同意风险问题 在搜索框选择’chinese’,点击install安装 安装完成重启点击’Restart Server’
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
sonar.host.url=http://localhost:9000
sonar.sourceEncoding=UTF-8
sonar.login=admin
sonar.password=password
配置项目参数
mkdir /opt/sonar-scanner-4.6.2.2472-linux/project/php
在项目文件夹根目录创建sonar-project.properties 配置文件:
vim sonar-project.properties
sonar.projectKey=php:project
sonar.projectName=test
sonar.projectVersion=1.0
phpmodule.sonar.language=php
sonar.projectBaseDir=/home/www/test
sonar.sourceEncoding=UTF-8
sonar.exclusions="vendor/**"
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
根据代码的数量检测需要一段时间,时间根据服务器配置高低决定长短,检测完成会生成报告:
登录网页查看检查报告
在首页能看到项目检测预览图 点击上方的Issuse 可以看到检测详细情况 点击红色背景内容可以看到详细代码错误问题 点击Why is this an issue? 在底部可以看到修复建议 sonarqube检测出的问题,很多为为不符合编码规则,比如变量不设置不合理,引用错误,有过多的重复代码块,以及if屎山。建议根据实际情况进行修复。
|