用于标识源代码版本之间的语义区别的方法和装置的制造方法_5

文档序号:9687265阅读:来源:国知局
在通过计算机或其他可编程数据 处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功 能/动作的装置。也可W把送些计算机可读程序指令存储在计算机可读存储介质中,送些 指令使得计算机、可编程数据处理装置和/或其他设备W特定方式工作,从而,存储有指令 的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框 中规定的功能/动作的各个方面的指令。
[0108] 也可W把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他 设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,W产 生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的 指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
[0109] 附图中的流程图和框图显示了根据本发明的多个实施方式的系统、方法和计算机 程序产品的可能实现的体系架构、功能和操作。在送点上,流程图或框图中的每个方框可 W代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多 个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功 能也可不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可W基本并行 地执行,它们有时也可W按相反的顺序执行,送依所涉及的功能而定。也要注意的是,框图 和/或流程图中的每个方框、W及框图和/或流程图中的方框的组合,可W用执行规定的功 能或动作的专用的基于硬件的系统来实现,或者可W用专用硬件与计算机指令的组合来实 现。
[0110] W上已经描述了本发明的各实施方式,上述说明是示例性的,并非穷尽性的,并且 也不限于所披露的各实施方式。在不偏离所说明的各实施方式的范围和精神的情况下,对 于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选 择,旨在最好地解释各实施方式的原理、实际应用或对市场中的技术的技术改进,或者使本 技术领域的其他普通技术人员能理解本文披露的各实施方式。
【主权项】
1. 一种用于标识源代码版本之间的语义区别的方法,包括: 分别获取第一源代码版本的第一调试信息和第二源代码版本的第二调试信息; 通过比较所述第一调试信息与所述第二调试信息,确定在所述第二源代码版本中是否 存在与所述第一源代码版本中的第一函数相匹配的第二函数;以及 基于所述确定的结果标识所述语义区别。2. 根据权利要求1所述的方法,其中所述基于所述确定的结果标识所述语义区别包 括: 响应于确定不存在所述第二函数,将所述第一函数标识为所述语义区别。3. 根据权利要求2所述的方法,其中所述通过比较所述第一调试信息与所述第二调试 信息,确定在所述第二源代码版本中是否存在与所述第一源代码版本中的第一函数相匹配 的第二函数包括: 分别从所述第一调试信息提取所述第一函数的第一原型,以及从所述第二调试信息提 取函数的原型;以及 响应于所述函数的原型不匹配于所述第一原型,确定不存在所述第二函数;否则确定 存在所述第二函数。4. 根据权利要求3所述的方法,其中所述响应于所述函数的原型不匹配于所述第一原 型,确定不存在所述第二函数包括: 响应于所述函数的原型的哈希值不匹配于所述第一原型的第一哈希值,确定不存在所 述第二函数。5. 根据权利要求1-4中的任一项所述的方法,其中所述基于所述确定的结果标识所述 语义区别进一步包括:响应于确定存在所述第二函数, 分别从所述第一调试信息中提取所述第一函数的第一编程计数器范围,以及从所述第 二调试信息中提取所述第二函数的第二编程计数器范围;以及 响应于所述第一编程计数器范围不匹配于所述第二编程计数器范围,将所述第一函数 标识为所述语义区别。6. 根据权利要求1-4中的任一项所述的方法,其中所述基于所述确定的结果标识所述 语义区别进一步包括:响应于确定存在所述第二函数, 分别从所述第一调试信息中提取所述第一函数的第一行的指令序列,以及从所述第二 调试信息中提取所述第二函数的第二行的指令序列;以及 响应于所述第一行的指令序列不匹配于所述第二行的指令序列,将造成所述第一行的 指令序列和所述第二行的指令序列之间的不匹配的代码行标识为所述语义区别。7. 根据权利要求1-4中的任一项所述的方法,其中所述基于所述确定的结果标识所述 语义区别进一步包括:响应于确定存在所述第二函数, 分别从所述第一调试信息中提取所述第一函数的第一变量信息,以及从所述第二调试 信息中提取所述第二函数的第二变量信息; 响应于所述第一变量信息不匹配于所述第二变量信息,确定所述第一调试信息中与所 述第一变量信息相关联的第一指令是否匹配于所述第二调试信息中与所述第二变量信息 相关联的第二指令;以及 响应于所述第一指令不匹配于所述第二指令,将造成第一变量信息和所述第二变量信 息之间的不匹配的变量标识为所述语义区别。8. 根据权利要求1-4中的任一项所述的方法,其中所述基于所述确定的结果标识所述 语义区别进一步包括:响应于确定存在所述第二函数: 分别从所述第一调试信息获取所述第一函数的第一指令序列,以及从所述第二调试信 息获取所述第二函数的第二指令序列;以及 响应于所述第一指令序列匹配于所述第二指令序列,确定所述第一函数与所述第二函 数之间不存在语义区别。9. 根据权利要求1所述的方法,其中所述分别获取第一源代码版本的第一调试信息和 第二源代码版本的第二调试信息包括: 从编译所述第一源代码所得的第一目标文件和第一可执行文件中的任一项获取所述 第一调试信息;以及 从编译所述第二源代码所得的第二目标文件和第二可执行文件中的任一项获取所述 第二调试信息。10. -种用于标识源代码版本之间的语义区别的装置,包括: 获取模块,配置用于分别获取第一源代码版本的第一调试信息和第二源代码版本的第 二调试信息; 确定模块,配置用于通过比较所述第一调试信息与所述第二调试信息,确定在所述第 二源代码版本中是否存在与所述第一源代码版本中的第一函数相匹配的第二函数;以及 标识模块,配置用于基于所述确定的结果标识所述语义区别。11. 根据权利要求10所述的装置,其中所述标识模块包括: 第一标识模块,配置用于响应于确定不存在所述第二函数,将所述第一函数标识为所 述语义区别。12. 根据权利要求11所述的装置,其中所述确定模块包括: 原型提取模块,配置用于分别从所述第一调试信息提取所述第一函数的第一原型,以 及从所述第二调试信息提取函数的原型;以及 函数确定模块,配置用于响应于所述函数的原型不匹配于所述第一原型,确定不存在 所述第二函数;否则确定存在所述第二函数。13. 根据权利要求12所述的装置,其中所述函数确定模块包括: 哈希模块,配置用于响应于所述函数的原型的哈希值不匹配于所述第一原型的第一哈 希值,确定不存在所述第二函数。14. 根据权利要求10-13中的任一项所述的装置,其中所述标识模块包括: 范围提取模块,配置用于响应于确定存在所述第二函数,分别从所述第一调试信息中 提取所述第一函数的第一编程计数器范围,以及从所述第二调试信息中提取所述第二函数 的第二编程计数器范围;以及 第二标识模块,配置用于响应于所述第一编程计数器范围不匹配于所述第二编程计数 器范围,将所述第一函数标识为所述语义区别。15. 根据权利要求10-13中的任一项所述的装置,其中所述标识模块进一步包括: 行号信息提取模块,配置用于分别从所述第一调试信息中提取所述第一函数的第一行 的指令序列,以及从所述第二调试信息中提取所述第二函数的第二行的指令序列;以及 第三标识模块,配置用于响应于所述第一行的指令序列不匹配于所述第二行的指令序 列,将造成所述第一行的指令序列和所述第二行的指令序列之间的不匹配的代码行标识为 所述语义区别。16. 根据权利要求10-13中的任一项所述的装置,其中所述标识模块进一步包括: 变量信息提取模块,配置用于响应于确定存在所述第二函数,分别从所述第一调试信 息中提取所述第一函数的第一变量信息,以及从所述第二调试信息中提取所述第二函数的 第二变量信息; 指令比较模块,配置用于响应于所述第一变量信息不匹配于所述第二变量信息,确定 所述第一调试信息中与所述第一变量信息相关联的第一指令是否匹配于所述第二调试信 息中与所述第二变量信息相关联的第二指令;以及 第四标识模块,配置用于响应于所述第一指令不匹配于所述第二指令,将造成第一变 量信息和所述第二变量信息之间的不匹配的变量标识为所述语义区别。17. 根据权利要求10-13中的任一项所述的装置,其中所述标识模块进一步包括: 指令序列提取模块,配置用于响应于确定存在所述第二函数:分别从所述第一调试信 息提取所述第一函数的第一指令序列,以及从所述第二调试信息提取所述第二函数的第二 指令序列;以及 第五标识模块,配置用于响应于所述第一指令序列匹配于所述第二指令序列,确定所 述第一函数与所述第二函数之间不存在语义区别。18. 根据权利要求10所述的装置,其中所述获取模块包括: 第一获取模块,配置用于从编译所述第一源代码所得的第一目标文件和第一可执行文 件中的任一项获取所述第一调试信息;以及 第二获取模块,配置用于从编译所述第二源代码所得的第二目标文件和第二可执行文 件中的任一项获取所述第二调试信息。
【专利摘要】本发明涉及用于标识源代码版本之间的语义区别的方法和装置。在本发明的一个实施方式中,提供了一种用于标识源代码版本之间的语义区别的方法,包括:分别获取第一源代码版本的第一调试信息和第二源代码版本的第二调试信息;通过比较所述第一调试信息与所述第二调试信息,确定在所述第二源代码版本中是否存在与所述第一源代码版本中的第一函数相匹配的第二函数;以及基于所述确定的结果标识所述语义区别。在本发明的一个实施方式中,提供了一种用于标识源代码版本之间的语义区别的装置。采用本发明,可以快速并且准确地标识各个源代码版本之间的语义区别。
【IPC分类】G06F9/44
【公开号】CN105446723
【申请号】CN201410444102
【发明人】林科文, 纪金松, 张青山, 张玉珩
【申请人】国际商业机器公司
【公开日】2016年3月30日
【申请日】2014年9月2日
【公告号】US20160062765
当前第5页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1