代码测试工具 SonarQube 安装及使用

1、SonarQube简介

官方网站:http://www.sonarqube.org/
下载地址:https://www.sonarqube.org/downloads/

SonarQube 是一个用于代码质量管理的开放平台,通过插件机制,SonarQube 可以集成不同的测试工具,代码分析工具,以及持续集成工具,例如 Hudson/Jenkins 等。

2、SonarQube安装

2.1 基础环境依赖

2.1.1 数据库环境依赖

SonarQube 6.7.X LTS 版本要求数据库要使用 MySQ 5.6 及以上版本,不支持 5.5 及更早的版本,7.9.X LTS 版本不再使用 MySQL

2.1.2 java 环境依赖

6.7.X 需要使用 Oracle JRE8
7.9.X 需要使用 Oracle JRE11

2.1.1 系统及内核参数

root@ubuntu-node1:~# useradd -s /bin/bash -m sonarqube
root@ubuntu-node1:~# vim /etc/sysctl.conf 
vm.max_map_count=524288
fs.file-max=131072
root@ubuntu-node1:~# vim /etc/security/limits.conf
sonarqube   -   nofile   131072
sonarqube   -   nproc    8192

2.2 安装 JDK 11

root@ubuntu-node1:~# apt-cache madison openjdk-11-jdk 
openjdk-11-jdk | 11.0.14+9-0ubuntu2~18.04 | http://mirrors.aliyun.com/ubuntu bionic-security/main amd64 Packages
openjdk-11-jdk | 11.0.14+9-0ubuntu2~18.04 | http://mirrors.aliyun.com/ubuntu bionic-updates/main amd64 Packages
openjdk-11-jdk | 10.0.1+10-3ubuntu1 | http://mirrors.aliyun.com/ubuntu bionic/main amd64 Packages
openjdk-lts | 10.0.1+10-3ubuntu1 | http://mirrors.aliyun.com/ubuntu bionic/main Sources
openjdk-lts | 11.0.14+9-0ubuntu2~18.04 | http://mirrors.aliyun.com/ubuntu bionic-security/main Sources
openjdk-lts | 11.0.14+9-0ubuntu2~18.04 | http://mirrors.aliyun.com/ubuntu bionic-updates/main Sources

root@ubuntu-node1:~# apt install -y openjdk-11-jdk 
root@ubuntu-node1:~# java -version 
openjdk version "11.0.14" 2022-01-18
OpenJDK Runtime Environment (build 11.0.14+9-Ubuntu-0ubuntu2.18.04)
OpenJDK 64-Bit Server VM (build 11.0.14+9-Ubuntu-0ubuntu2.18.04, mixed mode, sharing)

2.3 部署 PostgreSQL 服务器

2.3.1 安装PostgreSQL

root@ubuntu-node1:~# apt-cache madison postgresql 
postgresql | 10+190ubuntu0.1 | http://mirrors.aliyun.com/ubuntu bionic-security/main amd64 Packages
postgresql | 10+190ubuntu0.1 | http://mirrors.aliyun.com/ubuntu bionic-security/main i386 Packages
postgresql | 10+190ubuntu0.1 | http://mirrors.aliyun.com/ubuntu bionic-updates/main amd64 Packages
postgresql | 10+190ubuntu0.1 | http://mirrors.aliyun.com/ubuntu bionic-updates/main i386 Packages
postgresql |     10+190 | http://mirrors.aliyun.com/ubuntu bionic/main amd64 Packages
postgresql |     10+190 | http://mirrors.aliyun.com/ubuntu bionic/main i386 Packages
postgresql-common |        190 | http://mirrors.aliyun.com/ubuntu bionic/main Sources
postgresql-common | 190ubuntu0.1 | http://mirrors.aliyun.com/ubuntu bionic-security/main Sources
postgresql-common | 190ubuntu0.1 | http://mirrors.aliyun.com/ubuntu bionic-updates/main Sources

root@ubuntu-node1:~#  apt install postgresql -y

2.3.2 配置 PostgreSQL

root@ubuntu-node1:~#  su - postgres 
postgres@ubuntu-node1:~$ 
#登入数据库
postgres@ubuntu-node1:~$ psql -U postgres 
psql (10.19 (Ubuntu 10.19-0ubuntu0.18.04.1))
Type "help" for help.
#创建数据库
postgres=#  CREATE DATABASE sonar;
#创建用户
postgres=# CREATE USER sonar WITH ENCRYPTED PASSWORD '123456';
#授权
postgres=# GRANT ALL PRIVILEGES ON DATABASE sonar TO sonar; 
#执行变更
postgres=# ALTER DATABASE sonar OWNER TO sonar;
postgres=# \q

#修改监听地址
root@ubuntu-node1:~# vim /etc/postgresql/10/main/postgresql.conf 
 59 listen_addresses = '*'
#开启远程访问 
root@ubuntu-node1:~# vim /etc/postgresql/10/main/pg_hba.conf
# IPv4 local connections:
host    all             all            0.0.0.0/0            md5
root@ubuntu-node1:~# systemctl restart postgresql

2.4 部署 8.9.X SonarQube

root@ubuntu-node1:~# cd /usr/local/src/
root@ubuntu-node1:/usr/local/src# ls
sonarqube-8.9.7.52159.zip
root@ubuntu-node1:/usr/local/src# unzip sonarqube-8.9.7.52159.zip
root@ubuntu-node1:/usr/local/src# ln -sv /usr/local/src/sonarqube-8.9.7.52159 /usr/local/sonarqube
root@ubuntu-node1:/usr/local/src#  useradd -r -m -s /bin/bash sonarqube
root@ubuntu-node1:/usr/local/src# chown sonarqube /usr/local/sonarqube /usr/local/src/sonarqube-8.9.7.52159 -R
root@ubuntu-node1:/usr/local/src# su - sonarqube
sonarqube@ubuntu-node1:~$ cd /usr/local/sonarqube
sonarqube@ubuntu-node1:/usr/local/sonarqube$  vim conf/sonar.properties
sonar.jdbc.username=sonar
sonar.jdbc.password=123456
sonar.jdbc.url=jdbc:postgresql://10.10.100.109/sonar
#启动sonarqube
sonarqube@ubuntu-node1:/usr/local/sonarqube$ ./bin/linux-x86-64/sonar.sh start

2.5 登入web界面

登录账户名和密码默认都是 admin
在这里插入图片描述

2.5.1 安装中文插件

在这里插入图片描述

2.6 SonarQube启动文件

root@ubuntu-node1:/usr/local/src# vim /etc/systemd/system/sonarqube.service 
[Unit]
Description=SonarQube service
After=syslog.target network.target

[Service]
Type=simple
User=sonarqube
Group=sonarqube
PermissionsStartOnly=true
ExecStart=/usr/bin/nohup /usr/bin/java -Xms32m -Xmx32m -Djava.net.preferIPv4Stack=true -jar /usr/local/sonarqube/lib/sonar-application-8.9.7.52159.jar
StandardOutput=syslog
LimitNOFILE=131072
LimitNPROC=8192
TimeoutStartSec=5
Restart=always
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

3、SonarQube使用

3.1 jenkins 服务器部署扫描器 sonar-scanner

下载地址:https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/
官方文档:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/

3.2 部署 sonar-scanner

sonarqube 通过调用扫描器 sonar-scanner 进行代码质量分析,即扫描器的具体工作就是扫描代码:

#下载sonar-scanner安装包
root@ubuntu-node1:/usr/local/src# wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.7.0.2747-linux.zip
root@ubuntu-node1:/usr/local/src# unzip sonar-scanner-cli-4.7.0.2747-linux.zip
root@ubuntu-node1:/usr/local/src# ln -sv /usr/local/src/sonar-scanner-4.7.0.2747-linux /usr/local/sonar-scanner
root@ubuntu-node1:/usr/local/src# cd /usr/local/sonar-scanner/
root@ubuntu-node1:/usr/local/sonar-scanner# vim conf/sonar-scanner.properties 
#----- Default SonarQube server
sonar.host.url=http://10.10.100.109:9000

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

3.3 扫描代码测试

3.3.1 准备测试代码

root@ubuntu-node1:~# unzip sonar-examples-master.zip
root@ubuntu-node1:~# cd sonar-examples-master/
root@ubuntu-node1:~/sonar-examples-master# cd projects/languages/python/python-sonar-runner
#修改配置文件
root@ubuntu-node1:~/sonar-examples-master/projects/languages/python/python-sonar-runner# vim sonar-project.properties 
#自定义项目 key
sonar.projectKey=org.sonarqube:python-simple-sonar-scanner
#项目名称,会显示在web 
sonar.projectName=Python :: Simple Project : SonarQube Scanner
 #项目版本 
sonar.projectVersion=1.0
#源代码目录 
sonar.sources=src
#代码语言类型
sonar.language=py
#编码格式 
sonar.sourceEncoding=UTF-8

3.3.2 web界面添加authentication token

在这里插入图片描述
如果在执行代码的时候不想使用token认证,可以在web界面关闭强制用户认证
在这里插入图片描述

3.3.3 在源代码目录执行扫描

手动在当前项目代码目录执行扫描,以下是扫描过程的提示信息,扫描的配置文件sonar-project.propertie 每个项目都要有

# pwd
/root/sonar-examples-master/projects/languages/python/python-sonar-runner
#执行代码检测,Dsonar.login填写刚刚生成的token
# /usr/local/sonar-scanner/bin/sonar-scanner -Dsonar.login=70da1e22873ea0a0472e4518fe4cb3ace283d3b2

在这里插入图片描述

3.3.3 web界面查看扫描结果

在这里插入图片描述

3.4 jenkins 执行代码扫描

3.4.1 jenkins 安装 SonarQube 插件

安装插件 SonarQube Scanner,然后配置 SonarQube server,系统管理-系统设置。

在这里插入图片描述

3.4.2 添加凭证

在这里插入图片描述
在这里插入图片描述

3.4.3 添加 sonarquebe URL

Jenkins—系统管理—系统设置–SonarQube servers:

在这里插入图片描述

3.4.4 让 jenkins 添加 Sonar scanner 扫描器

在jenkins打包是执行扫描,可以通过执行shell的方式直接扫描,也可以配置jenkins来执行,如下演示通过配置jenkins来执行
Jenkins–系统管理-全局工具配置

3.4.4.1 自动安装

在这里插入图片描述

3.4.4.2 手动安装

自己提前在服务器安装 Sonar scanner,再填写安装路径
##在这里插入图片描述

3.4.5 配置拉取代码

选择自己的项目 - 源码管理 - 选择git - 添加url及凭证
在这里插入图片描述

3.4.6 配置扫描

选择自己的项目 -构建 - execute sonarqube scanner,将配置文件的内容修改成如下格式填写完成后点保存:

sonar.projectKey=app01-develop 
sonar.projectName=app01-develop 
 
sonar.projectVersion=1.0 
sonar.sources=./ 
sonar.language=html
sonar.sourceEncoding=UTF-8 

在这里插入图片描述
注意:一般先代码扫描再部署,将execute sonarqube scanner拖到执行部署的shell框前面就可以

3.4.7 构建项目并测试 sonar-scanner 是否生效

构建完成后,直接点击构建版本后面的天线可以直接跳转到sonarqube的扫描结果界面
在这里插入图片描述
跳转到扫描结果界面
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值