[发明专利]检测方法和装置有效
申请号: | 201710151960.1 | 申请日: | 2017-03-15 |
公开(公告)号: | CN108628728B | 公开(公告)日: | 2021-07-16 |
发明(设计)人: | 赵俊民;王再尚 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京龙双利达知识产权代理有限公司 11329 | 代理人: | 兰春娥;毛威 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 检测 方法 装置 | ||
1.一种检测方法,其特征在于,所述方法包括:
获取第一代码源文件,所述第一代码源文件为第二代码源文件的更新文件;
确定所述第一代码源文件的更新程序段的第一特征集合;
确定所述第一特征集合中的每个特征和第二特征集合中与所述每个特征对应的特征是否相同,其中,所述第二特征集合为所述第二代码源文件的特征集合;
当所述第一特征集合中的第一特征和所述第二特征集合中与所述第一特征对应的第二特征不同时,确定所述第一代码源文件对应的二进制文件存在兼容性问题;
当所述第一特征集合中每个特征和所述第二特征集合中与所述每个特征对应的特征都相同时,确定所述第一代码源文件对应的二进制文件不存在兼容性问题;
若所述第一代码源文件和所述第二代码源文件包括C++类,所述第一特征集合和所述第二特征集合中与所述每个特征对应的特征包括以下至少一项:虚函数在所述C++类中的定义顺序、虚函数的名称、虚函数的返回值、虚函数的参数、非静态成员变量在所述C++类中的定义顺序、非静态成员变量的类型、非静态成员变量的名称、非虚拟公有成员函数的名称、非虚拟公有成员函数的返回值、非虚拟公有成员函数的参数、至少一个基类、至少一个基类中每个基类在所述C++类中的顺序和至少一个基类中每个基类的类型;
若所述第一特征和所述第二特征为虚函数的名称,并且所述第一特征包括第一虚函数,所述第二特征不包括所述第一虚函数,
其中,所述当所述第一特征集合中的第一特征和所述第二特征集合中与所述第一特征对应的第二特征不同时,确定所述第一代码源文件对应的二进制文件存在兼容性问题,包括:
当所述第一特征集合中的第一特征和所述第二特征集合中与所述第一特征对应的第二特征不同时,确定所述第一虚函数在所述C++类中的顺序;
若所述第一虚函数在所述第二代码源文件中的所述C++类任意虚函数的前面,则确定所述第一代码源文件对应的二进制文件存在兼容性问题。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述第一虚函数在所述第二代码源文件中的所述C++类的所有虚函数的后面,则确定所述第一代码源文件对应的二进制文件不存在兼容性问题。
3.根据权利要求1所述的方法,其特征在于,若所述第一特征和所述第二特征为非虚拟公有成员函数的名称、非虚拟公有成员函数的返回值和非虚拟公有成员函数的参数,
其中,所述当所述第一特征集合中的第一特征和所述第二特征集合中与所述第一特征对应的第二特征不同时,确定所述第一代码源文件对应的二进制文件存在兼容性问题,包括:
当所述第一特征集合中的第一特征和所述第二特征集合中与所述第一特征对应的第二特征不同时,确定所述第二特征中的每个非虚拟公有成员函数是否包括在所述第一特征的非虚拟公有成员函数集合中;
若所述第二特征中的每个非虚拟公有成员函数包括在所述第一特征的非虚拟公有成员函数集合中,则确定所述第二特征中的每个非虚拟公有成员函数的返回值是否包括在所述第一特征中的与所述每个非虚拟公有成员函数对应的非虚拟公有成员函数的返回值中;
若所述第二特征中的每个非虚拟公有成员函数的返回值不包括在所述第一特征中与所述每个非虚拟公有成员函数对应的非虚拟公有成员函数的返回值中,则确定所述第一代码源文件对应的二进制文件存在兼容性问题。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
若所述第二特征中的每个非虚拟公有成员函数的返回值包括在所述第一特征中与所述每个非虚拟公有成员函数对应的非虚拟公有成员函数的返回值中,确定所述第二特征中的每个非虚拟公有成员函数的参数是否包括在所述第一特征中与所述每个非虚拟公有成员函数对应的非虚拟公有成员函数的参数中;
若所述第二特征中的非虚拟公有成员函数的参数不包括在所述第一特征中与所述每个非虚拟公有成员函数对应的非虚拟公有成员函数的参数中,则确定所述第一代码源文件对应的二进制文件存在兼容性问题。
5.根据权利要求1至4中任一项所述的方法,其特征在于,若所述第一代码源文件和所述第二代码源文件包括c函数,所述第一特征集合和所述第二特征集合中与所述每个特征对应的特征包括以下至少一项:c函数的名称、c函数的返回值和c函数的参数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710151960.1/1.html,转载请声明来源钻瓜专利网。