简述SonarQube的使用

800 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第17天,点击查看活动详情

1. 背景

我们一直在说团队的代码质量问题,那么我们怎么使用最小的成本来到达最好的代码质量呢?今天给大家安利一款自动化的代码扫描工具,区别与alibaba那个离线的工具,这个工具具有可以私有化部署,可以在定义规则等一些列有点。下面咱们一起来了解一下吧。

2.Sonar 质量管理工具的使用

2.1. 扫描项目

官方文档链接:SonarQube Documentation | SonarQube Docs 具体的安下载安装过程很简单,这里就做过多介绍了,咱们直接开始使用

使用默认的用户名/密码 :admin/admin登录平台

点击“+”号创建新项目

image.png

image.png

点击设置,可以选择创建令牌或者使用之前生成的令牌

image.png 生成的token需要自己记住,以免后续找不到token

image.png 选择项目中主要使用的语言

然后下载扫描工具,链接:docs.sonarqube.org/latest/anal…

下载成功之后,修改conf目录下的sonar-scanner.properties配置 修改sonar.host.url配置项目到自己部署的sonar私服的地址即可

然后需要配置下系统环境变量

image.png

在项目根目录执行扫描命令(sonarqube创建项目时提示的命令)

image.png

2.2. 结果展示

扫描的项目结果会在控制台这里显示,并且多次扫描同一个项目,扫描的结果会将上一次的结果进行覆盖更新处理

image.png

点击相关项目名称连接,可以看到扫描的详细的结果

sonar扫描结果说明:

  • 可靠性 Bugs: Bug是出现了明显错误或是高度近似期望之外行为的代码。
  • 安全性 漏洞:是指代码中可能出现被黑客利用的潜在风险点。 安全热点:安全敏感代码需要手工审核,以便判断是否存在安全漏洞。
  • 可维护性 异味:代码异味会困扰代码的维护者并降低他们的开发效率。主要的衡量标准是修 复它们所需的时间。

2.3. 扫描出错可选择的操作

在项目根目录新建sonar-project.properties,黏贴以下配置文件

相关配置文件docs.sonarqube.org/latest/anal…

# 唯一的项目的key
sonar.projectKey=my project

# --- optional properties ---
# 项目名称
sonar.projectName=My project
# 版本号
sonar.projectVersion=1.0
 
# 扫描的目录
sonar.sources=.
sonar.sourceEncoding=UTF-8

在根目录执行sonar-scanner命令

3.扫描maven项目

通过常规Maven目标执行SonarQube分析的能力使得它可以在任何Maven可用的地方使用(开发人员构建、CI服务器等),不需要手动下载、安装和维护SonarQube Runner安装。Maven构建已经拥有SonarQube成功分析项目所需的许多信息。

3.1. 前提条件

Maven 3.0及以上版本

3.2. 修改maven的setting.xml文件

注意,pluginGroups以及profiles在setting.xml配置文件中已经存在,只需要在相关标签位置加入配置

<pluginGroups>
	<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
    <profile>
    	<id>sonar</id>
    	<activation>
    		<activeByDefault>true</activeByDefault>
    	</activation>
    	<properties>
    		<sonar.host.url>
                 http://ip:port
            </sonar.host.url>
    	</properties>
    </profile>
</profiles>    

3.3. 执行扫描命令

在项目根目录中打开cmd窗口,执行

mvn clean verify sonar:sonar -Dsonar.login="从服务器获取的token"

待扫描完成,即可在控制台看到扫描的项目

4. 质量阈以及质量配置

关于质量阈,我们还可以在定义质量规则并应用到各个项目中

5.总结

关于sonar的使用我在之前的公司也有使用过,研发团队可以按照不同的语言接入sonar平台并自己设定本项目的质量规则,然后可以通过jenkins打包的时候触发sonar扫描,当扫描结果达不到团队制定的标注时可以通过推送消息等一系列措施来通知负责人,从而敦促项目代码质量的提升。总之sonar小成本下保障团队代码质量和规范还是能起到一定的效果。