SonarQube安装部署以及与jenkins集成使用


以前参与的项目中,使用sonarqube做代码质量分析工具,并且在项目验收阶段可以根据客户需要导出相应的代码质量分析报告,以此为背景,学习线上各种资料并进行整理汇总,并实践搭建sonarqube,以及结合jenkins自动构建工具,完整实现一个springboot工程的自动构建以及代码分析的过程,在此进行记录,以便后续深入学习使用以及为后来者提供参考借鉴,文中不免疏漏之处,望读者给予指正,不胜感激!

1.基本介绍

SonarQube 是一款用于代码质量管理的开源工具,是静态代码检查工具,采用 B/S 架构它主要用于管理源代码的质量,可以支持众多计算机语言,比如 php,java, C#, go,C/C++, Cobol, JavaScrip, Groovy 等。sonar 可以通过 PMD,CheckStyle,Findbugs 等等代码规则检测工具来检测你的代码,帮助你发现代码的漏洞,Bug,异味等信息。

sonar是一款静态代码质量分析工具,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言,而且能够集成在IDE、Jenkins、Git等服务中,方便随时查看代码质量分析报告;

SonarQube 是一个开源的代码分析平台, 用来持续分析和评测项目源代码的质量。 通过SonarQube我们可以检测出项目中重复代码, 潜在bug, 代码规范,安全性漏洞等问题, 并通过SonarQube web UI展示出来。

Sonarqube特性
1、易于安装,开箱即可启动
2、易于配置-所有配置可以通过其提供的web界面实现
3、可以与CI系统,例如jenkins完美集成
4、丰富的扫描规则,支持自定义,并可以集成findbugs,pmd,checkstyle等插件
5、丰富的格式支持,可以扫描java\js\xml\jsp等多种格式
6、丰富的统计功能
7、支持违规的处理、分配等工作流
8、可以对违规进行确认,误报的违规一次确认后将不再统计在内
9、支持maven\ant\命令行等方式扫描

2.架构原理

在这里插入图片描述
SonarQube框架包含以下四个部分:
Project
SonarQube Scanner
SonarQube Server
SonarQube Database

1)Project
是需要被分析的源码,如我们的java工程源码。

2)SonarQube Scanner
是用于执行代码分析的工具,在Project的根目录下执行,我们还需要在Project下进行SonarQube配置,其中指定了工程的相关信息,还指定了SonarQube Server的地址,SonarQube Scanner分析完毕之后,会将结果上报到该Server。

3)SonarQube Server
显示分析结果的Web Server,在SonarQube Scanner第一次将一个工程的分析结果上报给SonarQube Server后,Server上会自动创建一个工程显示分析的结果,可以在Server上设置代码质量管理相关的各种配置,如设置代码检查规则(Rule)和质量门限(Quality Gate)等。

4)SonarQube Database
数据库

3.代码分析流程

在这里插入图片描述
—》1)开发工具 sonarlint实时分析
—》2)代码上传仓库git、svn等
—》3)持续集成服务jenkins使用sonarqube scanners进行代码分析
—》4)代码分析报告发送至sonarqube server
—》5)sonarqube server将分析结果存入sonarqube database数据库
—》6)sonarqube server界面UI展示代码问题,交由开发者管理处理问题
—》7)sonarqube server提供代码分析报告

4.安装配置

4.1安装装备

1)安装配置jdk环境,目前使用jdk8版本
2)安装mysql数据库,目前使用mysql5.7版本
3)安装SonarQube7.0版本,高版本只支持jdk11以上,因此降版本7.0安装
https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-7.0.zip
4)安装环境使用本机windows环境(本人计算机资源有限,暂选择windows安装)

4.2安装步骤

1)下载好sonarqube后,解压打开bin目录,启动相应OS目录下的StartSonar。如本文演示使用的是win的64位系统,则打开D:\sonarqube-7.0\bin\windows-x86-64\StartSonar.bat

2)启动浏览器,访问http://localhost:9000,如出现下图则表示安装成功
在这里插入图片描述
3)调整配置
(1)配置数据库
Mysql新建数据库sonar

(2)修改配置文件
conf/sonar.properties

sonar.jdbc.url=jdbc:mysql://192.168.109.13306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance
sonar.jdbc.username=root
sonar.jdbc.password=123456
sonar.sorceEncoding=UTF-8
sonar.login=admin
sonar.password=admin

url是数据库连接地址,
username是数据库用户名,
jdbc.password是数据库密码,
login是sonarqube的登录名,
sonar.password是sonarqube的密码
重启sonarqube服务,再次访问http://localhost:9000,会稍微有点慢,因为要初始化数据库信息
Log in 登录后界面
在这里插入图片描述

5.3安装中文插件

(1)安装chinese pack插件方式
按照以下步骤按照插件
在这里插入图片描述
安装成功后重启即可

(2)下载汉化jar包方式
当中文插件与当前安装SonarQube版本不兼容时,
可根据https://github.com/xuhuisheng/sonar-l10n-zh查看下载不同版本对应的汉化包
的jar包,放到 sonarqube/extensions/plugins 目录下,重启SonarQube
在这里插入图片描述

5.4安装pdf报告插件

参考上一节安装pdf插件,
https://gitee.com/penny_pn/sonar-pdf-plugin
并配置username和password为sonarqube的用户名和密码
在这里插入图片描述

5.Jenkins配置sonarqube-scanner

5.1安装sonarqube-scanner插件

在这里插入图片描述

5.2sonarqube生成token

sonarqube 我的账户、安全,生成token
在这里插入图片描述

5.3jenkins配置sonarqube servers与sonarqube scanner

jenkins系统配置sonarqube servers,credentials内容选择secret text并在secret内填入sonarqube生成的token
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.4项目构建过程配置执行sonarqube-scanner

jenkins 构建步骤增加执行sonarqube-scanner

最最重要的是,配置SonarQube analysis properties

# must be unique in a given SonarQube instance
sonar.projectKey=test-01
# this is the name displayed in the SonarQube UI
sonar.projectName= test-01
sonar.language=java
sonar.projectVersion=1.0
sonar.sourceEncoding=UTF-8

#jenkins环境下workspace就是工作目录,默认为~/.jenkins目录下,一般就是Down下来的源代码目录
#sonar.sources包含主源文件的目录路径,使用逗号分隔。
#从Maven、Gradle、MSBuild 项目的生成系统读取。当未提供时,将默认为项目基目录。
sonar.sources=$WORKSPACE
sonar.java.binaries=$WORKSPACE

其中,sonar.sources、sonar.java.binaries属性至关重要
在这里插入图片描述
在这里插入图片描述

5.5执行项目构建

jenkins配置完成,对项目进行构建操作,构建成功后,可查看sonarqube对项目代码的分析

在这里插入图片描述

6.代码质量分析与分析报告下载

项目总览、问题、指标等查看分析问题详情
在这里插入图片描述
分析报告下载
在这里插入图片描述

7.参考资料

https://www.sonarqube.org/
https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-maven/
https://www.cnblogs.com/qiaoyeye/p/5249786.html
https://blog.csdn.net/qq_41631176/article/details/84952820

猜你喜欢

转载自blog.csdn.net/shy871/article/details/117850985