一、概述

Sonar 是一个用于代码质量管理的开放平台。通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具。与持续集成工具(例如 Hudson/Jenkins 等)不同,Sonar 并不是简单地把不同的代码检查工具结果(例如 FindBugs,PMD 等)直接显示在 Web 页面上,而是通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程进行代码质量管理。
在对其他工具的支持方面,Sonar 不仅提供了对 IDE 的支持,可以在 Eclipse和 IntelliJ IDEA 这些工具里联机查看结果;同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar。
此外,Sonar 的插件还可以对 Java 以外的其他编程语言提供支持,对国际化以及报告文档化也有良好的支持

特色功能:
1、使用Quality Gate对项目的代码质量评级;
2、使用Technical Debt描述代码质量问题带来的技术债务;
3、提供直观方便的web操作界面,支持任务的指派和跟踪,可以发表评论;
4、提供强大的代码规范规则,可手工开启或关闭;
5、提供多维度的各种统计和分析,包括像代码注释占比、重复代码分析等。
官网
https://www.sonarqube.org/
使用流程图
在这里插入图片描述
1、开发负责人获取最新代码到本地;
2、开发负责人执行sonar-runner开始代码分析工作;
3、开发负责人将分析出来的issue指派给开发人员;
4、开发人员修复issue;
5、开发负责人重新获取最新源码,重新执行sonar-runner,检查issue的修复情况。

二、安装

参考
https://www.cnblogs.com/qiaoyeye/p/5249786.html
SonarQube是服务器端,它主要有两个功能:1.分析源代码;2.因为它内嵌了Apache模块,所以提供Web端的界面访问。
SonarQube Runner是一个利用SonarQube服务端分析代码的命令行工具,可以把它简单理解为客户端。

三、使用说明

1.获取最新源码

Sonar的工作空间在D:\sonar-workspace,可以按项目在该目录下新建目录。
将svn上最新的项目源码下载下来,如下图
在这里插入图片描述

2.启动源码分析

(1)配置sonar-project.properties文件,将sonar-project.properties放到项目根目录下。

# must be unique in a given SonarQube instance
sonar.projectKey=my:project
# this is the name displayed in the SonarQube UI
sonar.projectName=safecampus
sonar.projectVersion=1.0
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# Since SonarQube 4.2, this property is optional if sonar.modules is set. 
# If not set, SonarQube starts looking for source code from the directory containing 
# the sonar-project.properties file.
sonar.sources=src/com/gzzm/safecampus
# Encoding of the source code. Default is default system encoding
#sonar.sourceEncoding=UTF-8
sonar.java.source=1.7
sonar.java.target=1.7

sonar.projectKey 唯一
sonar.projectName为项目名称,唯一。
sonar.sources指明源码位置,指明为src则会扫描整个src目录。
src/com/gzzm/safecampus声明仅需要扫描src/com/gzzm/safecampus目录。
sonar.java.source和sonar.java.target按实际情况配置。

(2)在命令行下切换到项目根目录下,执行sonar-runner命令启动源码分析
在这里插入图片描述
在这里插入图片描述
执行成功
在这里插入图片描述

3.登录Sonar查看issue
http://192.168.1.204:9000/
点击项目名称 → Issue

在这里插入图片描述
在这里插入图片描述
页面左侧提供了多种维度的筛选条件供选择
在这里插入图片描述

4.将Issue指派给开发人员

在这里插入图片描述

5.处理Issue

在这里插入图片描述

6.写评论

在这里插入图片描述
评论支持通过标记代码对评论的文字进行加粗等操作,可以点击Markdown Help超链接打开标记代码帮助页面。

四、系统配置

1.创建用户

使用管理员登录。
Administration → Security → User
在这里插入图片描述
点击右上角的create,输入登录名、姓名、邮箱(用于接收通知)、登录密码。
在这里插入图片描述

2.Rules配置

可以在此设置Rule的开关,如某些规则不适用的可以将其Deactivate。
在这里插入图片描述
在这里插入图片描述

3.发送邮件

(1)系统邮箱配置
Administration → Configuration → General Settings → Email
以163邮箱为例,需要注意SMTP password中需要输入的不是163邮箱登录账号的密码,而是163邮箱的授权客户端密码。获取方法参考文章末尾的“获取163邮箱授权客户端”。
Email prefix配置的是邮件标题前缀。
在这里插入图片描述
填写完毕后点击Save Email Settings。
发送测试邮件
在这里插入图片描述
收到的测试邮件
在这里插入图片描述

(2)邮件连接url配置
Administration → Configuration → General Settings → General → Server base URL
输入系统的访问地址,如http://192.168.1.204:9000/,该url用于系统发送消息通知时将该url作为访问相关消息的一部分,方便用户可以直接点击邮件中的链接直接链接到消息目标。
(3)用户邮箱配置
用户的邮箱由系统管理员统一配置。用户可以配置那些消息需要发送邮件通知。
配置步骤:
登录后点击用户名右下角的箭头 → My profile
在这里插入图片描述
上面5项为全局配置(与项目无关),需要为特定项目配置消息通知,在Add project里输入项目名称,选择需要添加的项目。
在这里插入图片描述
勾选需要通知的消息,点击Save changes保存修改即可。
在这里插入图片描述

4.Quality Gate配置
5.Rules配置

五、常见问题

1.忘记密码

执行以下sql将密码还原为admin

update users 
set crypted_password = '88c991e39bb88b94178123a849606905ebf440f5', 
salt='6522f3c5007ae910ad690bb1bdbf264a34884c6d' 
where login = 'admin' 
2.版本
SonarSonar-ScannerSonarLintJDK
5.32.5不支持1.7
5.6.73.2.0.12272.41.8
3.源码乱码

在Issue中查看源码,中文变成了乱码。需要设置项目的sonar-project.properties文件。
增加红色加粗字体的内容,设置源码的编码为UTF-8。需要重新执行sonar-runner生效。

# Encoding of the source code. Default is default system encoding
sonar.sourceEncoding=UTF-8
4.获取163邮箱授权客户端

(1)登录163邮箱
(2)设置 → 常规设置
在这里插入图片描述
(3)客户端授权密码 → 开启,会提示需要手机验证码验证,按提示操作即可。
在这里插入图片描述
(4)短信验证码验证成功后,可以输入授权码。将该授权码记录下来,方便后续使用。
在这里插入图片描述
在这里插入图片描述

5.指定JDK版本

当sonar-scanner所在机器上安装了多个JDK的时候,需要为sonar-scanner的运行指定JDK版本。修改sonar-scanner_home/bin/sonar-runner.bat
设置JAVA_HOME
在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐