[发明专利]代码覆盖率收集方法和装置有效
申请号: | 201611248183.4 | 申请日: | 2016-12-29 |
公开(公告)号: | CN106874187B | 公开(公告)日: | 2020-09-11 |
发明(设计)人: | 符阳辉;任洪平 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 广州华进联合专利商标代理有限公司 44224 | 代理人: | 何平;邓云鹏 |
地址: | 518000 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 代码 覆盖率 收集 方法 装置 | ||
1.一种代码覆盖率收集方法,应用在覆盖率收集终端服务器,其特征在于,所述覆盖率收集终端服务器上运行业务平台,为用户使用的终端提供业务服务,所述覆盖率收集终端服务器在为终端提供业务服务的过程中,对提供业务服务过程中执行的源文件的源代码进行覆盖率数据的收集,所述方法包括步骤:
接收终端发送的业务请求,所述业务请求包括应用标识;
根据所述业务请求获取与所述应用标识对应的源文件、源文件标识以及所述源文件的语法树信息;
将所述源文件的源代码加载到内存;
执行加载到内存的所述源代码,并在所述源代码的执行过程中,基于所述语法树信息记录执行所述源代码的代码行的覆盖率数据;
向覆盖率收集中心服务器发送覆盖率上报信息,所述覆盖率上报信息包括所述源文件标识、所述覆盖率数据,由所述覆盖率收集中心服务器根据各覆盖率收集终端服务器上传的覆盖率上报信息确定所述源文件的代码覆盖率。
2.根据权利要求1所述的代码覆盖率收集方法,其特征在于,还包括步骤:
在将所述源文件的源代码加载到内存时,基于所述语法树信息对加载到内存的源代码进行插桩。
3.根据权利要求1或2所述的代码覆盖率收集方法,其特征在于,所述语法树信息包括函数定义语句、分支语句以及代码行中的至少一种,所述代码覆盖率包括函数覆盖率、分支语句覆盖率以及代码行覆盖率中的至少一种。
4.一种代码覆盖率收集方法,应用在覆盖率收集中心服务器,其特征在于,包括步骤:
接收各覆盖率收集终端服务器发送的覆盖率上报信息,所述覆盖率上报信息包括源文件标识以及对应的覆盖率数据,所述覆盖率数据为所述覆盖率收集终端服务器在接收到终端发送的包含应用标识的业务请求时,获取与所述应用标识对应的源文件、所述源文件标识以及所述源文件的语法树信息,并将所述源文件的源代码加载到内存后,在加载到内存的所述源代码的执行过程中基于所述语法树信息记录执行所述源代码的代码行的覆盖率数据;所述覆盖率收集终端服务器上运行业务平台,为用户使用的终端提供业务服务,所述覆盖率收集终端服务器在为终端提供业务服务的过程中,对提供业务服务过程中执行的源文件的源代码进行覆盖率数据的收集;
根据各覆盖率收集终端服务器发送的所述覆盖率上报信息,确定所述源文件标识对应的源文件的代码覆盖率。
5.根据权利要求4所述的代码覆盖率收集方法,其特征在于,包括下述三项中的至少一项:
通过将各所述覆盖率收集终端服务器上传的所述源文件标识对应的覆盖率数据与所述源文件标识对应的源代码进行比较,根据比较结果确定所述源文件标识对应的源文件的代码覆盖率;
还包括步骤:根据各所述覆盖率收集终端服务器发送的所述覆盖率上报信息,对所述源文件标识对应的源代码中、各所述覆盖率收集终端服务器均未执行的代码行进行标记;根据标记的代码行、所述代码覆盖率生成可视化代码覆盖率报告;
所述语法树信息包括函数定义语句、分支语句以及代码行中的至少一种,所述代码覆盖率包括函数覆盖率、分支语句覆盖率以及代码行覆盖率中的至少一种。
6.一种代码覆盖率收集装置,设置在覆盖率收集终端服务器,其特征在于,所述覆盖率收集终端服务器上运行业务平台,为用户使用的终端提供业务服务,所述覆盖率收集终端服务器在为终端提供业务服务的过程中,对提供业务服务过程中执行的源文件的源代码进行覆盖率数据的收集,所述装置包括:
请求接收模块,用于接收终端发送的业务请求,所述业务请求包括应用标识;
文件及信息获取模块,用于根据所述业务请求获取与所述应用标识对应的源文件、源文件标识以及所述源文件的语法树信息;
代码加载模块,用于将所述源文件的源代码加载到内存;
数据记录模块,用于在加载到内存的所述源代码的执行过程中,基于所述语法树信息记录执行所述源代码的代码行的覆盖率数据;
信息上报模块,用于向覆盖率收集中心服务器发送覆盖率上报信息,所述覆盖率上报信息包括所述源文件标识、所述覆盖率数据,由所述覆盖率收集中心服务器根据各覆盖率收集终端服务器上传的覆盖率上报信息确定所述源文件的代码覆盖率。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611248183.4/1.html,转载请声明来源钻瓜专利网。