程序代码的比对方法、比对装置制造方法及图纸

技术编号:25345703 阅读:48 留言:0更新日期:2020-08-21 17:04
本发明专利技术公开了一种程序代码的比对方法、比对装置,其中,比对方法包括:定义程序代码键的组成;扫描标准程序代码,形成由键组成的标准程序代码的树型结构;根据键的组成,提取标准程序代码中涉及键的代码段,以获取标注的代码段,并根据标注的代码段确定标准程序代码的值的组成;根据标准程序代码的树型结构和值的组成,形成标准程序代码的键‑值树型结构;根据标注的代码段,将标准程序代码的键‑值树型结构进行剪枝,形成特征代码;扫描新程序代码,将新程序代码与所述特征代码进行比对。由此,该方法可以对程序代码进行分层、分段解析,并形成具有特征的特征代码,大大提升了相似代码的匹配效率,以便于程序批改时对代码进行比对。

【技术实现步骤摘要】
程序代码的比对方法、比对装置
本专利技术涉及一种程序分析领域,特别涉及一种程序代码的比对方法、一种程序代码的比对装置、一种计算机设备、一种非临时性计算机可读存储介质和一种计算机程序产品。
技术介绍
随着大数据、人工智能、云计算、物联网等新兴技术的不断发展,编程语言已经成为各大高校普适性教学的一部分,且对学生的要求逐年提高。在新时代,编程不止是一种计算机语言,更是未来人工智能时代的“沟通”语言。随着参加编程的教育人群增多和教学内容难度的提升,如何更加快速、正确、智能地批改编程语言(程序代码)成为亟待解决的难题。
技术实现思路
本专利技术旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本专利技术的一个目的在于提出一种程序代码的比对方法,该方法可以对程序代码进行分层、分段解析,并形成具有特征的特征代码,大大提升了相似代码的匹配效率,以便于程序批改时对代码进行比对。本专利技术的第二个目的在于提出一种程序代码的比对装置。本专利技术的第三个目的在于提出一种计算机设备。本专利技术的第四个目的在于提出一种非临时性计算机可读存储介质。本专利技术的第五个目的在于提出一种计算机程序产品。为达到上述目的,本专利技术第一方面的实施例提出了一种程序代码的比对方法,包括以下步骤:定义程序代码键的组成;扫描标准程序代码,形成由键组成的标准程序代码的树型结构;根据所述键的组成,提取所述标准程序代码中涉及键的代码段,以获取标注的代码段,并根据所述标注的代码段确定所述标准程序代码的值的组成;根据所述标准程序代码的树型结构和所述值的组成,形成所述标准程序代码的键-值树型结构;根据所述标注的代码段,将所述标准程序代码的键-值树型结构进行剪枝,形成特征代码;扫描新程序代码,将所述新程序代码与所述特征代码进行比对根据本专利技术实施例的程序代码的比对方法,首先定义程序代码键的组成,然后扫描标准程序代码,形成由键组成的标准程序代码的树型结构,再根据键的组成,提取标准程序代码中涉及键的代码段,以获取标注的代码段,并根据标注的代码段确定标准程序代码的值的组成,再根据标准程序代码的树型结构和值的组成,形成标准程序代码的键-值树型结构,根据标注的代码段,将标准程序代码的键-值树型结构进行剪枝,形成特征代码,最后扫描新程序代码,将新程序代码与特征代码进行比对。由此,该方法可以对程序代码进行分层、分段解析,并形成具有特征的特征代码,大大提升了相似代码的匹配效率,以便于程序批改时对代码进行比对。另外,根据本专利技术上述实施例的程序代码的比对方法还可以具有如下附加的技术特征:根据本专利技术的一个实施例,所述将所述新程序代码与所述特征代码进行比对,包括:定义程序代码键的组成;扫描新程序代码,形成由键组成的所述新程序代码的树型结构;根据所述键的组成,提取所述新程序代码中涉及键的代码段,以获取标注的代码段,并根据所述标注的代码段确定所述新程序代码的值的组成;根据所述新程序代码的树型结构和所述值的组成,形成所述新程序代码的键-值树型结构;将所述特征代码的键与所述新程序代码的键-值树型结构的键进行比对,以获取所述新程序代码与所述特征代码相似的代码段;如果所述特征代码的键与所述新程序代码的键-值树型结构的键存在相同部分,则将相同部分键对应的值进行比对;如果所述相同部分键对应的值相同,则判断所述标准代码与所述新程序代码的存在相同的代码段;如果所述相同部分键对应的值不相同,则判断所述标准代码与所述新程序代码的不存在相同的代码段。根据本专利技术的一个实施例,所述将所述新程序代码与所述特征代码进行比对,还包括:如果所述特征代码的键与所述新程序代码的键-值树型结构的键无相同部分,则判断所述标准代码与所述新程序代码不存在相同的代码段。根据本专利技术的一个实施例,形成由键组成的树型结构,包括:以主函数为入口,提取出所有变量、常量、库函数、普通函数,进行泛化处理,形成由键组成的树型结构。根据本专利技术的一个实施例,所述键-值树型结构以JSON(ObjectNotation,JS对象简谱,一种轻量级的数据交换格式)格式进行存储。根据本专利技术的一个实施例,所述程序代码键的组成包括:键类型、键名称、程序ID、节点ID、父节点ID和层级。为达到上述目的,本专利技术第二方面实施例提出了一种程序代码的比对装置,包括:定义模块,用于定义程序代码键的组成;扫描模块,用于扫描标准程序代码,形成由键组成的标准程序代码的树型结构;确定模块,用于根据所述键的组成,提取所述标准程序代码中涉及键的代码段,以获取标注的代码段,并根据所述标注的代码段确定所述标准程序代码的值的组成;形成模块,用于根据所述标准程序代码的树型结构和所述值的组成,形成所述标准程序代码的键-值树型结构;剪枝模块,用于根据所述标注的代码段,将所述标准程序代码的键-值树型结构进行剪枝,形成特征代码;比对模块,用于扫描新程序代码,将所述新程序代码与所述特征代码进行比对。根据本专利技术实施例的程序代码的比对装置,通过定义模块定义程序代码键的组成,扫描模块扫描标准程序代码,形成由键组成的标准程序代码的树型结构,确定模块根据键的组成,提取标准程序代码中涉及键的代码段,以获取标注的代码段,并根据标注的代码段确定标准程序代码的值的组成,形成模块根据标准程序代码的树型结构和值的组成,形成标准程序代码的键-值树型结构,剪枝模块根据标注的代码段,将标准程序代码的键-值树型结构进行剪枝,形成特征代码,比对模块,扫描新程序代码,将新程序代码与所述特征代码进行比对。由此,该装置可以对程序代码进行分层、分段解析,并形成具有特征的特征代码,大大提升了相似代码的匹配效率,以便于程序批改时对代码进行比对。另外,根据本专利技术上述实施例的程序代码的比对装置还可以具有如下附加的技术特征:根据本专利技术的一个实施例,所述扫描模块还用于:扫描新程序代码,形成由键组成的所述新程序代码的树型结构;所述确定模块还用于根据所述键的组成,提取所述新程序代码中涉及键的代码段,以获取标注的代码段,并根据所述标注的代码段确定所述新程序代码的值的组成;所述形成模块还用于根据所述新程序代码的树型结构和所述值的组成,形成所述新程序代码的键-值树型结构;所述比对模块具体用于:将所述特征代码的键与所述新程序代码的键-值树型结构的键进行比对,以获取所述新程序代码与所述特征代码相似的代码段;如果所述特征代码的键与所述新程序代码的键-值树型结构的键存在相同部分,则将相同部分键对应的值进行比对;如果所述相同部分键对应的值相同,则判断所述标准代码与所述新程序代码的存在相同的代码段,如果所述相同部分键对应的值不相同,则判断所述标准代码与所述新程序代码的不存在相同的代码段。根据本专利技术的一个实施例,所述比对模块还用于:如果所述特征代码的键与所述新程序代码的键-值树型结构的键无相同部分,则判断述标准代码与所述新程序代码不存在相同的代码段。根据本专利技术的一个实施例,所述扫描模块具体用于:以主函数为入口,提取出所有变量、常量、库函数、普通函数,进行泛化处理,形成由键组成的树型结构。...

【技术保护点】
1.一种程序代码的比对方法,其特征在于,包括以下步骤:/n定义程序代码键的组成;/n扫描标准程序代码,形成由键组成的标准程序代码的树型结构;/n根据所述键的组成,提取所述标准程序代码中涉及键的代码段,以获取标注的代码段,并根据所述标注的代码段确定所述标准程序代码的值的组成;/n根据所述标准程序代码的树型结构和所述值的组成,形成所述标准程序代码的键-值树型结构;/n根据所述标注的代码段,将所述标准程序代码的键-值树型结构进行剪枝,形成特征代码;/n扫描新程序代码,将所述新程序代码与所述特征代码进行比对。/n

【技术特征摘要】
1.一种程序代码的比对方法,其特征在于,包括以下步骤:
定义程序代码键的组成;
扫描标准程序代码,形成由键组成的标准程序代码的树型结构;
根据所述键的组成,提取所述标准程序代码中涉及键的代码段,以获取标注的代码段,并根据所述标注的代码段确定所述标准程序代码的值的组成;
根据所述标准程序代码的树型结构和所述值的组成,形成所述标准程序代码的键-值树型结构;
根据所述标注的代码段,将所述标准程序代码的键-值树型结构进行剪枝,形成特征代码;
扫描新程序代码,将所述新程序代码与所述特征代码进行比对。


2.根据权利要求1所述的程序代码的比对方法,其特征在于,所述将所述新程序代码与所述特征代码进行比对,包括:
定义程序代码键的组成;
扫描新程序代码,形成由键组成的所述新程序代码的树型结构;
根据所述键的组成,提取所述新程序代码中涉及键的代码段,以获取标注的代码段,并根据所述标注的代码段确定所述新程序代码的值的组成;
根据所述新程序代码的树型结构和所述值的组成,形成所述新程序代码的键-值树型结构;
将所述特征代码的键与所述新程序代码的键-值树型结构的键进行比对,以获取所述新程序代码与所述特征代码相似的代码段;
如果所述特征代码的键与所述新程序代码的键-值树型结构的键存在相同部分,则将相同部分键对应的值进行比对;
如果所述相同部分键对应的值相同,则判断所述标准代码与所述新程序代码的存在相同的代码段;
如果所述相同部分键对应的值不相同,则判断所述标准代码与所述新程序代码的不存在相同的代码段。


3.根据权利要求2所述的程序代码的比对方法,其特征在于,所述将所述新程序代码与所述特征代码进行比对,还包括:
如果所述特征代码的键与所述新程序代码的键-值树型结构的键无相同部分,则判断所述标准代码与所述新程序代码不存在相同的代码段。


4.根据权利要求1-3中任一项所述的程序代码的比对方法,其特征在于,形成由键组成的树型结构,包括:
以主函数为入口,提取出所有变量、常量、库函数、普通函数,进行泛化处理,形成由键组成的树型结构。


5.根据权利要求1-3...

【专利技术属性】
技术研发人员:游辉敏顾继光
申请(专利权)人:南京域智智能科技有限公司
类型:发明
国别省市:江苏;32

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1