SonarQube是什么

SonarQube 是一个用于代码质量管理的开源平台,用于管理源代码的质量。 通过插件形式,可以支持包括 java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。Sonar 不仅提供了对 IDE 的支持,可以在 Eclipse和 IntelliJ IDEA 这些工具里联机查看结果;同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。
Sonar可以从以下七个维度检测代码质量:
1、复杂度分布(complexity):代码复杂度过高将难以理解
2.、重复代码(duplications):程序中包含大量复制、粘贴的代码而导致代码臃肿,sonar可以展示源码中重复严重的地方
3、单元测试统计(unit tests):统计并展示单元测试覆盖率,开发或测试可以清楚测试代码的覆盖情况
4、代码规则检查(coding rules):通过Findbugs,PMD,CheckStyle等检查代码是否符合规范
5、注释率(comments):若代码注释过少,特别是人员变动后,其他人接手比较难接手;若过多,又不利于阅读
6、潜在的Bug(potential bugs):通过Findbugs,PMD,CheckStyle等检测潜在的bug
7、 结构与设计(architecture & design):找出循环,展示包与包、类与类之间的依赖、检查程序之间耦合度
组件组成

1.sonarqube server :  他有三个程序分别是 webserver(配置和管理sonar) searchserver(搜索结果返回给sonarUI)  ComplateEngineserver(计算服务 将分析结果入库)。

2.sonarqube db : 数据库 存放配置。

3.sonarqube plugins: 插件增加功能。

4.sonar-scanner : 代码扫描工具 可以有多个。![在这里插入图片描述](https://img-blog.csdnimg.cn/20200413145156472.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpdW1pbmd6aGUx,size_16,color_FFFFFF,t_70)

为什么要在项目中使用SonarQube,最主要的原因就是提高代码质量,了解自己在编码过程中犯过的错误,让自己的代码更具有可读性和维护性。
在这里插入图片描述工作流程:

上面的模式展示了SonarQube如何与其他ALM工具集成,以及使用SONARQUE的各种组件。

开发人员在IDE中编写代码,并使用SONARLILT来运行本地分析。

开发人员将他们的代码推到他们最喜欢的SCM:Git,Svn,TFVC,…

连续集成服务器触发自动构建,执行SONARQUE扫描器需要运行SONARQUE分析。

分析报告被发送到SONARQUE服务器进行处理。

SONARQUE服务器在SONARQUE数据库中处理和存储分析报告结果,并将结果显示在UI中。

开发人员审查、评论、挑战他们的问题,通过SONARQUE UI管理和减少他们的技术债务。

管理者从分析中得到报告。

OPS使用API来自动配置并从SONARQUE中提取数据。

OPS使用JMX监控SONARQUBE服务器。
二.安装SonarQube

  1. 环境准备:

(1)jdk

(2)sonarqube下载:https://www.sonarqube.org/downloads/

(3)sonar-scanner下载:https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner

(4)MySql数据库

(5)操作系统:本次以windows环境为例

2. 具体安装与配置过程

(1)分别下载sonarqube和sonar-scanner安装包到本地之后进行解压

https://img2.sycdn.imooc.com/5c6e69af00018b1808340227.jpg
在SonarQube的下载页面:https://www.sonarqube.org/downloads/,下载需要的版本
在这里插入图片描述

(2)启动MySQL数据库,创建sonar数据库即可。
MySQL数据库必须是InnoDB存储引擎,不支持MyISAM

(3)进入sonarqube解压缩之后的文件目录中,进入conf文件下,找到sonar.properties文件,并向其中添加MySQL数据库的连接配置信息如下:

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

(4)进入sonar-scanner解压缩之后的文件目录中,进入conf文件下,找到sonar-scanner.properties文件,并向其中添加MySQL数据库的连接配置信息如下:

sonar.jdbc.url=jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=root
sonar.jdbc.password=root

(5)至此,Sonar的基本配置就已经完成了,启动它

进入sonarqube解压缩之后的文件目录中,进入bin目录下,找到相对应操作系统的启动环境(StartSonar.bat)进行启动服务。

我的windows64位系统,具体是:C:\soft\SonarQube\sonarqube-7.6\bin\windows-x86-64\StartSonar.bat,点击执行StartSonar.bat文件启动服务

(7)进入数据库中,你会看到生成了大量的数据表,如下:
(8)在浏览器上访问:http://localhost:9000,出现如下页面信息,表示sonar安装成功,
在这里插入图片描述点击登录进行登录,账户:admin,密码:admin,即可进入
配置完成后,重新启动StartSonar.bat, 如果启动不成功,可以结束Java™ Platform SE binary。
启动成功的标志,下述三项,缺一不可

sonarqube is up
localhost:9000 可以打开
数据库中,生成了十几张表

3. 启动失败及闪退问题

(1)如果在重启StartSonar.bat服务的时候失败了,你可以启动进程管理器,关闭所有java.exe服务,然后再次启动该服务即可

(2)如果出现启动StartSonar.bat服务之后,过段时间服务闪退,你可以进入sonarqube解压目录下的logs文件下,查看web.log日志查看出错的日志信息,进行解决。

三.使用SonarQube

  1. 配置sonar-scanner的环境变量

(1)windows环境下进入高级系统设置环境变量下进行配置,

新建环境变量:

变量名:SONAR_RUNNER_HOME

变量值:C:\soft\SonarQube\sonar-scanner-3.3.0.1492-windows (此处是你所下载的sonar-scanner解压之后所在的文件)
2. 新建配置文件sonar-project.properties

打开要进行代码分析的项目根目录,新建sonar-project.properties文件
文件内容输入如下信息:

 #projectKey是项目的唯一标识,不能出现重复,可随意起
sonar.projectKey=项目标识,随便起即可
# this is the name displayed in the SonarQube UI,不能是中文
sonar.projectName=你的项目名称
# 项目的版本号
sonar.projectVersion=0.5
# 项目的代码的编码格式
sonar.sourceEndcoding=UTF-8
# 项目的语言
sonar.language=java
# 项目的源代码目录
sonar.sources=src
# 项目的编译生成的class文件的所在目录
sonar.java.binaries=target/test-classes
  1. 启动StartSonar.bat服务,并以管理员的身份启动一个cmd命令窗口,cd命令进入项目的根路径下,执行命令:sonar-scanner,开始对你的代码进行质量审核。
  2. 之后访问http://localhost:9000/, 并进行登录admin/admin,即可查看代码审查结果信息
    sonarqube
    在这里插入图片描述
    sonar用于进行代码的质量分析

进行质量分析的操作步骤如下:

首先进入到sonar的主页SonarQube,查看当前要分析的项目是否存在

如果当前的项目不存在,则可以进行项目的创建,创建的操作步骤如下

选择创建新项目,设置项目的创建标志以及显示信息

点击完设置以后,会有页面创建令牌和配置当前项目的信息。由于以及进行过默认的令牌信息配置,故无需进行创建生成令牌,可以使用令牌10ac31fd0b091a4e9ee93e7351bc40f90f91acb3即可

在sonar页面创建完项目以后,可在本地找到要进行分析的项目的代码,然后再当前的项目中执行如下的命令

mvn sonar:sonar
-Dsonar.projectKey=zyzh-zz-financial
-Dsonar.host.url=http://192.168.30.217:9000
-Dsonar.login=10ac31fd0b091a4e9ee93e7351bc40f90f91acb3

其中-Dsonar.projectKey表示的是项目的标识,-Dsonar.host.url表示的是sonar的 地址,-Dsonar.login=10ac31fd0b091a4e9ee93e7351bc40f90f91acb3设置的sonar的令牌信息

执行完上述的命令以后,如无异常,则可以进入到sonar的首页中,找到相应的项目名称进入,即可查看当前项目的代码质量分析结果

sonar集成jenkins

jenkins集成sonar,下载sonarQube

进入系统管理->系统设置->SonarQube servers 选择Add SonarQube
填写信息,
name:自定义即可
ServerUrl:sonar服务地址
Server authentication token:在sonar服务中生成的令牌token

在jenkins中新建job,首先需要配置从git仓库中拉取代码,选择要分析的分支

设置执行的maven命令,如 选择root Pom文件,设置执行mvn命令:clean package -Dmaven.test.skip=true

接下来选择Additional Behaviours,新增post steps ,其他数值可以默认,Analysis properties设置如下的:
sonar.projectKey=zyzh-zz-backstage
sonar.projectName=zyzh-zz-backStage
sonar.peojectVersion=1.0
sonar.language=java
sonar.sources=$WORKSPACE/
sonar.java.binaries=$WORKSPACE/zyzh-zz-backStage-api/target/,$WORKSPACE/zyzh-zz-backStage-server/target/,$WORKSPACE/zyzh-zz-backStage-web/target/,$WORKSPACE/zyzh-zz-manage-web/target/

如果没有在全局配置中配置令牌的话,则可以再上面的配置中加入下面的
sonar.login=10ac31fd0b091a4e9ee93e7351bc40f90f91acb3
当然也可以选择login和pwd的方式
配置信息说明:

sonar.host.url    sonarqube的URL地址
sonar.login    sorna用户名
sonar.password    指定sonar用户的密码
sonar.projectName    在sonar上显示的项目名称
sonar.projectVersion    在sonar上显示的版本信息
sonar.projectKey    sonar的项目关键字
sonar.sources    包含pom.xml的maven项目相对目录
sonar.java.binaries  java编译后的文件目录

设置完成以后,可以进行构建,查看构建的日志记录信息没有异常即可。

idea结合sonarLint进行的代码分析

idea结合sonar的话,可以下载sonarLint插件,操作步骤如下:

进入idea ,进入插件安装,在插件市场中搜索sonarLint,点击进行安装后重启idea;
配置sonarLint插件,设置settings中,查找到other settings,然后选择sonarLint General Setting ,在右侧的输入
接下来输入要连接的服务器的登录信息,如输入token或者是使用账号和密码的方式

配置当前的项目和sonar的关系,点击进入设置settings->other settings->SonarLint Project Settings

Bind to Server 选择刚才配置的服务器信息。SonarQube project的选择可以点击Search in list查看sonar仓库中配置的项目信息,完成选择以后点击ok即可

代码分析,可以查看到当前的窗口中多了一个SonarLint的窗口(如无此窗口,可以点击analysis菜单进行查找),在其中选择report,点击文件夹图标,会弹窗提示,点击process之后即可进行项目分析。

参考资料
1、官网文档
2、最新版本说明
3、sonar的用法
4、sonal的概念与组件组成
5、sonarqube

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐