SonarQube 是一个开源的代码分析平台, 用来持续分析和评测项目源代码的质量。 通过SonarQube我们可以检测出项目中重复代码, 潜在bug, 代码规范,安全性漏洞等问题, 并通过SonarQube web UI展示出来。 


1.SonarQube扫描方法

Jenkins中调用 
通过jenkins插件调用sonarScanner或使用Maven、Gradle等内置扫描器 
依据项目需要,对代码持续扫描,并将结果推送到sonarqube 进行页面展示

SonarQube Scanner 
使用scanner,通过配置文件,修改项目信息,在命令行中调用scanner工具,进行扫描,并推送给sonarqube

Maven、Gradle等内置扫描器 
以maven为例,需要修改maven和sonarqube配置文件,在mvn编译后,使用mvn命令,进行代码扫描,并推送给sonarqube(需要编译源代码) 
(该部分后续详细介绍)

2.SonarQube web UI -项目页面 
显示用户所有的项目概况,各项目质量评级,并提供条件筛选 


3.SonarQube web UI –项目页面 
通过在主页面选择单个项目,进入项目详情,该页面提供了当前项目最近一次扫描的结果评级,历史累计和新增问题数量,代码行数等信息 

4.SonarQube web UI –问题页面 
提供当前用户名下所有问题的列表,并提供条件筛选,包括问题类型,严重程度等 
在当个项目中,问题页面显示单项目信息 

选中单个问题,查看问题代码详情,sonarqube给出问题描述和修改意见 
 
项目经理可以根据实际情况调整问题类型,严重程度。 
打开或关闭问题,分配给指定的开发人员 
添加备注 
 
在被分配问题的开发人员配置接收信息后,将收到分配问题邮件,可根据链接,直接打开问题详情 
 
5.SonarQube web UI –安全报告页面 
针对安全问题,sonarqube提供了OWASP top10和SANS top25,热点问题检查,并提供了聚合报告,提高对安全问题的重视程度 

6.SonarQube web UI –评估页面 
给出当前项目的评估概况信息,大小,可靠性,重复率,覆盖率等 

7.SonarQube web UI –代码页面 
以.java文件为依据,给出各个.java文件统计信息 

8.SonarQube web UI –活动页面 
页面展示了每次代码扫描的基本信息和代码情况的折线图,折线图可以根据需要调整显示bugs数量,代码行数,覆盖率等信息