Sonar是什么
1、Sonar全称SonarQube是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以多维度检测代码质量,是代码审查利器
通过插件形式,可以支持包括java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测 ,可以帮我们分析bug, 漏洞,异味,代码覆盖率,及代码重复问题,如图所示
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 查看启动日志

发现sonarqube容器stopped,没有启动起来,原因是
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
说明最新版本sonarqube需要内存大小不低于262144,那首先要保证运行环境的内存大小不低于3G,例如我采用的VMware直接给加大到3G以上

然后在进入虚机环境
找到/etc/文件最后添加一行:
vm.max_map_count=262144
立即生效, 执行:
/sbin/sysctl -p
最后再执行 docker restart sq 重启sq;
使用docker ps 查看,出现sonarqube容器说明启动成功

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

3 sonar 汉化问题
默认的sonar 满屏英文,也不好理解,可以利用sonar 的插件体系,直接汉化
登录sonar并选择Administration中,选择MarketPlace,搜索Chinese Pack,点击安装,安装完成后,按照提示重启即可

汉化后界面

4 sonar 项目支持
4.1 选择项目,创建要要分析的项目

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

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

4.4 项目集成soanr
要想让java项目支持mvn 命令,首先要集成sonar maven插件
sonar-maven-plugin
3.4.0.905
然后再项目中直接运行
mvn sonar:sonar
-=interfaces
-=http://192.168.87.139:9000
-=7940503affbe9bf1ca5aee1548901f7969108976
就可以将项目推送到soanr,sonar会自动分析推送的项目信息(java项目如何集成maven,这个需要java基础,可以让开发协助,或者学测试开发相关内容,我们正式课会详细讲解)。
4.5 项目分析结果
soanr会自动分析推送的项目

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

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

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

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

点开每个等级后内容

具体的怎么走读代码就需要有些代码基础或者和开发一起做代码审计,可以快速帮我们分析出程序潜在问题,提高代码质量,也是高级测试人员必备技能包。
作者: Testfan 极光
出处:微信公众号:自动化软件测试平台
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接