SonarQube的安装会给予版本有些差异,建议根据你选择的版本结合官方的文档进行安装,中间遇到问题再自行Google一下啦。本文主要是讲解一下版本的安装:SonarQube:7.9 LTS +PostgreSQL 10
版本选择
不同的版本对应的插件选择和数据库支持不同,同时需要考虑版本的稳定性。考虑稳定性,避免出现问题无法跟进处理解决,生产环境不考虑最新版本。
SonarQube:7.9 LTS
SonarQube v7.9 的前置依赖说明(https://docs.sonarqube.org/7.9/requirements/requirements/)
- 数据库:PostgreSQL 10
- Java JDK:OpenJDK 11
安装说明
1、OpenJDK 11安装
官方安装引导:https://openjdk.java.net/install/
安装包(Linux/x64):(官方下载 )
解压缩
> tar -zxvf openjdk-11+28_linux-x64_bin.tar.gz
配置环境变量
> 末尾增加如下内容(根据自己jdk目录修改):
> export JAVA_HOME=/usr/local/jdk-11
> export CLASSPATH=CLASSPATH
> export PATH=PATH
验证
> java -version
2、PostgreSQL 10安装
官方的安装引导:https://www.postgresql.org/download/linux/redhat/
- Select version:10
- Select platform:CentOS 7
- Select architecture: x86_64
执行安装脚本及初始化启动:
1 | # 安装repo源 |
初始化SonarQube使用的数据
1 | # 切换到postgres用户 |
在initdb
初始化数据目录时,它会安装一个默认的pg_hba.conf
文件(使用命令:systemctl status postgresql-10.service查看位置),修改pg数据的pg_hba.conf(pg_hba.conf
文件说明)将认证 ident 改为 md5,
1 |
|
3、SonarQube 7.9安装
官方的安装引导:https://docs.sonarqube.org/7.9/setup/install-server/
安装包:(官方下载)
创建sonar用户
> sudo useradd sonar
> passwd sonar (密码:xxxx)
linux平台文件数限制
1 | # 设置系统最大文件数 |
安装配置
- 数据库链接
1 | > sonar.jdbc.username=sonarqube |
- ES存储
1 | > sonar.path.data=/opt/data/sonarqube/data |
- Web Server配置
自己设定启动端口配置即可
脚本启动
1 | > ${sonar_home}/bin/linux-x86-64/sonar.sh start |
服务器部署,注意加入到开机启动项中,,此处我是加入 rc.local 文件中
1 | # sonarqube server |
4、SonarQube Scanner
官方的安装引导:https://docs.sonarqube.org/7.9/analysis/scan/sonarscanner/
安装包:(官方下载)
安装:
1 | # 设置SonarQube Server,位置:$install_directory/conf/sonar-scanner.properties |
**每个扫描项目的根目录加入:**sonar-project.properties
sonar-project.properties示例: browsed or downloaded
5、SonarQube Plugin
- 社区版支持多分支检测: sonarqube-community-branch-plugin(1.3.2老版本,安装区别现说明:Copy the plugin JAR file to the
extensions/plugins/
and thelib/common/
directories of your SonarQube instance and restart SonarQube) - 汉化包(不建议,总觉得怪怪的):直接在应用市场检索按照对应的版本即可(jar插件下载:sonar-l10n-zh)
6、相关配置
- 解决增量代码小于20行,QG不生效情况:
> 配置:sonarqube → quality gates → create/copy a new QG , set :Lines to Cover on New Code to 0
问题记录
1、Some Quality Gate conditions on New Code were ignored because of the small number of New Lines
但分支模式增量代码扫描,少于20行时,代码坏味道无法检测到,可以参考:SONAR-9352 或 论坛讨论
解决:解决方案说明参考 论坛讨论,
步骤:sonarqube → quality gates → create/copy a new QG , set :Lines to Cover on New Code to 0
2、the main branch has no lines of code
扫描php,遇到的错误,主要原因是唯一的php的文件在解析阶段就出现错误,无法正常解析,也就没有扫描文件,更没有扫描结果了。