1、简介
一、SonarQube 介绍
SonarQube 是一个开源的代码质量分析平台,便于管理代码的质量,可检查出项目代码的漏洞和潜在的逻辑问题。同时,它提供了丰富的插件,支持多种语言的检测,如 Java、Python、Groovy、C、C++等几十种编程语言的检测。它主要的核心价值体如今以下几个方面:
java
(1)检查代码是否遵循编程标准:如命名规范,编写的规范等。
(2)检查设计存在的潜在缺陷:SonarQube 经过插件 Findbugs、Checkstyle 等工具检测代码存在的缺陷。
(3)检测代码的重复代码量:SonarQube 能够展现项目中存在大量复制粘贴的代码。
(4)检测代码中注释的程度:源码注释过多或者太少都很差,影响程序的可读可理解性。
(5)检测代码中包、类之间的关系:分析类之间的关系是否合理,复杂度状况。
mysql
二、SonarQube 平台是由 4 个部分组成
① SonarQube Server
② SonarQube Database
③ SonarQube Plugins
④ SonarQube Scanner
linux
三、SonarQube 工做流程
SonarQube 在进行代码质量管理时,会从下图 所示的七个纬度来分析项目的质量。
SonarQube 须要数据库的支持,用于存储检测项目后的分析数据,同时为了实现可持续监测,还须要持续集成工具(如Jenkins)的支持,在构建版本前,经过Jenkins+Sonar 插件执行项目分析指令,最终的结果会经过SonarQube 服务器的Web 页面展现。下图是使用SonarQube作代码持续审查的流程图:
开发人员把代码push到SCM(如gitlab)【上图第2步】,jenkins构建定义好的job,而后经过jenkins 插件(sonar scanner)分析源码【上图第3步】,jenkins把分析报告发到sonarqube server【上图第4步】。
2、安装
一、环境准备
(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。
git
二、SonarQube安装
(1)数据库配置
Sqlserver新建数据库sonar
注意:排序规则必须选用Chinese_PRC_CS_AS,不然数据库初始化不成功
(2)SonarQube配置
下载 sonarqube-7.9.1 后解压。
web
按以下配置修改 $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
sql
三、启动SonarQube
进入sonar的bin目录($SONAR_HOME/bin/linux-x86-64),执行脚本 sonar.sh start
浏览器中访问 http://10.102.7.218:9000/ ,界面以下:
数据库
默认登陆帐户 admin 密码 admin,可登陆后修改密码。编程
四、配置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
浏览器
五、汉化
使用admin/admin登陆,选择配置,再选择应用市场,在搜索框内输入“Local”,选择“Chinese Pack”点击安装。
安全
六、配置 Jenkins
Jenkins 安装 SonarQube Scanner 插件
“系统管理”-->“插件管理”-->搜索“SonarQube scanner”-->点击安装便可
注意:此处须要注意jenkins版本是否支持sonar安装,若是不支持请按照提示升级到相应的版本。
七、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,点击右上角“用户图标”-->个人帐户-->安全-->填写令牌名称(随意)-->生成复制便可
若是点击 Add 没有反应,建议更换浏览器,是浏览器兼容性问题。
全局工具配置
进入 系统管理->全局工具配置->SonarQube Scanner: 点击 SonarQube Scanner installations... 并配置 SonarQube Scanner。
八、为jenkins任务增长sonar检查
Build Environment (构建环境): 勾选 Prepare SonarQube Scanner environment。
Post Steps (发布步骤): 点击 Add post-build step,添加 Execute SonarQube Scanner。
Task to run: 输入 scan,即分析代码,此处咱们采用-X表明debug模式。
Analysis properties: 输入如下内容:
配置项说明:
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的详细使用说明,欢迎各位看官关注本人公众号,回复SonarQube便可继续学习: