如何使用Sonar完成代码质量检测?

Sonar是什么?

1、Sonar全称SonarQube 是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以多维度检测代码质量,是代码审查利器

通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测 ,可以帮我们分析bug, 漏洞,异味,代码覆盖率,及代码重复问题,如图所示:

如何使用Sonar完成代码质量检测 1

2、sonar 安装

采用docker方式

sonarqube 最新版本官网建议数据是postgres,版本是12,我们可以一键搭建起来

2.1 搭建一个数据库postgres

docker run --name db -e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar -d postgres:12

说明:
--name db  是搭建的postgres数据库docker 容器名称
-e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar 是数据库账号和密码
-d postgres:12 是版本为12的postgres镜像

2.2 搭建sonarqube

docker run --name sq --link db2 -e SONARQUBE_JDBC_URL=jdbc:postgresql://db2:5432/sonar -e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=sonar -p 9001:9000 -d sonarqube

说明:
--name sq 是搭建的sonarqube数据库docker 容器名称
--link db 是连接上面postgres容器
-d sonarqube 是最新版本的sonarqube 镜像
-p 9001:9000 对外访问端口9001

2.3 sonar 环境搭建问题

运行上述两个命令后,通过docker ps 查看docker容器,发现sonarqube没有启动起来
可以通过 docker logs sq 查看启动日志

如何使用Sonar完成代码质量检测 2

发现sonarqube容器stopped,没有启动起来,原因是:

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

说明:最新版本sonarqube需要内存大小不低于262144,那首先要保证运行环境的内存大小不低于3G,例如我采用的VMware直接给加大到3G以上。

如何使用Sonar完成代码质量检测 3

然后在进入虚机环境
找到/etc/sysctl.conf文件最后添加一行:

vm.max_map_count=262144

立即生效, 执行:

/sbin/sysctl -p

最后再执行 docker restart sq 重启sq;

使用docker ps 查看,出现sonarqube容器说明启动成功

如何使用Sonar完成代码质量检测 4

2.4 通过http://ip:9001访问sonarqube 默认用户名/密码 admin / admin

如何使用Sonar完成代码质量检测 5

3、sonar 汉化问题

默认的sonar 满屏英文,也不好理解,可以利用sonar 的插件体系,直接汉化

登录sonar并选择Administration中,选择MarketPlace,搜索Chinese Pack,点击安装,安装完成后,按照提示重启即可

如何使用Sonar完成代码质量检测 6

汉化后界面

如何使用Sonar完成代码质量检测 7

4、sonar 项目支持

4.1 选择项目,创建要要分析的项目

如何使用Sonar完成代码质量检测 8

4.2 创建项目令牌 可以写任意不重复的名称

如何使用Sonar完成代码质量检测 9

4.3 选择支持项目,我们这里对后台开发常见java项目进行配置,选择开发常用的开发工具maven,如图所示,会生成maven 集成命令,一定要保留下来

如何使用Sonar完成代码质量检测 10

4.4 项目集成soanr
要想让java项目支持mvn 命令,首先要集成sonar maven插件

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.4.0.905</version>
</plugin>

然后再项目中直接运行

mvn sonar:sonar \
  -Dsonar.projectKey=interfaces \
  -Dsonar.host.url=http://192.168.87.139:9000 \
  -Dsonar.login=7940503affbe9bf1ca5aee1548901f7969108976

就可以将项目推送到soanr,sonar会自动分析推送的项目信息(java项目如何集成maven,这个需要java基础,可以让开发协助,或者学测试开发相关内容,我们正式课会详细讲解)。

4.5 项目分析结果

soanr会自动分析推送的项目

如何使用Sonar完成代码质量检测 11

代码覆盖率还需要额外插件支持

如何使用Sonar完成代码质量检测 12

上面这个截图半年前搭建的版本,当时是7.9版本的内容,很多公司很可能还停留在7.*版本甚至6.*版本,最新的sonar已经升级到8.*版本, 里面集成了全文搜索引擎Elasticsearch,来加快搜索,所以需要内存空间也更大,也新加了审计功能

如何使用Sonar完成代码质量检测 13

审计功能是对增量代码检查支持,如图

如何使用Sonar完成代码质量检测 14

代码如何审计呢 可以按照他的等级 BUG>漏洞>异味 优先看BUG
每个等级中又按照阻断>严重>主要>次要>提示 5个小等级来细分

如何使用Sonar完成代码质量检测 15

点开每个等级后内容

如何使用Sonar完成代码质量检测 16

具体的怎么走读代码就需要有些代码基础或者和开发一起做代码审计,可以快速帮我们分析出程序潜在问题,提高代码质量,也是高级测试人员必备技能包。

源自公众号 自动化软件测试



留言