随着掌门的发展,代码的积累量已经达到了吨级,偶尔会出现如下一些问题:
1、线上环境偶尔会抛出一些平时不常出现的报错信息、安全隐患以及一些问题;
2、开发人员线上查问题时,偶尔出现一些具有干扰的报错信息;
3、人员更变、模块更变、开发习惯导致在熟悉代码过程中效率不高;
为了提高代码的质量,尽量避免一些没有必要存在的问题,故引进SonarQube静态代码监控平台。它主要从7个维度检测代码质量,主要通过插件形式对java,C#,C/C++,PL/SQL,Cobol,JavaScrip,Groovy等等二十几种编程语言的代码质量管理与检测。
SonarQube框架主要包含以下4个部分:
Project
SonarQube Sacnner
SonarQube Server
SonarQube Database
静态代码扫描结果图:
1)流程图如下:
SonarQube需搭配Sonar-Scanner、Jenkins、git、MySQL完成全流程自动扫描,如下:
2)报告部分相关代码展示如下:
3)在Jenkins中SonarQube部分配置如下:
搭建过程中主要遇到如下问题:
问题1:
解决方式:
修改config下的jvm.option文件
# vim elasticsearch/elasticsearch-5.5.1/config/jvm.opstions
将
-Xms2g
-Xmx2g
改为
-Xms1g
-Xmx1g
或更小
-Xms512M
-Xmx512M
再次启动即可
问题2:
解决方式:
1、修改/etc/security/limits.conf
* hard nofile 65536
* soft nofile 65536
* soft nproc 65536
* hard nproc 65536
2、修改/etc/pam.d/sshd
[root@master config]# cat /etc/pam.d/sshd
session required /lib64/security/pam_limits.so
[root@master config]# cat /etc/pam.d/common-session
session required /lib64/security/pam_limits.so
3、修改/etc/profile增加一条
ulimit -n 65536
4、重启sshd服务
/etc/init.d/sshd restart
SonarQube在部门项目中的具体应用
每周邮件自动通知各组leader一次,汇报各个项目组上周所有项目落地情况,如图:
报告部分相关代码展示如下:
每天自动发送日报给各组leader以及相关开发测试人员,如图:
问题一:
在落地过程中开发也修复了一些问题,比如空指针问题,红框中的代码是扫描出问题后修复的:
若getChildrenList为空,则程序就会报空指针,因此可以看出是可能存在空指针问题的。
问题二:
冗余的代码导致代码不精简
问题三:
逻辑判断不准确、导致部分代码永远无法执行
process.exit(1)在throw之后,导致这一行代码永远无法执行
问题四:
前端js使用了目前比较敏感的函数,导致代码可能存在安全漏洞,如下:
eval该参数不推荐使用,理由如下:
问题五:
后端常量定义不规范,存在潜在安全漏洞,如下:
定义的常量没有添加final 关键字,如果在后续开发中不小心修改了该常量,那么项目中所有引用该常量的程序都有可能出现问题。
问题六:
日志打印不规范,如图:
直接使用该方式会导致在日志系统中没办法查询问题并且该方式的性能不太好
经过几个月的推动和修复,数据库中有了一定的数据储备,于是产生了Bug燃尽图和漏洞燃尽图(虚线),如图:
本文作者
胡陈东,5年测试经验,擅长性能测试,自动化测试。熟悉java, python。现任职掌门1对1测试开发工程师。
刘万红,多年互联网大厂测试经历,现任职掌门1对1研发部测试经理 擅长接口/性能/自动化等各种测试平台开发。