sonarqube+sonar_scanner+jenkins执行代码检查

一、简介
1、SonarQube 介绍
SonarQube 是一个开源的代码质量分析平台,便于管理代码的质量,可检查出项目代码的漏洞和潜在的逻辑问题。同时,它提供了丰富的插件,支持多种语言的检测,如 Java、Python、Groovy、C、C++等几十种编程语言的检测。它主要的核心价值体现在如下几个方面:

(1)检查代码是否遵循编程标准:如命名规范,编写的规范等。
(2)检查设计存在的潜在缺陷:SonarQube 通过插件 Findbugs、Checkstyle 等工具检测代码存在的缺陷。
(3)检测代码的重复代码量:SonarQube 可以展示项目中存在大量复制粘贴的代码。
(4)检测代码中注释的程度:源码注释过多或者太少都不好,影响程序的可读可理解性。
(5)检测代码中包、类之间的关系:分析类之间的关系是否合理,复杂度情况。

2、SonarQube 平台是由 4 个部分组成
① SonarQube Server
② SonarQube Database
③ SonarQube Plugins
④ SonarQube Scanner

3、SonarQube 工作流程
SonarQube 在进行代码质量管理时,会从下图 所示的七个纬度来分析项目的质量。
sonarqube+sonar_scanner+jenkins执行代码检查
SonarQube 需要数据库的支持,用于存储检测项目后的分析数据,同时为了实现可持续监测,还需要持续集成工具(如Jenkins)的支持,在构建版本前,通过Jenkins+Sonar 插件执行项目分析指令,最终的结果会通过SonarQube 服务器的Web 页面展示。下图是使用SonarQube做代码持续审查的流程图:
sonarqube+sonar_scanner+jenkins执行代码检查
开发人员把代码push到SCM(如gitlab)【上图第2步】,jenkins构建定义好的job,然后通过jenkins 插件(sonar scanner)分析源码【上图第3步】,jenkins把分析报告发到sonarqube server【上图第4步】。
二、安装
1、环境准备
(1)sonarqube-7.9.1
(2)sonar-scanner-4.0.0.1744-linux
(3)Sqlserver(sonar7.9之后版本不支持mysql,oracle必须使用ojdbc7或者更高版本)
(4)jenkins 2.138
(5)jdk-12.0.1(jdk必须使用jdk11或者是更高版本)
(6)CentOS 7
注意:sonar的安装和启动不用root用户,而是用低权限的linux用户,建议自建用户sonar。

2、SonarQube安装
(1)数据库配置
Sqlserver新建数据库sonar
注意:排序规则必须选用Chinese_PRC_CS_AS,否则数据库初始化不成功
(2)SonarQube配置
下载 sonarqube-7.9.1 后解压。

按如下配置修改 $SONAR_HOME/conf/sonar.properties 文件,配置数据库信息:
sonar.jdbc.username=sa
sonar.jdbc.password=Sqlserver123
sonar.jdbc.url=jdbc:sqlserver://10.102.7.210;databaseName=sonar
#sonar访问地址端口可根据情况修改或者保持默认
sonar.web.port=9000

3、启动SonarQube
进入sonar的bin目录($SONAR_HOME/bin/linux-x86-64),执行脚本 sonar.sh start
浏览器中访问 http://10.102.7.218:9000/ ,界面如下:

sonarqube+sonar_scanner+jenkins执行代码检查

默认登录账户 admin 密码 admin,可登录后修改密码。

4、配置sonarqube开机启动
(1)添加sonar环境变量
修改 ~/.bash_profile
SONAR_HOME=/usr/soft/sonarqube-7.9.1/
PATH=PATH:$SONAR_HOME/bin/linux-x86-64
export PATH SONAR_HOME
(2)/etc/init.d 下增加sonar 文件
#!/bin/sh
/usr/bin/sonar $*
(3)加入开机启动列表
sudo ln -s $SONAR_HOME/bin/linux-x86-64/sonar.sh /usr/bin/sonar
sudo chmod 755 /etc/init.d/sonar
sudo chkconfig --add sonar

5、汉化
使用admin/admin登录,选择配置,再选择应用市场,在搜索框内输入“Local”,选择“Chinese Pack”点击安装。

sonarqube+sonar_scanner+jenkins执行代码检查
6、配置 Jenkins
Jenkins 安装 SonarQube Scanner 插件
“系统管理”-->“插件管理”-->搜索“SonarQube scanner”-->点击安装即可
注意:此处需要注意jenkins版本是否支持sonar安装,如果不支持请按照提示升级到相应的版本。

7、Jenkins 配置 SonarQube Scanner 插件
在 Jekins 中,进入 系统管理->系统设置->SonarQube servers: 勾选 Enable injection of SonarQube server configuration ... 选项。输入:
Name: 可自定义。

Server URL: SonarQube 服务器的 URL。

Server authentication token: 点击 Add 配置凭证:类型: 选择 GitLab API token。API token获取方式:登录sonarqube,点击右上角“用户图标”-->我的账户-->安全-->填写令牌名称(随意)-->生成复制即可
sonarqube+sonar_scanner+jenkins执行代码检查
如果点击 Add 没有反应,建议更换浏览器,是浏览器兼容性问题。
sonarqube+sonar_scanner+jenkins执行代码检查
全局工具配置
进入 系统管理->全局工具配置->SonarQube Scanner: 点击 SonarQube Scanner installations... 并配置 SonarQube Scanner。

sonarqube+sonar_scanner+jenkins执行代码检查
8、为jenkins任务增加sonar检查
Build Environment (构建环境): 勾选 Prepare SonarQube Scanner environment。

sonarqube+sonar_scanner+jenkins执行代码检查

Post Steps (发布步骤): 点击 Add post-build step,添加 Execute SonarQube Scanner。
Task to run: 输入 scan,即分析代码,此处我们采用-X代表debug模式。
Analysis properties: 输入以下内容:
sonarqube+sonar_scanner+jenkins执行代码检查
配置项说明:
JDK为sonar_scanner所依赖的jdk版本

#sonar工程标识,随意输入不重复有代表意义即可
sonar.projectKey=bi_build_sonar

#sonar工程标识,随意输入不重复有代表意义即可
sonar.projectName=bi_build_sonar

#sonar工程版本号
sonar.projectVersion=1.0

#要分析的工程列表,多个用逗号分隔
sonar.modules=com.yss.bi.cml.client,com.yss.bi.common,portal-app,portal-web,com.yss.bi.iae

#源代码路径
sonar.sources=src/main/java

#class文件路径
sonar.java.binaries=target/classes
测试 Jenkins 任务
构建项目:点击立即构建。
执行成功后,打开 SonarQube 的地址,即可看到代码检查结果。
sonarqube+sonar_scanner+jenkins执行代码检查

如果您还想了解SonarQube的详细使用说明,欢迎各位看官关注本人公众号,回复SonarQube即可继续学习:
sonarqube+sonar_scanner+jenkins执行代码检查