论文摘要
程序识别使用一个已知模式分析给定程序,从而识别给定程序的意图。程序识别在程序理解、软件系统分析、编译器优化、重复代码检查和软件缺陷检测等领域中有着广泛的应用。本文提出结构语义相似的程序识别方法。主要研究内容包括以下四部分:针对代码多样化给程序分析带来困难的问题,提出基于系统依赖图的程序标准化方法。改进了传统的系统依赖图表示,使其充分表示程序的语法结构与语义。并针对已有的指针分析算法不适合于程序标准化的问题,基于控制依赖树和改进的指向表示方法提出流敏感和上下文敏感的指针分析算法,提高指针分析和数据流分析的准确性,并使得指针分析结果可直接应用于程序标准化转换中。最后将改进的系统依赖图、指针分析算法与程序标准化过程有机结合,提出基于系统依赖图的程序标准化模型,根据程序标准化转换规则,对系统依赖图进行语义不变的转换,从而消除代码多样化。实验结果表明,本文提出的指针分析算法准确性高于已有的Emami指针分析算法的准确性,并且应用于程序标准化时可显著提高代码多样化消除率。本文的程序标准化方法的代码多样化消除率高于已有的Hattori与Ishi方法的代码多样化消除率,可以有效地消除代码多样化,提高程序分析的灵活性,为判定程序的结构语义相似奠定良好的基础。针对基于图提取子程序时间与空间开销巨大的问题,提出结构度量相似的候选子程序提取方法。在已有的代码相似度及编辑距离的定理和推论的基础上提出新的推论,将特征向量聚类应用于候选子程序提取中。首先,将代码表示为控制依赖树,通过基本代码标准化,消除影响度量值计算的代码多样化。然后,采用特征向量描述程序的结构信息,将复杂的图的相似度求解问题转换为简单的相似向量的聚类问题,快速提取可能与给定模式相似的候选子程序。实验结果表明,该方法能够过滤掉大部分不相似代码,并且可以识别含有代码多样化的代码,为大规模软件在语义级别上的程序识别奠定基础。针对已有的程序识别方法不能较好地在语义级别上识别程序,并且不能定量地衡量代码的语义相似度的问题,提出基于系统依赖图的语义级别的程序识别方法。在此基础上提出基于程序转换和语义分析的编程题自动评分方法,克服了传统的基于动态测试自动评分和基于软件度量分析的自动评分方法没有考虑学生程序是怎样实现编程任务的缺陷,为编程题自动评分提供新思路。实验结果表明,基于系统依赖图的语义级别的程序识别方法能够准确计算代码的语义相似度,较好地解决程序识别结果的表示和准确性问题。针对传统基于度量值的程序识别方法准确率低和基于图的程序识别方法复杂度高的问题,在上述研究的基础上,提出度量值和图相结合的程序识别方法。首先,将模式程序和用户程序表示为改进的系统依赖图。然后,以模块为单位,采用结构度量相似的候选子程序提取方法,缩小语义级别程序识别的搜索空间,提高算法的效率。最后,对可能相似的候选子程序进行高级代码多样化和精确的语义级别的程序匹配,识别语义相似的子程序。在此基础上提出语义级别的相似代码检测方法,为相似代码检测提供新思路。实验结果表明,度量值和图相结合的程序识别方法可以有效地处理大规模代码,不但能识别完全相同的代码,还可以识别包含代码多样化的相似代码,实现语义级别的程序识别,准确率和效率高于GPlag和integrated logic-domain model两种方法。综上所述,本文提出了结构语义相似的程序识别方法,解决了代码多样化的识别、识别结果的表示和准确性、识别方法的可扩展性等关键技术问题。
论文目录
相关论文文献
- [1].基于云计算的网络资源缺失信息识别方法[J]. 电子元器件与信息技术 2019(11)
- [2].武汉市主城区现状用地自主识别方法探索[J]. 中国土地 2020(02)
- [3].基于场景-部件的人体行为识别方法[J]. 测控技术 2020(02)
- [4].基于人眼识别的人脸朝向识别方法[J]. 信息记录材料 2020(01)
- [5].产品虚假评论文本识别方法研究述评[J]. 数据分析与知识发现 2019(09)
- [6].网络谣言识别方法及展望[J]. 网络空间安全 2016(Z2)
- [7].物联网智能终端设备识别方法[J]. 电信科学 2017(02)
- [8].一种分布式人脸识别方法及性能优化[J]. 光学精密工程 2017(03)
- [9].振动目标产生的瑞雷波的识别方法研究[J]. 沈阳理工大学学报 2017(02)
- [10].松辽盆地二氧化碳气层录井识别方法[J]. 石化技术 2017(10)
- [11].用于机动目标跟踪的分段机动识别方法[J]. 电波科学学报 2015(01)
- [12].“特殊的平行四边形”易错点剖析[J]. 初中生世界 2017(15)
- [13].基于深度学习的人脸识别方法研究进展[J]. 现代计算机 2020(01)
- [14].基于典型相关分析特征融合的行人再识别方法[J]. 光电子·激光 2020(05)
- [15].4G网络深度覆盖“283”识别方法研究[J]. 数字通信世界 2019(03)
- [16].颠覆性技术识别方法研究与应用分析[J]. 军事医学 2018(01)
- [17].一种大象流两级识别方法[J]. 电信科学 2017(03)
- [18].多角度人脸检测与识别方法研究[J]. 电子设计工程 2017(11)
- [19].卫星图像传输跟踪优化识别方法仿真研究[J]. 计算机仿真 2017(09)
- [20].基于主题模型和情感分析的垃圾评论识别方法研究[J]. 计算机科学 2017(10)
- [21].同形异义词机器辅助识别方法研究[J]. 数字图书馆论坛 2015(05)
- [22].4G网络深度覆盖精确需求识别方法研究[J]. 电信工程技术与标准化 2015(09)
- [23].基于深度流形表示学习的工业过程多故障识别方法[J]. 计算机与数字工程 2020(10)
- [24].试分析基于区域生长的道路和桥梁识别方法的研究[J]. 科技创业家 2014(01)
- [25].基于统计的人脸识别方法综述[J]. 安阳工学院学报 2012(04)
- [26].基于情景分析的项目风险识别方法研究[J]. 理论观察 2012(05)
- [27].基于深度学习的视频行为识别方法综述[J]. 电信科学 2019(12)
- [28].基于深度学习的场景识别方法综述[J]. 计算机工程与应用 2020(05)
- [29].基于特征的矢量图形符号渐进识别方法[J]. 软件导刊 2020(05)
- [30].天然气管道泄漏的声-压耦合识别方法[J]. 应用声学 2020(03)