CN109726376A - 一种标准模板的生成方法、装置及电子设备 - Google Patents

一种标准模板的生成方法、装置及电子设备 Download PDF

Info

Publication number
CN109726376A
CN109726376A CN201811571315.6A CN201811571315A CN109726376A CN 109726376 A CN109726376 A CN 109726376A CN 201811571315 A CN201811571315 A CN 201811571315A CN 109726376 A CN109726376 A CN 109726376A
Authority
CN
China
Prior art keywords
node
subtree
code
code block
detected
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811571315.6A
Other languages
English (en)
Other versions
CN109726376B (zh
Inventor
李恒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Zhongyuan Network Co Ltd
Original Assignee
Shanghai Zhongyuan Network Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Zhongyuan Network Co Ltd filed Critical Shanghai Zhongyuan Network Co Ltd
Priority to CN201811571315.6A priority Critical patent/CN109726376B/zh
Publication of CN109726376A publication Critical patent/CN109726376A/zh
Application granted granted Critical
Publication of CN109726376B publication Critical patent/CN109726376B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)
  • Machine Translation (AREA)

Abstract

本发明实施例提供了一种标准模板的生成方法、装置及电子设备。方法包括:获取标准代码块的文档对象模型作为模板结构,模板结构包括多个节点;从多个正常代码块的文档对象模型中筛选出与模板结构的子树相似度高于预设第一子树相似度阈值的文档对象模型作为参考结构;针对每个参考结构,确定该参考结构中包含节点最多的公共子树作为该参考结构的最长公共子树,公共子树为该参考结构和模板结构中均包含的子树;针对每个参考结构的最长公共子树中的每个节点,以及多个节点中的每个节点,将该节点的取值在模板结构中标注为与该节点名称相同的节点的正常取值,得到标准模板。可以自动生成标准模板,有效降低软件开发的人工成本。

Description

一种标准模板的生成方法、装置及电子设备
技术领域
本发明涉及代码规约技术领域,特别是涉及一种标准模板的生成方法、装置及电子设备。
背景技术
软件开发过程中,不同的软件开发人员可能存在各自的编码习惯,如习惯使用不同的命名方式、数据格式等,这可能会使得不同的软件开发人员编写的代码块无法相互兼容、软件出现异常的概率较高等问题,可能需要花费大量人工和时间排除异常,导致软件开发效率较低。现有技术中,软件开发人员可以按照一个统一的标准进行编码,该标准可以对命名方式、数据格式等进行约定。
发明人在实现本发明的过程中发现,现有技术至少存在如下问题:
部分类型的代码缺乏统一的标准,例如使用xml(Extensible Markup Language,可扩展标记语言)或json(javascript object notation,爪哇脚本对象简谱)编写的代码,需要由具有大量相关编码经验的软件开发人员人工约定标准,可能给软件开发带来较高的人工成本。
发明内容
本发明实施例的目的在于提供一种标准模板的生成方法,以实现自动生成标准模板,有效节省了软件开发中的人工成本。具体技术方案如下:
在本发明实施例提供的第一方面,提供了一种标准模板的生成方法,所述方法包括:
获取标准代码块的文档对象模型作为模板结构,所述模板结构包括多个节点,所述多个节点用于表示所述标准代码块所包括的内容;
从多个正常代码块的文档对象模型中筛选出与所述模板结构的子树相似度高于预设第一子树相似度阈值的文档对象模型作为参考结构,所述多个正常代码块和所述标准代码块预先经过检测确定不存在异常;
针对每个所述参考结构,确定该参考结构中包含节点最多的公共子树作为该参考结构的最长公共子树,所述公共子树为该参考结构和所述模板结构中均包含的子树;
针对每个所述参考结构的最长公共子树中的每个节点,以及所述多个节点中的每个节点,将该节点的取值在所述模板结构中标注为与该节点名称相同的节点的正常取值,得到标准模板。
结合第一方面,在第一种可能的实现方式中,在所述得到标准模板之后,所述方法还包括:
获取待检测代码块的文档对象模型作为待检测结构;
如果所述待检测结构与所述标准模板的子树相似度高于预设第二子树相似度阈值,并且,所述待检测结构节点的取值为所述标准模板中名称相同的节点的正常取值,确定所述待检测代码块不存在异常;
或者,如果所述待检测结构与所述模板结构的子树相似度不高于预设第二子树相似度阈值,或者,所述待检测结构节点的取值不为所述标准模板中名称相同的节点的正常取值,确定所述待检测代码块存在异常。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,在所述获取待检测代码块的文档对象模型作为待检测结构之前,所述方法还包括:
在代码仓库出现新增代码后,将所述新增代码和所述新增代码的上下文作为待检测代码块,所述上下文为与所述新增代码存在引用关系的代码。
结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,在所述确定所述待检测代码块存在异常之后,所述方法还包括:
展示异常信息,所述异常信息用于表示所述待检测代码块存在异常。
结合第一方面的第一种可能的实现方式,在第四种可能的实现方式中,所述异常信息包括异常节点信息,所述异常节点信息用于表示所述待检测结构中不属于公共子树的节点,和取值不为所述标准模板中名称相同的节点的正常取值的节点。
在本发明实施例的第二方面,提供了一种标准模板的生成装置,所述装置包括:
结构获取模块,用于获取标准代码块的文档对象模型作为模板结构,所述模板结构包括多个节点,所述多个节点用于表示所述标准代码块所包括的内容;
结构匹配模块,用于从多个正常代码块的文档对象模型中筛选出与所述模板结构的子树相似度高于预设第一子树相似度阈值的文档对象模型作为参考结构,所述多个正常代码块和所述标准代码块预先经过检测确定不存在异常;
子树确定模块,针对每个所述参考结构,确定该参考结构中包含节点最多的公共子树作为该参考结构的最长公共子树,所述公共子树为该参考结构和所述模板结构中均包含的子树;
取值标注模块,针对每个所述参考结构的最长公共子树中的每个节点,以及所述多个节点中的每个节点,将该节点的取值在所述模板结构中标注为与该节点名称相同的节点的正常取值,得到标准模板。
结合第二方面,在第一种可能的实现方式中,所述装置还包括代码检测模块,用于在所述得到标准模板之后,获取待检测代码块的文档对象模型作为待检测结构;
如果所述待检测结构与所述标准模板的子树相似度高于预设第二子树相似度阈值,并且,所述待检测结构节点的取值为所述标准模板中名称相同的节点的正常取值,确定所述待检测代码块不存在异常;
或者,如果所述待检测结构与所述模板结构的子树相似度不高于预设第二子树相似度阈值,或者,所述待检测结构节点的取值不为所述标准模板中名称相同的节点的正常取值,确定所述待检测代码块存在异常。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述代码检测模块,在所述获取待检测代码块的文档对象模型作为待检测结构之前,还用于在代码仓库出现新增代码后,将所述新增代码和所述新增代码的上下文作为待检测代码块,所述上下文为与所述新增代码存在引用关系的代码。
结合第二方面的第一种可能的实现方式,在第三种可能的实现方式中,所述代码检测模块在所述确定所述待检测代码块存在异常之后,还用于展示异常信息,所述异常信息用于表示所述待检测代码块存在异常。
结合第二方面的第一种可能的实现方式,在第四种可能的实现方式中,所述异常信息包括异常节点信息,所述异常节点信息用于表示所述待检测结构中不属于公共子树的节点,和取值不为所述标准模板中名称相同的节点的正常取值的节点。
在本发明实施例的第三方面,提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述第一方面任一所述的标准模板的生成方法的步骤。
在本发明实施例的第四方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的标准模板的生成方法。
在本发明实施例的第五方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的标准模板的生成方法。
本发明实施例提供的标准模板的生成方法、装置及电子设备,可以基于现有的模板结构,并利用现有的多个正常代码块中文档对象模型与模板结构相近的正常代码块,对模板结构中节点的可能取值进行补充,以自动生成标准模板,不需要人工确定编码标准,可以有效降低软件开发的人工成本。当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例提供的标准模板的生成方法的一种流程示意图
图2为本发明实施例提供的文档对象模型的一种节点数示意图;
图3为本发明实施例提供的标准模板的生成方法的另一种流程示意图;
图4为本发明实施例提供的标准模板的生成方法的又一种流程示意图;
图5a为本发明实施例提供的标准模板的生成装置的一种结构示意图;
图5b为本发明实施例提供的标准模板的生成装置的另一种结构示意图;
图6为本发明实施例提供的电子设备的一种结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。
参见图1,图1所示为本发明实施例提供的标准模板的生成方法,可以包括:
S110,获取标准代码块的文档对象模型作为模板结构。
其中,模板结构包括多个节点,这多个节点用于表示标准代码块所包含的内容,标准代码块预先经过检测确定不存在异常,针对标准代码块的检测可以是利用动态检测技术进行的。标准代码块可以是用户根据实际需求从代码仓库中选择的一个代码块,例如从代码仓库中的xml配置文件选择一个代码块作为标准代码块。
标准代码块的文档对象模型(Document Object Model,简称DOM)是针对标记语言的标准编程接口(Application Programming Interface,简称API),标记语言可以是xml(Extensible Markup Language,可扩展标记语言)也可以是html(HyperText MarkupLanguage,超文本标记语言),文档对象模型可以描绘一个层次化的节点树,以标准代码块用于记录书籍信息为例,假设所记录的书籍信息包括该书的名称(title)、作者(author)、出版时间(pub date)等,则标准代码块的文档对象模型可以如图2所示,其中,节点210为该文档对象模型的根节点,节点220、节点230、节点240为以节点210为父节点的子节点,节点220、节点230、节点240彼此为同级节点,节点241、节点242、节点243为以节点240为父节点的子节点,每个子节点用于表示父节点所表示的内容中的一个子内容,例如节点240表示出版时间,节点241表示出版日期中的年份,节点242表示出版日期中的月份,节点243表示出版日期中的日期。
S120,从多个正常代码块的文档对象模型中筛选出与模板结构的子树相似度高于预设第一子树相似度阈值的文档对象模型作为参考结构。
其中,正常代码块可以为预先经过检测确定不存在异常的代码块,子树由模板结构中一个节点以及该节点所有后代节点组成,以图2为例,其中节点240、节点241、节点242、节点243共同组成一个子树,该子树的根节点为节点240。两个文档对象模型之间的子树相似度,可以表示这两个文档对象模型的相似程度,如果一个正常代码块的文档对象模型与模板结构的自树相似度高于预设第一子树相似度阈值,可以认为该正常代码块的文档对象模型与模板结构相近,两者能够通用的可能性较高。
S130,针对每个参考结构,确定该参考结构中包含节点最多的公共子树作为该参考结构的最长公共子树。
其中,公共子树为同时在参考结构和模板结构中出现的子树,一个参考结构可以只有一个最长公共子树,也可以同时有多个最长公共子树。参考结构的最长公共子树中所包含的节点,在模板结构中必然存在与之节点名称相同的节点,一个节点的节点名称是该节点的一种标识,以图2为例,title为节点220的节点名称,文档对象模型中不存在两个节点名称相同的节点。
S140,针对每个参考结构的最长公共子树中的每个节点,以及模板结构所包括的每个节点,将该节点的取值在模板结构中标注为该节点名称相同的节点的正常取值,得到标准模板。
一个节点的取值是该节点中具体包括的内容,以图2为例,节点220的取值可以是哈利波特、三国演义等书籍名称。标准模板是一个带有标注的数据结构,该标注用于表示该数据结构中各个节点的正常取值,并且标准模板的数据结构与标准结构相同。
可以理解的是,由于参考结构与标准结构的子树相似度较高,因此参考结构与标准结构之间可以通用的可能性较高,并基于参考结构中的最长公共子树中节点的取值,以及模板结构自身所包括的节点的取值,对模板结构进行标注,在步骤S120中正常代码块的数量足够多的情况下,可以认为标准模板中的标注已经涵盖足够多与标准代码块相通的代码块中的可能取值,因此标准模板可以作为开发人员编写与标注代码块相关的代码块时的一种标准,示例性的,假设得到标准模板中包括一个节点用于表示书籍的语种,通过前述步骤该节点的标注的正常取值有CN(中文)、EN(英文)、JP(日语)等,开发人员在编写代码时错误地将CN写为Chinese,不属于该节点的正常取值,则可以通过与该标准模板进行比较发现该错误,如果该错误没有被发现可能导致该代码块中的Chinese无法被正确识别,或者开发人员在编写代码时无法确定应当使用CN还是Chinese,可以通过查阅该标准模板来确定。选用该实施例,可以在自动生成标准模板,为开发人员编写代码提供一种标准,可以不需要人工制定标准,降低了软件开发的人工成本。
在一种可选的实施例中,如图3所示,在S140之后还可以包括:
S150,获取待检测代码块的文档对象模型作为待检测结构。
其中,待检测代码块可以是开发人员编写完成后尚未进行检测的代码块,示例性的,可以是开发人员向代码仓库中新添加的代码时,将该新增的代码以及该代码的上下文作为待检测代码。可以理解的是,代码仓库中新添加的代码如果不经过检测直接上线,一旦该代码存在异常,可能导致整个系统无法正常工作。
S160,如果待检测结构与标准模板的子树相似度高于预设第二子树相似度阈值,执行S161,如果待检测结构与标准模板的子树相似度不高于预设第二子树相似度阈值执行S163。
由于标准模板是基于标准结构标注得到的,因此待检测结构与标准模板的子树相似度等于待检测机构与标准结构的子树相似度。第二子树相似度阈值可以等于第一子树相似度阈值,可以理解的是,第二子树相似度阈值越高发现待检测代码块中潜在问题的概率也高但是误报概率也越高,反之如果第二子树相似度阈值越低误报概率越低但是发现待检测代码块中潜在问题的概率也越低。
S161,如果待检测结构节点的取值为标准模板中名称相同的节点的正常取值,执行S162,如果待检测结构节点的取值不为标准模板中名称相同的节点的正常取值,执行S163。
可以理解的是图3只是本发明实施例提供的标注模板的生成方法的一种流程示意图,在其他实施例中,也可以是先判断待检测结构节点的取值为标准模板中名称相同的节点的正常取值,或者不为标准模板中名称相同的节点的正常取值,再判断待检测结构与标准模板的子树相似度高于预设第二子树相似度阈值,或者不高于第二子树相似度阈值。
S162,确定待检测代码块不存在异常。
如果待检测结构与标准模板的子树相似度高于第二子树相似度阈值,可以认为待检测结构与标准模板的数据结构彼此通用,即可以认为待检测结构可以认为不存在异常。并且,如果待检测结构某个节点的取值为标准模板中名称相同的节点的正常取值,说明该节点的取值与某个已经确定正常的代码块中名称相同的节点的取值一致,可以认为该节点的取值不存在异常。待检测结构中可能存在标准模板中不存在的节点,对于这些节点的取值不进行判断,可以默认这些节点的取值是正常的,在其他实施例中,也可以默认这些节点的取值是异常的。如果待检测结构不存在异常,并且节点的取值也不存在异常,则可以认为待检测代码块不存在异常。
S163,确定待检测代码块存在异常。
如果待检测结构与标准模板的子树相似度不高于第二子树相似度阈值,可以认为待检测结构与标准模板的数据结构彼此不能通用,及两者之间的差距较大,此时可以确定待检测代码块存在异常。或者,如果待检测结构中某个节点的取值不为标准模板中名称相同的节点的正常取值,说明在已经确定为正常的代码块中,不包含与该节点取值相同并且节点名称相同的节点,因此该节点的取值有很大概率存在异常,此时可以确定待检测代码块存在异常。
选用该实施例,可以基于标准模板对待检测代码块自动进行检测,进而可以发现待检测代码块中的潜在问题,不需要开发人员在编写完成代码块后人工检查,提高了开发效率。
在一种可选的实施例中,如图4所示,在S163之后,还可以包括:
S170,展示异常信息。
其中,异常信息用于表示待检测代码块中存在异常,示例性的,可以是弹出一个弹窗,用于提醒开发人员待检测代码块中存在异常。进一步的,异常信息中可以包括异常节点信息,该异常节点信息用于表示待检测结构中不属于公共子树的节点,和取值不为标准模板中名称相同的节点的正常取值的节点。示例性的,标准模板中包含有一个节点:名字(name),该节点的正常取值中的字母均为大写,而待检测结构中该节点取值中的字母为小写,则可以是弹出提示信息“异常节点:节点<name>,异常原因:字母小写”。选用该实施例可以在待检测代码块中存在异常时及时提醒用户,便于用户针对待检测代码块中存在的异常进行后续处理。
参见图5a,图5a所示为本发明实施例提供的标准模板的生成装置的一种结构示意图,可以包括:
结构获取模块501,用于获取标准代码块的文档对象模型作为模板结构,模板结构包括多个节点,多个节点用于表示标准代码块所包括的内容;
结构匹配模块502,用于从多个正常代码块的文档对象模型中筛选出与模板结构的子树相似度高于预设第一子树相似度阈值的文档对象模型作为参考结构,多个正常代码块和标准代码块预先经过检测确定不存在异常;
子树确定模块503,针对每个参考结构,确定该参考结构中包含节点最多的公共子树作为该参考结构的最长公共子树,公共子树为该参考结构和模板结构中均包含的子树;
取值标注模块504,针对每个参考结构的最长公共子树中的每个节点,以及多个节点中的每个节点,将该节点的取值在模板结构中标注为与该节点名称相同的节点的正常取值,得到标准模板。
进一步的,如图5b所示,还可以包括代码检测模块505,用于在得到标准模板之后,获取待检测代码块的文档对象模型作为待检测结构;
如果待检测结构与标准模板的子树相似度高于预设第二子树相似度阈值,并且,待检测结构节点的取值为标准模板中名称相同的节点的正常取值,确定待检测代码块不存在异常;
或者,如果待检测结构与模板结构的子树相似度不高于预设第二子树相似度阈值,或者,待检测结构节点的取值不为标准模板中名称相同的节点的正常取值,确定待检测代码块存在异常。
进一步的,代码检测模块505,在获取待检测代码块的文档对象模型作为待检测结构之前,还用于在代码仓库出现新增代码后,将新增代码和新增代码的上下文作为待检测代码块,上下文为与新增代码存在引用关系的代码。
进一步的,代码检测模块505在确定待检测代码块存在异常之后,还用于展示异常信息,异常信息用于表示待检测代码块存在异常。
进一步的,异常信息包括异常节点信息,异常节点信息用于表示待检测结构中不属于公共子树的节点,和取值不为标准模板中名称相同的节点的正常取值的节点。
本发明实施例还提供了一种电子设备,如图6所示,包括处理器601、通信接口602、存储器603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信,
存储器603,用于存放计算机程序;
处理器601,用于执行存储器603上所存放的程序时,实现如下步骤:
获取标准代码块的文档对象模型作为模板结构,模板结构包括多个节点,多个节点用于表示标准代码块所包括的内容;
从多个正常代码块的文档对象模型中筛选出与模板结构的子树相似度高于预设第一子树相似度阈值的文档对象模型作为参考结构,多个正常代码块和标准代码块预先经过检测确定不存在异常;
针对每个参考结构,确定该参考结构中包含节点最多的公共子树作为该参考结构的最长公共子树,公共子树为该参考结构和模板结构中均包含的子树;
针对每个参考结构的最长公共子树中的每个节点,以及多个节点中的每个节点,将该节点的取值在模板结构中标注为与该节点名称相同的节点的正常取值,得到标准模板。
进一步的,在得到标准模板之后,方法还包括:
获取待检测代码块的文档对象模型作为待检测结构;
如果待检测结构与标准模板的子树相似度高于预设第二子树相似度阈值,并且,待检测结构节点的取值为标准模板中名称相同的节点的正常取值,确定待检测代码块不存在异常;
或者,如果待检测结构与模板结构的子树相似度不高于预设第二子树相似度阈值,或者,待检测结构节点的取值不为标准模板中名称相同的节点的正常取值,确定待检测代码块存在异常。
进一步的,在获取待检测代码块的文档对象模型作为待检测结构之前,方法还包括:
在代码仓库出现新增代码后,将新增代码和新增代码的上下文作为待检测代码块,上下文为与新增代码存在引用关系的代码。
进一步的,在确定待检测代码块存在异常之后,方法还包括:
展示异常信息,异常信息用于表示待检测代码块存在异常。
进一步的,异常信息包括异常节点信息,异常节点信息用于表示待检测结构中不属于公共子树的节点,和取值不为标准模板中名称相同的节点的正常取值的节点。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的标准模板的生成方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的标准模板的生成方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质、计算机程序产品的实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (11)

1.一种标准模板的生成方法,其特征在于,所述方法包括:
获取标准代码块的文档对象模型作为模板结构,所述模板结构包括多个节点,所述多个节点用于表示所述标准代码块所包括的内容;
从多个正常代码块的文档对象模型中筛选出与所述模板结构的子树相似度高于预设第一子树相似度阈值的文档对象模型作为参考结构;
针对每个所述参考结构,确定该参考结构中包含节点最多的公共子树作为该参考结构的最长公共子树,所述公共子树为该参考结构和所述模板结构中均包含的子树;
针对每个所述参考结构的最长公共子树中的每个节点,以及所述多个节点中的每个节点,将该节点的取值在所述模板结构中标注为与该节点名称相同的节点的正常取值,得到标准模板。
2.根据权利要求1所述的方法,其特征在于,在所述得到标准模板之后,所述方法还包括:
获取待检测代码块的文档对象模型作为待检测结构;
如果所述待检测结构与所述标准模板的子树相似度高于预设第二子树相似度阈值,并且,所述待检测结构节点的取值为所述标准模板中名称相同的节点的正常取值,确定所述待检测代码块不存在异常;
或者,如果所述待检测结构与所述模板结构的子树相似度不高于预设第二子树相似度阈值,或者,所述待检测结构节点的取值不为所述标准模板中名称相同的节点的正常取值,确定所述待检测代码块存在异常。
3.根据权利要求2所述的方法,其特征在于,在所述获取待检测代码块的文档对象模型作为待检测结构之前,所述方法还包括:
在代码仓库出现新增代码后,将所述新增代码和所述新增代码的上下文作为待检测代码块,所述上下文为与所述新增代码存在引用关系的代码。
4.根据权利要求2所述的方法,其特征在于,在所述确定所述待检测代码块存在异常之后,所述方法还包括:
展示异常信息,所述异常信息用于表示所述待检测代码块存在异常。
5.根据权利要求4所述的方法,其特征在于,所述异常信息包括异常节点信息,所述异常节点信息用于表示所述待检测结构中不属于公共子树的节点,和取值不为所述标准模板中名称相同的节点的正常取值的节点。
6.一种标准模板的生成装置,其特征在于,所述装置包括:
结构获取模块,用于获取标准代码块的文档对象模型作为模板结构,所述模板结构包括多个节点,所述多个节点用于表示所述标准代码块所包括的内容;
结构匹配模块,用于从多个正常代码块的文档对象模型中筛选出与所述模板结构的子树相似度高于预设第一子树相似度阈值的文档对象模型作为参考结构;
子树确定模块,针对每个所述参考结构,确定该参考结构中包含节点最多的公共子树作为该参考结构的最长公共子树,所述公共子树为该参考结构和所述模板结构中均包含的子树;
取值标注模块,针对每个所述参考结构的最长公共子树中的每个节点,以及所述多个节点中的每个节点,将该节点的取值在所述模板结构中标注为与该节点名称相同的节点的正常取值,得到标准模板。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括代码检测模块,用于在所述得到标准模板之后,获取待检测代码块的文档对象模型作为待检测结构;
如果所述待检测结构与所述标准模板的子树相似度高于预设第二子树相似度阈值,并且,所述待检测结构节点的取值为所述标准模板中名称相同的节点的正常取值,确定所述待检测代码块不存在异常;
或者,如果所述待检测结构与所述模板结构的子树相似度不高于预设第二子树相似度阈值,或者,所述待检测结构节点的取值不为所述标准模板中名称相同的节点的正常取值,确定所述待检测代码块存在异常。
8.根据权利要求7所述的装置,其特征在于,所述代码检测模块,在所述获取待检测代码块的文档对象模型作为待检测结构之前,还用于在代码仓库出现新增代码后,将所述新增代码和所述新增代码的上下文作为待检测代码块,所述上下文为与所述新增代码存在引用关系的代码。
9.根据权利要求7所述的装置,其特征在于,所述代码检测模块在所述确定所述待检测代码块存在异常之后,还用于展示异常信息,所述异常信息用于表示所述待检测代码块存在异常。
10.根据权利要去9所述的装置,其特征在于,所述异常信息包括异常节点信息,所述异常节点信息用于表示所述待检测结构中不属于公共子树的节点,和取值不为所述标准模板中名称相同的节点的正常取值的节点。
11.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤。
CN201811571315.6A 2018-12-21 2018-12-21 一种标准模板的生成方法、装置及电子设备 Active CN109726376B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811571315.6A CN109726376B (zh) 2018-12-21 2018-12-21 一种标准模板的生成方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811571315.6A CN109726376B (zh) 2018-12-21 2018-12-21 一种标准模板的生成方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN109726376A true CN109726376A (zh) 2019-05-07
CN109726376B CN109726376B (zh) 2023-01-20

Family

ID=66297019

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811571315.6A Active CN109726376B (zh) 2018-12-21 2018-12-21 一种标准模板的生成方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN109726376B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022134820A1 (zh) * 2020-12-23 2022-06-30 深圳壹账通智能科技有限公司 网页的数据抽取方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102375847A (zh) * 2010-08-17 2012-03-14 富士通株式会社 形成用于生成文档模板的合并树的方法以及装置
US8381095B1 (en) * 2011-11-07 2013-02-19 International Business Machines Corporation Automated document revision markup and change control

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102375847A (zh) * 2010-08-17 2012-03-14 富士通株式会社 形成用于生成文档模板的合并树的方法以及装置
US8381095B1 (en) * 2011-11-07 2013-02-19 International Business Machines Corporation Automated document revision markup and change control

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
朱毅华等: "基于子树相似度计算的网页评论提取算法研究", 《现代图书情报技术》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022134820A1 (zh) * 2020-12-23 2022-06-30 深圳壹账通智能科技有限公司 网页的数据抽取方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN109726376B (zh) 2023-01-20

Similar Documents

Publication Publication Date Title
CN106294164B (zh) 一种代码检查方法及装置
US8161459B2 (en) Method and system for generating functional test cases
US10534512B2 (en) System and method for identifying web elements present on a web-page
CN111290956B (zh) 基于脑图的测试方法、装置、电子设备及存储介质
CN109062794A (zh) 一种软件测评结果的确定方法、装置及电子设备
CN105095067A (zh) 用户界面元素对象识别及自动化测试的方法和装置
CN103853650A (zh) 一种模糊测试的测试用例生成方法及装置
CN109740122A (zh) 思维导图用例文件的转换方法及装置
CN110781091B (zh) 应用程序的测试方法、装置、电子设备及存储介质
CN109145231A (zh) 一种界面元素标识符的生成方法、装置以及电子设备
CN109783356A (zh) 一种自动化测试方法及终端
US20220350857A1 (en) Methods and systems for browser extension used to generate relative xpath, absolute xpath and/or css selectors
Mizuno et al. Training on errors experiment to detect fault-prone software modules by spam filter
US20190094300A1 (en) Ensuring completeness of interface signal checking in functional verification
Itkin et al. User-assisted log analysis for quality control of distributed fintech applications
CN105373468B (zh) 一种web自动化可测性的检测方法和系统
CN115357590A (zh) 针对数据变更的记录方法、装置、电子设备及存储介质
US20170277732A1 (en) Interpreting hl7 segment hierarchy dynamically
US8909579B2 (en) Identifying invariant candidates based on proofs
CN114168149A (zh) 一种数据转换方法及装置
CN110362792A (zh) 将rn文件转换为小程序文件的方法、装置及转换设备
CN109726376A (zh) 一种标准模板的生成方法、装置及电子设备
CN109977020A (zh) 一种自动化测试方法
CN107515958B (zh) 电路布线检查方法及装置
CN106358220A (zh) 异常联系人信息的检测方法、装置及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant