[发明专利]构建评测二进制代码比对工具的测试数据集的方法及系统有效
| 申请号: | 202010599618.X | 申请日: | 2020-06-28 |
| 公开(公告)号: | CN111813412B | 公开(公告)日: | 2023-03-24 |
| 发明(设计)人: | 詹科;陆忠华 | 申请(专利权)人: | 中国科学院计算机网络信息中心 |
| 主分类号: | G06F8/41 | 分类号: | G06F8/41 |
| 代理公司: | 北京亿腾知识产权代理事务所(普通合伙) 11309 | 代理人: | 陈霁 |
| 地址: | 100190 北京市*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 构建 评测 二进制 代码 工具 测试数据 方法 系统 | ||
1.构建评测二进制代码比对工具的测试数据集的方法,其特征在于,包括以下步骤:
从GitHub代码托管服务平台采集多个项目的信息,并存储于数据库系统中;所述项目的信息包括项目的各发布版本及父版本/子版本对的commit信息,项目版本信息包含当前项目的多个不同版本的源代码;
构建分布式编译源代码的环境,以所述项目各发布版本信息为输入,对项目不同版本的源代码进行编译,获取各版本源代码对应的二进制代码数据样本;
依据源代码名称获取对应父版本/子版本对的commit信息,以及遍历存储于数据库中的父版本/子版本对的commit信息,比较父版本/子版本对commit文件的信息,提取差异函数名称;
基于获取的二进制代码数据样本及差异函数名称列表,在对应的二进制代码数据样本中提取各差异函数的二进制代码。
2.根据权利要求1所述的方法,其特征在于,所述构建分布式编译源代码的环境,以所述项目各发布版本信息为输入,对项目不同版本的源代码进行编译,获取各版本源代码对应的二进制代码数据样本步骤,包括:
由主机程序设置分配任务的参数并且进行主机连接从机的操作,以及设置从机数量,主机进行任务划分操作,以将任务均衡的分配至各从机;主机连接从机,循环结构遍历各从机,开启多进程,每个进程对应一台从机,每个进程调用进程执行函数,进程同步,以保证各进程正确完成本进程的任务;
从机遍历各版本的源代码样本,调用从机本地脚本程序编译各版本的源代码样本;在从机内部,对各样本代码进行串行编译,从机之间,并行编译各样本代码;从机本地脚本程序设置工作目录,执行编译命令,并将编译生成的二进制程序拷贝至指定目录。
3.根据权利要求1所述的方法,其特征在于,提取差异函数名称步骤,包括:
定义存储父版本文件/子版本文件对的数组;
父版本/子版本对信息存储于数据库表格中;
连接数据库,遍历父版本/子版本对;
获取版本对的commit信息;
遍历各commit信息;
依据commit信息中的URL信息,下载对应的commit文件;
读取commit文件,提取非“@@”行中的函数名称结果,保存至变量matchfunc;
提取“@@”行中的文本,保存至变量matchtxt;
比较matchfunc变量与matchtxt变量是否相等,依据比较所得的不同结果,提取差异函数名称。
4.构建评测二进制代码比对工具的测试数据集的系统,其特征在于,包括:
采集单元,用于从GitHub代码托管服务平台采集多个项目的信息,并存储于数据库系统中;所述项目的信息包括项目的各发布版本及父版本/子版本对的commit信息,项目版本信息包含当前项目的多个不同版本的源代码;
编译单元,用于构建分布式编译源代码的环境,以所述项目各发布版本信息为输入,对项目不同版本的源代码进行编译,获取各版本源代码对应的二进制代码数据样本;
解析单元,用于依据源代码名称获取对应父版本/子版本对的commit信息,以及遍历存储于数据库中的父版本/子版本对的commit信息,比较父版本/子版本对commit文件的信息,提取差异函数名称;
提取单元,用于基于获取的二进制代码数据样本及差异函数名称列表,在对应的二进制代码数据样本中提取各差异函数的二进制代码。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院计算机网络信息中心,未经中国科学院计算机网络信息中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010599618.X/1.html,转载请声明来源钻瓜专利网。
- 上一篇:油位传输方法、装置及电子设备
- 下一篇:一种大米加工用清洗装置





