SonarQube7.3安装和使用说明

一 . SonarQube代码质量检查工具简介

Sonar (SonarQube)是一个开源平台,用于管理源代码的质量.

Sonar 不只是一个质量数据报告工具,更是代码质量管理平台。

支持Java, C#, C/C++, PL/SQL, Cobol, JavaScrip, Groovy 等等二十几种编程语言的代码质量管理与检测。
Sonar可以从以下七个维度检测代码质量,而作为开发人员至少需要处理前5种代码质量问题。

1. 不遵循代码标准
		sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具规范代码编写。
2. 潜在的缺陷
		sonar可以通过PMD,CheckStyle,Findbugs等等代码规则检测工具检 测出潜在的缺陷。
3. 糟糕的复杂度分布
		文件、类、方法等,如果复杂度过高将难以改变,这会使得开发人员 难以理解它们, 且如果没有自动化的单元测试,对于程序中的任何组件的改变都将可能导致需要全面的回归测试。
4. 重复
		显然程序中包含大量复制粘贴的代码是质量低下的,sonar可以展示 源码中重复严重的地方。
5. 注释不足或者过多
		没有注释将使代码可读性变差,特别是当不可避免地出现人员变动 时,程序的可读性将大幅下降 而过多的注释又会使得开发人员将精力过多地花费在阅读注释上,亦违背初衷。
6. 缺乏单元测试
		sonar可以很方便地统计并展示单元测试覆盖率。
7. 糟糕的设计
		通过sonar可以找出循环,展示包与包、类与类之间的相互依赖关系,可以检测自定义的架构规则 通过sonar可以管理第三方的jar包,可以利用LCOM4检测单个任务规则的应用情况, 检测藕合。

通过以下介绍SonarQube的安装、使用说明。
为什么要选择sonarQube?
个人使用之后认为 : sonarQube的优势如下(相比于阿里编码规约这种市面上常见类似软件):

1. 更加优秀的图形化界面

基本上通过界面就可以对自己项目的代码状况一目了然

2. 可以查询出其它软件难以定位到的问题

比如 : 可能导致空指针异常的问题 (对象在进行使用前没有加空的判断)
       可能导致内存泄漏的问题, 在try catch 块里面,直接使用e.printStackTrace()将堆栈信息打印到内存的
       可能导致的漏洞 : 成员变量使用public定义的
       还有诸如 : 流等未关闭或者是非正常关闭都能够检测出来!
       功能非常强大!!

二. 安装:

2.1 安装SonarQube web server
1.  首先确保安装了jdk1.8 +
2.  到此链接 https://www.sonarqube.org/downloads/ 
下载sonalqube(下载社区版,是开源的),
我下载的是当前最新版本 7.3 
并解压,解压完之后的目录如下 :

解压之后的目录
3. 到解压目录的bin\windows-x86-64(我的是64位的)目录下:
双击StartSonar.bat文件 启动SonarQube

4. 到浏览器界面,输入 : http://localhost:9000 
// 能够进入界面证明安装成功
2.2 安装数据库
1. 版本要求:

在conf目录下的sonar.properties文件下:
有这样一行配置 : 
#----- MySQL >=5.6 && < 8.0

所以, mysql版本过高的话,要降级!! 比如说我... 用的就是8.0.11版本的

附 : mysql 8.0.11 版本卸载
1. 关闭mysql服务 
net stop mysql
2. 删除mysql
sc delete mysql
3. 删除mysql的目录文件, 我直接把mysql安装目录整个删除了
4. 将mysql的环境变量清空

然后在下载安装一个合适版本的即可

2. 为sonarqube 创建一个数据库
create database 数据库名;  

3. 创建sonarqube用户并进行授权

CREATE USER 'username'@'host' IDENTIFIED BY 'password'; // 创建用户并设置密码
// username 为创建的用户名
host为对应的主机地址,本地就是localhost
password为设置的密码

GRANT ALL ON *.* TO '用户名'@'localhost'; //对用户进行授权操作

4. 修改SonarQube配置文件,添加Mysql相关配置
sonar.jdbc.url=jdbc:mysql://localhost:3306/sonarqube?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=用户名  // 刚刚创建的sonarQube用户
sonar.jdbc.password=密码   // 创建用户对应的密码
sonar.sorceEncoding=UTF-8 // 设置编码格式为UTF-8
2.3 重新启动服务端
1. 退出 SonarQube 服务端
在之前弹出的cmd窗口执行ctrl + c,
弹出来的提示选择Y,退出SonarQube服务

2.  双击StartSonar.bat文件, 重新启动SonarQube
这次因为要进行数据库的初始化操作,所以需要的时间可能稍微久一点

3. 启动成功后,浏览器输入 : http://localhost:9000 进入界面

4. 登录 

点击界面右上角的登录按钮, 进行登录 :
初始的账户名 : admin
初始的密码  :  admin

如上 , SonarQube的安装已经OK!

附 : 一些关键配置的修改,如 主机地址,context,端口号等:
通常情况下使用默认的配置即可!
文件 /conf/sonar.properties
#sonar.web.host=0.0.0.0 
#sonar.web.context=
#sonar.web.port=9000

三. 使用

3.1. 安装必要的插件 (最重要的是汉化包)
点击 导航栏的 config, 选择应用市场
搜索 Chinese pack, 点击install进行安装

安装成功后, 重启 SonarQube !

如下图 : 进入到了很友好的中文界面!

中文界面!

3.2. 开始分析项目代码源代码
我是使用maven的方式进行分析
3.2.1 编辑maven 的settings.xml文件
 位置 $MAVEN_HOME/conf 
或者是 ~/.m2 
找到对应的位置添加以下配置代码:
我的maven版本是3.5.4 对应的文件是settings.xml
版本低一点的对应的文件可能是setting.xml
<settings>
	<pluginGroups>
		<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
	</pluginGroups>
	<profiles>
		<profile>
			<id>sonar</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<properties>
				<!-- Optional URL to server. Default value is http://localhost:9000 -->
				<sonar.host.url>
				  http://localhost:9000
				</sonar.host.url>
			</properties>
		</profile>
	 </profiles>
</settings>
其中sonar.host.url 值就是 上文启动的sonar 服务器地址。
3.2.2 对maven项目进行分析
到项目所在的文件路径下: 

使用命令提示符或者是power shell执行 如下命令: 
mvn org.sonarsource.scanner.maven:sonar-maven-plugin:3.2:sonar

出现: BUILD SUCCESS 标识之后
刷新界面查看 :
3.3 配置分析参数
强制参数:
				
1. Server
		sonar.host.url		http://localhost:9000
2. Project Configuration
		sonar.projectKey	  		Maven   <groupId>:<artifactId>
		sonar.sources		  		Maven 默认的源码路径
				
可以配置的参数:
1. Project identity
		sonar.projectName        项目名称
		sonar.projectversion	 项目版本
			
2. Authentication
		sonar.login                  分析该项目的用户名称
		sonar.password                分析该项目的用户密码
3.4. 程序员用户使用说明

SonarQube Web管理者通过配置和设置以下参数值对项目源代码进行:

复杂度、覆盖率、文档、重复、问题、可维护性、可靠性、安全性、大小等约束和规范。

sonar中的质量阈管理以下内容。

               复杂度
					复杂度
					复杂度/类
					复杂度/文件
					复杂度/方法
				覆盖率
					分支覆盖
					集成测试的新分支覆盖
					新代码的分支覆盖率
					覆盖率
					新集成测试覆盖
					新覆盖率
					集成测试分支覆盖
					集成测试覆盖
					集成测试覆盖行
					集成测试未覆盖分支
					集成测试未覆盖行
					代码覆盖率
					集成测试的新行覆盖
					新代码覆盖率
					代码行
					集成测试的新行覆盖
					覆盖的新代码
					总体分支覆盖率
					总体新分支覆盖率
					总体覆盖率
					总体新覆盖率
					总体代码覆盖率
					总体新代码覆盖率
					总体覆盖的新行数
					总体未覆盖分支
					总体未覆盖的新分支
					总体未覆盖代码
					总体未覆盖新行数
					单元测试忽略数
					未覆盖分支
					集成测试未覆盖的新分支
					未覆盖新分支
					未覆盖的代码
					集成测试未覆盖的行
					未覆盖的新代码
					单元测试持续时间
					单元测试错误数
					单元测试失败数
					单元测试成功 (%)
					单元测试数
				文档
					注释行
					注释 (%)
					公共API
					公共注释的API (%)
					公共未注释的API
				重复
					重复块
					重复文件
					重复行
					重复行(%)
				问题
					阻断违规
					确认问题
					严重违规
					误判问题
					提示违规
					违规
					主要违规
					次要违规
					新阻断违规
					新严重违规
					新提示违规
					新违规
					新主要违规
					新次要违规
					开启问题
					重开问题
					不修复的问题
				可维护性
					新代码的技术债务
					坏味道
					达到可维护性A级所需的工作
					新增坏味道
					技术债务
					技术债务比率
					新代码技术债务比率
					Management
					Burned budget
					Business value
					Team size
				可靠性
					Bugs
					新增Bugs
					可靠性修复工作
					新代码的可靠性修复工作
				安全性
					新增漏洞
					安全修复工作
					新代码的安全修复工作
					漏洞
				大小
					类
					目录
					文件
					方法
					生成的行数
					生成的代码行数
					行数
					代码行数
					项目
					语句
3.5管理员使用手册
3.5.1 管理员配置管理

配置管理内容有:

  1. 配置
  2. 权限
  3. 项目
  4. 系统

在这里插入图片描述

3.5.2 管理员配置管理–系统

包含两部分内容分别为:

  1. 更新中心

  2. 系统信息

3.5.2.1 更新中心

方便管理插件、安装插件。
[外链图片转存失败(img-OGvapKtl-1568768423909)(https://static.oschina.net/uploads/img/201702/22111921_Av8z.png "SonarQube更新中心")]

3.5.2.2 系统信息

系统信息就是现实SonarQube安装环境的配置变量和系统配置路径。

如下部分截图:
[外链图片转存失败(img-pWhIEDrC-1568768423911)(https://static.oschina.net/uploads/img/201702/22111714_qSSC.png "SonarQube系统信息")]

3.5.3 管理员配置管理–项目管理

包含两部分内容分别为:

  1. SonarQube项目管理

  2. SonarQube后台任务

3.5.3.1 SonarQube项目管理

创建、编辑、修改、删除(批量)SonarQube项目
[外链图片转存失败(img-MQmQMzgJ-1568768423913)(https://static.oschina.net/uploads/img/201702/22112429_2uRv.png " SonarQube项目管理")]

3.5.3.2. SonarQube后台任务

[外链图片转存失败(img-xnrurw3O-1568768423915)(https://static.oschina.net/uploads/img/201702/22112301_HxqQ.png "SonarQube后台任务")]

3.5.4 管理员配置管理–权限管理

权限管理内容包含:

  1. 用户
  2. 群组
  3. 全局权限
  4. 项目权限
  5. 权限模板
3.5.4.1. 用户

[外链图片转存失败(img-FfZtLAxj-1568768423917)(https://static.oschina.net/uploads/img/201702/22113509_jrfY.png "用户")]

3.5.4.2. 群组

[外链图片转存失败(img-Ju5QN7SA-1568768423920)(https://static.oschina.net/uploads/img/201702/22112937_5Oiv.png "群组")]

3.5.4.3. 全局权限

[外链图片转存失败(img-9miofGbX-1568768423922)(https://static.oschina.net/uploads/img/201702/22112959_UePj.png "全局权限")]

3.5.4.4. 项目权限

[外链图片转存失败(img-gSc6vh1L-1568768423925)(https://static.oschina.net/uploads/img/201702/22113031_6Aid.png "项目权限")]

3.5.4.5. 权限模板

[外链图片转存失败(img-0diipzeS-1568768423927)(https://static.oschina.net/uploads/img/201702/22113050_EZIJ.png "权限模板")]

3.5.5 管理员配置管理–配置管理

配置管理模块又包含以下管理:

  1. 通用设置(重点介绍)
  2. Custom Metrics(自定义指标)
  3. 默认仪表盘
3.5.5.1 通用配置

管理的模块有:

  1. Java:配置检查的java源文件及静态代码检查规范检查
  2. SCM:配置软件控制器。上文已经提到的配置项。比如:svn、git等等
  3. SonarJs:雷同java文件检查、
  4. 技术债务:
  5. 授权
  6. 排除
  7. 权限
  8. 通用
3.5.5.2 通用配置–技术债

名词解释技术债:

维基百科上的解释:维基百科上的解释

此处配置决定和影响项目仪表盘显示、影响数据库数据。
[外链图片转存失败(img-xGeybkSI-1568768423930)(https://static.oschina.net/uploads/img/201702/22113651_vQSa.png "技术债")]

3.5.5.3 通用配置–排除

可以配置通配符排除一下影响代码项目:

  1. 代码覆盖率
  2. 检查文件
  3. 重复行数代码
  4. issues

具体配置请参考具体配置项目。

[外链图片转存失败(img-xGxKEpa4-1568768423933)(https://static.oschina.net/uploads/img/201702/22113819_Hi8y.png "排除4个配置项配置")]

3.5.5.4 通用配置–通用

有以下配置项目:

  1. 通用
    [外链图片转存失败(img-lz9rxEBe-1568768423934)(https://static.oschina.net/uploads/img/201702/22114332_oIG9.png "通用")]
  2. 对比视图
    [外链图片转存失败(img-hnaJUuuz-1568768423936)(https://static.oschina.net/uploads/img/201702/22114944_3Pxe.png "对比视图")]
  3. 数据库清理器
    [外链图片转存失败(img-NLGJzDdt-1568768423937)(https://static.oschina.net/uploads/img/201702/22114434_Ly1h.png "数据库清理器")]
  4. 界面外观
    [外链图片转存失败(img-icDil2iI-1568768423939)(https://static.oschina.net/uploads/img/201702/22114208_2VoF.png "界面外观")]
  5. 邮件
    [外链图片转存失败(img-pHbdNfFB-1568768423941)(https://static.oschina.net/uploads/img/201702/22114048_EG0o.png "通用设置邮件")]
  6. 重复
    交叉项目重复检测
  7. 问题
    [外链图片转存失败(img-6figE8QK-1568768423943)(https://static.oschina.net/uploads/img/201702/22114707_nzYe.png "问题")]

四 .参考资料

  1. 使用 Sonar 进行代码质量管理
  2. SonarQube官方文档
  3. 安装最新版本SonarQube环境要求
  4. SonarQube是什么
  5. SonarQube代码质量管理平台安装与使用
  6. 通过sonar了解你的项目

SonarQube7.3安装和使用说明

  • 20
    点赞
  • 164
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值