[发明专利]选取覆盖所有源代码结构的最小代码子集的方法有效
申请号: | 201711122407.1 | 申请日: | 2017-11-14 |
公开(公告)号: | CN109783344B | 公开(公告)日: | 2022-02-18 |
发明(设计)人: | 钱杰;王影;刘卉;殷锴 | 申请(专利权)人: | 中国航发商用航空发动机有限责任公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 骆希聪 |
地址: | 200241 上*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 选取 覆盖 所有 源代码 结构 最小 代码 子集 方法 | ||
1.一种选取覆盖所有源代码结构的最小代码子集的方法,其包括:
a.将待分析软件的源代码按照高级语言、汇编语言和库函数进行分类,得到高级语言代码集合、汇编代码集合和库函数集合;
b.对所述高级语言代码集合中的每个函数分析语法结构和编译过程中可能产生附加代码的结构,在确保所述各结构至少被覆盖一次的条件下选出使源代码目标码对比分析的工作量最小的典型结构代码子集;以及
c.合并所述典型结构代码子集、所述汇编代码集合和所述库函数集合,以得到所述待分析软件的所述最小代码子集;
其中,步骤b包括:
b1.对所述每个函数分析语法结构和编译过程中可能产生附加代码的结构,形成所述每个函数与各结构的追溯关系表;
b2.对所述各结构进行分类、统一编号,同类结构的编号全局唯一,同时记录所述每个函数对应的源代码目标码对比分析的所述工作量;
b3.对所述每个函数的结构编号进行汇总,形成具有结构类别编号、所述工作量的源代码结构分析表;
b4.根据所述源代码结构分析表构造结构-函数矩阵;
b5.在确保所述各结构至少被覆盖一次的条件下,根据所述结构-函数矩阵和所述每个函数对应的所述工作量构建数学模型;以及
b6.对所述数学模型进行求解,选取出使所述工作量最小的所述典型结构代码子集。
2.根据权利要求1所述的方法,其特征在于,在步骤b1中,对所述每个函数分析语法结构包括分析函数的返回类型、参数类型、参数个数、基本类型、构造类型、预处理、运算符、过程控制类型和嵌套次数中的一个或多个。
3.根据权利要求1所述的方法,其特征在于,在步骤b1中,对所述每个函数分析可能产生附加代码的结构包括分析编译器对代码结构上的处理和/或对代码运行时产生异常的处理。
4.根据权利要求3所述的方法,其特征在于,所述编译器对代码结构上的处理包括数组处理、隐式调用库函数和循环结构处理中的一个或多个。
5.根据权利要求1所述的方法,其特征在于,所述结构-函数矩阵为:
其中,A为结构-函数矩阵,m为结构的个数,n为函数的个数,τ0,τ1,τ2,…,τm-1表示所有函数对应的结构,f0,f1,f2,…,fn-1表示函数,zp,q取值1或0,当取值为1时,代表函数fp覆盖结构τq,当取值为0时,代表函数fp未覆盖结构τq,其中p=0,1,…m-1,q=0,1,…n-1。
6.根据权利要求5所述的方法,其特征在于,所述数学模型如下:
其中,L=[L0,L1,…,Ln-1],Ly为分析函数fy时的所述工作量,y=0,1,…,n-1;X=[X0,X1,…,Xn-1]T,Xi取值1或0,当取值为1时,代表选择函数fi放入所述典型结构代码子集,当取值为0时,代表选择函数fi不放入所述典型结构代码子集,i=0,1,…,n-1,[]T代表矩阵转置;bm×1=[1,1,…,1]T。
7.根据权利要求6所述的方法,其特征在于,根据所述数学模型求解X,将X中元素为1对应的所述函数放入所述典型结构代码子集。
8.根据权利要求1所述的方法,其特征在于,所述工作量为所述函数的源代码的行数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国航发商用航空发动机有限责任公司,未经中国航发商用航空发动机有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711122407.1/1.html,转载请声明来源钻瓜专利网。