CN110489127B - 错误代码确定方法、装置、计算机可读存储介质及设备 - Google Patents

错误代码确定方法、装置、计算机可读存储介质及设备 Download PDF

Info

Publication number
CN110489127B
CN110489127B CN201910741361.4A CN201910741361A CN110489127B CN 110489127 B CN110489127 B CN 110489127B CN 201910741361 A CN201910741361 A CN 201910741361A CN 110489127 B CN110489127 B CN 110489127B
Authority
CN
China
Prior art keywords
word sequence
checked
graph data
data structure
code
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.)
Active
Application number
CN201910741361.4A
Other languages
English (en)
Other versions
CN110489127A (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910741361.4A priority Critical patent/CN110489127B/zh
Publication of CN110489127A publication Critical patent/CN110489127A/zh
Application granted granted Critical
Publication of CN110489127B publication Critical patent/CN110489127B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/425Lexical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开提供一种错误代码确定方法、错误代码确定装置、计算机可读存储介质及电子设备;涉及计算机技术领域。该方法包括:对待检查代码进行词法分析,得到待检查单词序列;将待检查单词序列与图数据结构中的目标单词序列进行匹配,得到第一匹配结果;根据第一匹配结果从目标单词序列中确定出与待检查单词序列对应的第一单词序列;从第一单词序列对应的子图数据结构中确定出与待检查单词序列对应的第二单词序列,以根据第二单词序列确定所述待检查代码中的错误代码。本公开中的方法能够在一定程度上克服人工检查的效率相对较低且人工检查的成本较高的问题,提升代码查错效率并降低代码查错成本。

Description

错误代码确定方法、装置、计算机可读存储介质及设备
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种错误代码确定方法、错误代码确定装置、计算机可读存储介质及电子设备。
背景技术
对于程序开发而言,需要开发者进行程序代码的编写,以完成对于程序的开发。然而,开发者编写的代码可能会存在或多或少的编写错误。因此,代码查错是程序上线前必不可少的工作。
通常情况下是通过人工的方式检查代码中的错误。但是,人工检查的效率相对较低且人工检查的成本较高。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本公开的目的在于提供一种错误代码确定方法、错误代码确定装置、计算机可读存储介质及电子设备,在一定程度上克服人工检查的效率相对较低且人工检查的成本较高的问题,提升代码查错效率并降低代码查错成本。
本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。
根据本公开的第一方面,提供一种错误代码确定方法,包括:
对待检查代码进行词法分析,得到待检查单词序列;
将待检查单词序列与图数据结构中的目标单词序列进行匹配,得到第一匹配结果;其中,图数据结构包括至少两个子图数据结构,各子图数据结构分别对应一目标单词序列;
根据第一匹配结果从目标单词序列中确定出与待检查单词序列对应的第一单词序列;
从第一单词序列对应的子图数据结构中确定出与待检查单词序列对应的第二单词序列,以根据第二单词序列确定待检查代码中的错误代码;其中,第二单词序列与待检查单词序列的相似度大于等于第一单词序列与待检查单词序列的相似度。
在本公开的一种示例性实施例中,各子图数据结构均由具有连接关系的单词序列组成,将待检查单词序列与图数据结构中的目标单词序列进行匹配,包括:
确定图数据结构中各子图数据结构对应的目标单词序列;其中,目标单词序列在对应的子图数据结构中具有的连接关系数量高于对应的子图数据结构中其他单词序列;
将目标单词序列分别与待检查单词序列进行匹配。
在本公开的一种示例性实施例中,从第一单词序列对应的子图数据结构中确定出与待检查单词序列对应的第二单词序列,包括:
将第一单词序列对应的子图数据结构中除第一单词序列外的其他单词序列与待检查单词序列进行匹配,得到第二匹配结果;
根据第二匹配结果从第一单词序列对应的子图数据结构中确定出与待检查单词序列相似度最高的第二单词序列。
在本公开的一种示例性实施例中,根据第二单词序列确定待检查代码中的错误代码,包括:
从待检查单词序列中确定出与第二单词序列相对应的单词序列部分;
确定单词序列部分在待检查代码中对应的代码部分,作为错误代码。
在本公开的一种示例性实施例中,该错误代码确定方法还包括:
将待检查代码中的错误代码进行高亮显示。
在本公开的一种示例性实施例中,该错误代码确定方法还包括:
将历史错误代码转换为历史单词序列并存储;
根据历史单词序列构建图数据结构;其中,目标单词序列、第一单词序列和第二单词序列均为历史单词序列。
在本公开的一种示例性实施例中,根据历史单词序列构建图数据结构,包括:
若历史单词序列在图数据结构中存在相应的节点,则根据历史单词序列和历史单词序列对应的错误说明确定出满足预置条件的备选历史单词序列;若历史单词序列在图数据结构中不存在相应的节点,则创建历史单词序列对应的节点;
若备选历史单词序列与历史单词序列属于相同错误类别,则在备选历史单词序列对应的节点与历史单词序列对应的节点之间建立连接关系。
根据本公开的第二方面,提供一种错误代码确定装置,包括词法分析单元、单词序列匹配单元以及单词序列确定单元,其中:
词法分析单元,用于对待检查代码进行词法分析,得到待检查单词序列;
单词序列匹配单元,用于将待检查单词序列与图数据结构中的目标单词序列进行匹配,得到第一匹配结果;其中,图数据结构包括至少两个子图数据结构,各子图数据结构分别对应一目标单词序列;
单词序列确定单元,用于根据第一匹配结果从目标单词序列中确定出与待检查单词序列对应的第一单词序列;
单词序列确定单元,还用于从第一单词序列对应的子图数据结构中确定出与待检查单词序列对应的第二单词序列,以根据第二单词序列确定待检查代码中的错误代码;其中,第二单词序列与待检查单词序列的相似度大于等于第一单词序列与待检查单词序列的相似度。
在本公开的一种示例性实施例中,各子图数据结构均由具有连接关系的单词序列组成,单词序列匹配单元将待检查单词序列与图数据结构中的目标单词序列进行匹配的方式具体为:
单词序列匹配单元确定图数据结构中各子图数据结构对应的目标单词序列;其中,目标单词序列在对应的子图数据结构中具有的连接关系数量高于对应的子图数据结构中其他单词序列;
单词序列匹配单元将目标单词序列分别与待检查单词序列进行匹配。
在本公开的一种示例性实施例中,单词序列确定单元从第一单词序列对应的子图数据结构中确定出与待检查单词序列对应的第二单词序列的方式具体为:
单词序列确定单元将第一单词序列对应的子图数据结构中除第一单词序列外的其他单词序列与待检查单词序列进行匹配,得到第二匹配结果;
单词序列确定单元根据第二匹配结果从第一单词序列对应的子图数据结构中确定出与待检查单词序列相似度最高的第二单词序列。
在本公开的一种示例性实施例中,单词序列确定单元根据第二单词序列确定待检查代码中的错误代码的方式具体为:
单词序列确定单元从待检查单词序列中确定出与第二单词序列相对应的单词序列部分;
单词序列确定单元确定单词序列部分在待检查代码中对应的代码部分,作为错误代码。
在本公开的一种示例性实施例中,该错误代码确定装置还包括高亮显示单元,其中:
高亮显示单元,用于将待检查代码中的错误代码进行高亮显示。
在本公开的一种示例性实施例中,该错误代码确定装置还包括代码转换单元和图数据结构构建单元,其中:
代码转换单元,用于将历史错误代码转换为历史单词序列并存储;
图数据结构构建单元,用于根据历史单词序列构建图数据结构;其中,目标单词序列、第一单词序列和第二单词序列均为历史单词序列。
在本公开的一种示例性实施例中,图数据结构构建单元根据历史单词序列构建图数据结构的方式具体为:
若历史单词序列在图数据结构中存在相应的节点,图数据结构构建单元根据历史单词序列和历史单词序列对应的错误说明确定出满足预置条件的备选历史单词序列;若历史单词序列在图数据结构中不存在相应的节点,图数据结构构建单元创建历史单词序列对应的节点;
若备选历史单词序列与历史单词序列属于相同错误类别,图数据结构构建单元在备选历史单词序列对应的节点与历史单词序列对应的节点之间建立连接关系。
根据本公开的第三方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的方法。
根据本公开的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的方法。
本公开示例性实施例可以具有以下部分或全部有益效果:
在本公开的一示例实施方式所提供的错误代码确定方法中,可以对待检查代码进行词法分析,得到待检查单词序列;进而,可以将待检查单词序列与图数据结构中的目标单词序列进行匹配,得到第一匹配结果;其中,图数据结构包括至少两个子图数据结构,各子图数据结构分别对应一目标单词序列;进而,可以根据第一匹配结果从目标单词序列中确定出与待检查单词序列对应的第一单词序列;进而,可以从第一单词序列对应的子图数据结构中确定出与待检查单词序列对应的第二单词序列,以根据第二单词序列确定待检查代码中的错误代码;其中,第二单词序列与待检查单词序列的相似度大于等于第一单词序列与待检查单词序列的相似度。依据上述方案描述,本公开一方面能够在一定程度上克服人工检查的效率相对较低且人工检查的成本较高的问题,通过自动化代码检查提升代码查错效率,降低代码查错成本;另一方面,能够通过与图数据结构中单词序列的匹配,识别待检查代码中的语法错误和逻辑错误,改善代码查错效果。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了可以应用本公开实施例的一种错误代码确定方法及错误代码确定装置的示例性系统架构的示意图;
图2示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图;
图3示意性示出了根据本公开的一个实施例的错误代码确定方法的流程图;
图4示意性示出了根据本公开的一个实施例的图数据结构构建方法的流程图;
图5示意性示出了根据本公开的一个实施例的子图数据结构的示意图;
图6示意性示出了根据本公开的一个实施例的错误代码确定方法的架构示意图;
图7示意性示出了根据本公开的一个实施例的确定与待检查单词序列对应的单词序列的流程图;
图8示意性示出了根据本公开的一个实施例中的错误代码确定装置的结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本公开的各方面变得模糊。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
图1示出了可以应用本公开实施例的一种错误代码确定方法及错误代码确定装置的示例性应用环境的系统架构的示意图。
如图1所示,系统架构100可以包括终端设备101、102、103中的一个或多个,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。终端设备101、102、103可以是具有显示屏的各种电子设备,包括但不限于台式计算机、便携式计算机、智能手机和平板电脑等等。应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器105可以是多个服务器组成的服务器集群等。
本公开实施例所提供的错误代码确定方法一般由服务器105执行,相应地,错误代码确定装置一般设置于服务器105中。但本领域技术人员容易理解的是,本公开实施例所提供的错误代码确定方法也可以由终端设备101、102、103执行,相应的,错误代码确定装置也可以设置于终端设备101、102、103中,本示例性实施例中对此不做特殊限定。举例而言,在一种示例性实施例中,服务器105可以对待检查代码进行词法分析,得到待检查单词序列,并将待检查单词序列与图数据结构中的目标单词序列进行匹配,得到第一匹配结果,以及根据第一匹配结果从目标单词序列中确定出与待检查单词序列对应的第一单词序列,进而,从第一单词序列对应的子图数据结构中确定出与待检查单词序列对应的第二单词序列,以根据第二单词序列确定待检查代码中的错误代码。
图2示出了适于用来实现本公开实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图2示出的电子设备的计算机系统200仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图2所示,计算机系统200包括中央处理单元(CPU)201,其可以根据存储在只读存储器(ROM)202中的程序或者从存储部分208加载到随机访问存储器(RAM)203中的程序而执行各种适当的动作和处理。在RAM 203中,还存储有系统操作所需的各种程序和数据。CPU201、ROM 202以及RAM 203通过总线204彼此相连。输入/输出(I/O)接口205也连接至总线204。
以下部件连接至I/O接口205:包括键盘、鼠标等的输入部分206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分207;包括硬盘等的存储部分208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分209。通信部分209经由诸如因特网的网络执行通信处理。驱动器210也根据需要连接至I/O接口205。可拆卸介质211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器210上,以便于从其上读出的计算机程序根据需要被安装入存储部分208。
特别地,根据本公开的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分209从网络上被下载和安装,和/或从可拆卸介质211被安装。在该计算机程序被中央处理单元(CPU)201执行时,执行本申请的方法和装置中限定的各种功能。
以下对本公开实施例的技术方案进行详细阐述:
现代软件工程项目代码日趋复杂,大量采用了面向对象设计的层级结构来组织逻辑,同时代码中含有大量用户自定义的标识符,例如函数名和变量名。如果直接用原始代码文本进行搜索匹配,由于已有的错误代码片段来源于大量不同的项目和开发者,与待检查代码在层级机构、代码风格、函数和变量命名等方面存在差异,匹配效果并不理想。并且,通常情况下,是通过人工的方式检查代码中的错误。但是,人工检查的效率相对较低且人工检查的成本较高。
基于上述一个或多个问题,本示例实施方式提供了一种错误代码确定方法。该错误代码确定方法可以应用于上述服务器105,也可以应用于上述终端设备101、102、103中的一个或多个,本示例性实施例中对此不做特殊限定。参考图3所示,该错误代码确定方法可以包括以下步骤S310至步骤S340:
步骤S310:对待检查代码进行词法分析,得到待检查单词序列。
步骤S320:将待检查单词序列与图数据结构中的目标单词序列进行匹配,得到第一匹配结果;其中,图数据结构包括至少两个子图数据结构,各子图数据结构分别对应一目标单词序列。
步骤S330:根据第一匹配结果从目标单词序列中确定出与待检查单词序列对应的第一单词序列。
步骤S340:从第一单词序列对应的子图数据结构中确定出与待检查单词序列对应的第二单词序列,以根据第二单词序列确定待检查代码中的错误代码;其中,第二单词序列与待检查单词序列的相似度大于等于第一单词序列与待检查单词序列的相似度。
下面,对于本示例实施方式的上述步骤进行更加详细的说明。
在步骤S310中,对待检查代码进行词法分析,得到待检查单词序列。
本示例实施方式中,待检查代码可以参见如下示例:
本示例实施方式中,对待检查代码进行词法分析,得到的待检查单词序列可以参见如下示例(下述待检查单词序列示例与上述待检查代码示例相对应):
本示例实施方式中,词法分析可以理解为将字符序列转换为token序列的过程。
本示例实施方式中,对待检查代码进行词法分析,得到待检查单词序列的方式具体可以为:通过词法分析器(lexical analyzer,lexer)对待检查代码进行词法分析,得到待检查单词序列;其中,词法分析器一般以函数的形式存在。
本示例实施方式中,在步骤S310之后,还可以包括如下步骤:定义一用于表示将待检查代码转换后得到的待检查单词序列的名词(如,doc),以及,将doc存储于一分布式搜索引擎(如,ElasticSearch,即ES),其中,ES可以用于搜索文档。上述步骤定义的名词doc代表的是待检查单词序列,doc起一标识作用;其中,待检查代码中可以存在一处或多处错误代码也可以不存在错误代码,本公开的实施例不做限定。
在步骤S320中,将待检查单词序列与图数据结构中的目标单词序列进行匹配,得到第一匹配结果;其中,图数据结构包括至少两个子图数据结构,各子图数据结构分别对应一目标单词序列。
本示例实施方式中,图数据结构可以存在于一图数据库中,图数据库可以为Neo4j,Neo4j主要用于存储图数据结构的节点和连接关系,Neo4j也是一种高性能的图引擎,提供包括并查集算法(Union-Find算法)在内的多种图算法实现。其中,Union-Find算法也称为不相交数据结构,其中维护了一系列不相交的集合。Union-Find算法定义了两个用于此数据结构的操作:将两个子集合合并成同一个集合的Union以及确定元素属于哪一个子集的Find,通过该算法可以确定出两个元素是否属于同一子集。在本公开的实施例中,Union-Find算法用于在图数据结构里发现所有不相交的子图数据结构。
本示例实施方式中,各子图数据结构对应的错误代码的类别不同,
本示例实施方式中,可选的,将待检查单词序列与图数据结构中的目标单词序列进行匹配的方式具体可以为:计算待检查单词序列对应的向量,并计算该向量与图数据结构中各目标单词序列对应的向量之间的向量距离,若向量距离小于预设向量距离,得到的第一匹配结果可以为待检查单词序列与对应的目标单词序列相似;若向量距离大于等于预设向量距离,得到的第一匹配结果可以为待检查单词序列与对应的目标单词序列不相似。其中,向量距离可以为余弦距离也可以为欧式距离,本公开的实施例不作限定。
本示例实施方式中,各子图数据结构均由具有连接关系的单词序列组成,将待检查单词序列与图数据结构中的目标单词序列进行匹配,包括:
确定图数据结构中各子图数据结构对应的目标单词序列;其中,目标单词序列在对应的子图数据结构中具有的连接关系数量高于对应的子图数据结构中其他单词序列;
将目标单词序列分别与待检查单词序列进行匹配。
本示例实施方式中,将目标单词序列分别与待检查单词序列进行匹配的方式具体可以为:计算目标单词序列与待检查单词序列的相似度,相似度可以通过向量距离来表征。
可见,实施该可选的实施方式,能够通过子图数据结构中具有代表性的目标单词序列与待检查单词序列进行匹配,降低了整体计算量,提升了代码查错效率。
在步骤S330中,根据第一匹配结果从目标单词序列中确定出与待检查单词序列对应的第一单词序列。
本示例实施方式中,第一单词序列为目标单词序列中与待检查单词序列相似度最高的单词序列。第一匹配结果用于表示各目标单词序列与待检查单词序列的相似度。
在步骤S340中,从第一单词序列对应的子图数据结构中确定出与待检查单词序列对应的第二单词序列,以根据第二单词序列确定待检查代码中的错误代码;其中,第二单词序列与待检查单词序列的相似度大于等于第一单词序列与待检查单词序列的相似度。
本示例实施方式中,在根据第二单词序列确定出待检查代码中的错误代码之后,还可以包括以下步骤:判断图数据结构中是否存在错误代码的单词序列对应的节点,如果不存在,则创建错误代码的单词序列对应的节点;如果存在,则根据错误代码的单词序列及其对应的错误说明确定出满足预置条件的备选单词历史序列,若备选历史单词序列与错误代码的单词序列属于相同错误类别,则在备选历史单词序列对应的节点与错误代码的单词序列对应的节点之间建立连接关系,以实现对于图数据结构的更新,利用不断确定出的新的错误代码,丰富图数据库中的图数据结构。
进一步地,若第二单词序列与待检查代码中的错误代码对应的单词序列不相同,则上述的执行判断图数据结构中是否存在错误代码的单词序列对应的节点的操作,否则不执行。
本示例实施方式中,从第一单词序列对应的子图数据结构中确定出与待检查单词序列对应的第二单词序列,包括:
将第一单词序列对应的子图数据结构中除第一单词序列外的其他单词序列与待检查单词序列进行匹配,得到第二匹配结果;
根据第二匹配结果从第一单词序列对应的子图数据结构中确定出与待检查单词序列相似度最高的第二单词序列。
本示例实施方式中,第二单词序列可以为子图数据结构中与待检查单词序列相似度最高的单词序列,该子图数据结构是包括第一单词序列的子图数据结构。其中,第一单词序列与第二单词序列可以为同一单词序列,也可以为不同单词序列,本公开的实施例不作限定。
本实例实施方式中,第一匹配结果和第二匹配结果均用于表示单词序列之间的相似度。
可见,实施该可选的实施方式,能够降低计算机资源的占用率,提升对于代码的查错效率和查错效果。
本示例实施方式中,根据第二单词序列确定待检查代码中的错误代码,包括:
从待检查单词序列中确定出与第二单词序列相对应的单词序列部分;
确定单词序列部分在待检查代码中对应的代码部分,作为错误代码。
本示例实施方式中,从待检查单词序列中确定出与第二单词序列相对应的单词序列部分可以为上述待检查单词序列示例中的一部分,如下所示:
进一步地,根据上述单词序列部分示例确定出的在待检查代码中对应的代码部分作为错误代码可以为上述待检查代码示例中的一部分,如下所示:
可见,实施该可选的实施方式,能够通过自动化代码检查提升代码查错效率,降低代码查错成本。
本示例实施方式中,该错误代码确定方法还包括:
将待检查代码中的错误代码进行高亮显示。
本示例实施方式中,将待检查代码中的错误代码进行高亮显示的方式具体可以为:将待检查代码中的错误代码的背景颜色调整为预设颜色(如,黄色);或者,将待检查代码中的错误代码的字体颜色调整为预设颜色(如,红色),本公开的实施例不作限定。
可见,实施该可选的实施方式,能够帮助开发者快速定位错误代码,以通过开发者的代码修改提升代码质量。
本示例实施方式中,该错误代码确定方法还包括:
将历史错误代码转换为历史单词序列并存储;
根据历史单词序列构建图数据结构;其中,目标单词序列、第一单词序列和第二单词序列均为历史单词序列。
进一步地,根据历史单词序列构建图数据结构,包括:
若历史单词序列在图数据结构中存在相应的节点,则根据历史单词序列和历史单词序列对应的错误说明确定出满足预置条件的备选历史单词序列;若历史单词序列在图数据结构中不存在相应的节点,则创建历史单词序列对应的节点;
若备选历史单词序列与历史单词序列属于相同错误类别,则在备选历史单词序列对应的节点与历史单词序列对应的节点之间建立连接关系。
本示例实施方式中,历史单词序列也可以为待检查代码中错误代码对应的单词序列。
本示例实施方式中,历史错误代码可以参见如下示例:
进一步地,将历史错误代码进行转换得到的历史单词序列可以参见如下示例:
本示例实施方式中,第一单词序列与第二单词序列可以为同一单词序列,也可以为不同单词序列,本公开的实施例不作限定。另外,第一单词序列的数量为至少一个,若第一单词序列为多个,那么,与其对应的子图数据结构也存在多个,且第一单词序列数量与对应的子图数据结构数量相同。
本示例实施方式中,将历史错误代码转换为历史单词序列并存储的方式具体为:将历史错误代码转换为历史单词序列,并定义一用于表示将历史错误代码转换后得到的历史单词序列的名词(如,fragment,可以理解为名词fragment代表的是待检查单词序列,fragment起一标识作用),以及,将fragment存储于一分布式搜索引擎(如,ElasticSearch,即ES)。
进一步地,将fragment存储于一分布式搜索引擎的方式具体可以为:将fragment中的单词通过空格拼接为字符串存储于ES。
举例来说,若fragment为:[‘REDISINST’,‘del’,‘REDISINST’,‘expireAt’,‘time’,‘+’,‘INTEGER’],那么,将fragment中的单词通过空格拼接得到的字符串可以为:‘REDISINST del REDISINST expireAt time+INTEGER’,进而可以将该字符串存储至ES中。
本示例实施方式中,该错误代码确定方法还可以包括以下步骤:
根据n元语法(n-gram)的滑动窗口在ES中创建索引,以便于进行模糊匹配搜索;其中,n用于表示滑动窗口的长度,n为正整数。
具体地,由于ES在建立倒排索引时,通常默认使用一元语法(即,n为1),但是,一元语法仅对单个分析建立索引,例如,‘REDISINST’、‘del’。在本公开的实施例中,可以使用二元语法(即,n为2)建立索引,二元语法不仅可以对单个分词建立索引,还可以对前后两个组合词汇建立索引,例如,‘REDISINST del’、‘del REDISINST’、‘REDISINST expireAt’、‘expireAt time’、‘time+’以及‘+INTEGER’。这样能够降低用户自定义标识符的复杂性和多样性给词法分析带来的干扰,便于生成token序列;另外,由于单个词汇出现的频次较高,使用二元语法能够考虑到代码的上下文联系,进而优化搜索结果。
需要说明的是,在计算机语言中,n-gram用于表示一个由n元组构成的连续序列,元素可以是字符或单词。当n分别为1、2、3时,n-gram可以分别被称为一元语法、二元语法和三元语法。
此外,需要说明的是,上述的倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(invertedindex)。
可见,实施该可选的实施方式,能够根据历史错误代码片段搜索匹配待检查代码中与已知错误相似的代码片段,从而帮助开发者定位容易被忽视的错误,以提升代码质量。
可见,实施图3所述的错误代码确定方法,能够在一定程度上克服人工检查的效率相对较低且人工检查的成本较高的问题,通过自动化代码检查提升代码查错效率,降低代码查错成本;以及,能够通过与图数据结构中单词序列的匹配,识别待检查代码中的语法错误和逻辑错误,改善代码查错效果。
请参阅图4,图4示意性示出了根据本公开的一个实施例的图数据结构构建方法的流程图。如图4所示,该图数据结构构建方法包括步骤S410、步骤S420、步骤S430、步骤S440以及步骤S450,其中:
步骤S410:判断图数据结构中是否存在当前单词序列对应的节点,如果是,则执行步骤S430;如果否,则执行步骤S420。
步骤S420:创建当前单词序列对应的节点。
步骤S430:判断图数据结构中是否存在当前单词序列对应的备选单词序列,如果是,则执行步骤S440;如果否,则结束本次流程。
步骤S440:判断备选单词序列与当前单词序列是否相关,如果是,则执行步骤S450;如果否,则结束本次流程。
步骤S450:在备选单词序列对应的节点与当前单词序列对应的节点之间建立连接关系。
下面,对于本示例实施方式的上述步骤进行更加详细的说明。
在步骤S410中,判断图数据结构中是否存在当前单词序列对应的节点,如果是,则执行步骤S430;如果否,则执行步骤S420。
本示例实施方式中,当前单词序列可以为上述可选实施方式中确定出的历史单词序列,也可以为上述步骤S340确定出的待检查代码中的错误代码对应的单词序列,本公开的实施例不作限定。
在步骤S420中,创建当前单词序列对应的节点。
在步骤S430中,判断图数据结构中是否存在当前单词序列对应的备选单词序列,如果是,则执行步骤S440;如果否,则结束本次流程。
本示例实施方式中,图数据结构可以由多个子图数据结构构成,子图数据结构可以由多个节点构成,其中,存在连接关系的节点之间通过边进行连接。请参阅图5,图5示意性示出了根据本公开的一个实施例的子图数据结构的示意图。如图5所示的子图数据结构包括节点A 501、节点B 502、节点C 503、节点D 504、节点E 505以及节点F 506。其中,节点B502分别与节点A 501、节点C 503和节点D 504存在连接关系,即节点B 502与节点A 501、节点C 503和节点D 504之间分别存在用于连接节点的边。此外,节点D 504还与节点E 505存在连接关系,节点E505还与节点F 506存在连接关系,即,节点D 504还与节点E 505之间存在用于连接节点的边,节点E 505还与节点F 506间存在用于连接节点的边。
可见,在图5所示的子图数据结构中,节点B 502具有3条边,节点D 504和节点E505分别具有2条边,节点A 501、节点C 503和节点F 506分别具有1条边;其中,节点B 502具有的边最多,故,节点B 502可以作为图5所示的子图数据结构的目标单词序列。同理,图数据结构中的任一子图数据结构均存在一目标单词序列,该目标单词序列可以为具有边最多的节点对应的单词序列,也可以为一随机确定出的节点对应的单词序列,本公开的实施例不作限定。此外,需要说明的是,各子图数据结构分别代表逻辑相近的一类错误。
其中,节点A 501、节点B 502、节点C 503、节点D 504、节点E 505以及节点F 506分别对应一单词序列,若两个单词序列之间的相似度小于预设相似度,那么,则可以将两个单词序列对应的节点通过边进行连接。
本示例实施方式中,判断图数据结构中是否存在当前单词序列对应的备选单词序列的方式具体可以为:判断当前单词序列与目标单词序列的相似度是否高于预设相似度,如果高于,则判断当前单词序列对应的错误说明是否与目标单词序列对应的错误说明为同一类错误说明,如果是,则判定存在与当前单词序列对应的备选单词序列;如果不高于,则结束流程,如果当前单词序列对应的错误说明与目标单词序列对应的错误说明不是同一类错误说明,则结束流程。此外,在判定出当前单词序列存在对应的备选单词序列之后,还可以将与当前单词序列相似的目标单词序列确定并为备选单词序列。
举例来说,请参阅以下表格:
如上述表格所示,原始代码中存在错误代码1和错误代码2,错误代码1与错误代码2相似且其分别对应的fragment(即,单词序列)也相似,故,计算错误代码1对应的fragment和错误代码2对应的fragment之间的相似度会高于预设相似度。但是,错误代码1与错误代码2分别对应的错误说明表明了错误代码1和错误代码2为不同类别的错误,因此,在图数据结构中,错误代码1对应的节点与错误代码2对应的节点之间不能通过边进行连接,并且,错误代码1对应的节点与错误代码2对应的节点也不属于同一子图数据结构。此外,需要说明的是,上述的原始代码可以为本公开实施例中的待检查代码。
本示例实施方式中,如果判定图数据结构中不存在与当前单词序列对应的备选单词序列,那么,则表明图数据结构中所有目标单词序列均与当前单词序列无关。
在步骤S440中,判断备选单词序列与当前单词序列是否相关,如果是,则执行步骤S450;如果否,则结束本次流程。
本示例实施方式中,判断备选单词序列与当前单词序列是否相关的方式具体可以为:根据检测到的用户操作判断备选单词序列与当前单词序列是否相关,若用户操作为用于表示单词序列相关的操作,则判定备选单词序列与当前单词序列相关;若用户操作为用于表示单词序列不相关的操作,则判定备选单词序列与当前单词序列不相关。
在步骤S450中,在备选单词序列对应的节点与当前单词序列对应的节点之间建立连接关系。
本示例实施方式中,在备选单词序列对应的节点与当前单词序列对应的节点之间建立连接关系的方式具体可以为:通过边将备选单词序列对应的节点与当前单词序列对应的节点连接。
可见,结合图4所示的图数据结构构建方法以及图5所示的子图数据结构实施本公开的错误代码确定方法,能够利用各子图数据结构中的一目标单词序列与待检查单词序列进行匹配,相较遍历各子图数据结构中的各单词序列与待检查单词序列匹配,降低了计算规模,节省了计算资源,进而还能够提升代码查错效率。
请参阅图6,图6示意性示出了根据本公开的一个实施例的错误代码确定方法的架构示意图。如图6所示,错误代码确定方法的架构示意图可以包括离线数据准备阶段和在线代码查错阶段;其中,离线数据准备阶段可以包括历史错误代码601、预处理6021、分布式搜索引擎6031以及图数据结构604,在线代码查错阶段可以包括待检查代码605、预处理6022、分布式搜索引擎6032以及错误代码606。
具体地,可以在离线数据准备阶段输入历史错误代码601,根据预处理6021将历史错误代码601转换为历史单词序列,进而,可以在分布式搜索引擎6031(如,ES)中存储历史单词序列,进而,可以通过历史单词序列构建得到图数据结构604,具体构建方式可以参见上述实施例,此处不再赘述。另外,可以在在线代码查错阶段输入待检查代码605,根据预处理6022将待检查代码605转换为待检查单词序列,进而,可以在分布式搜索引擎6032中存储待检查单词序列,并根据与图数据结构604的匹配搜索确定出待检查代码中的错误代码606。
可见,实施图6所示的错误代码确定方法的架构示意图,能够在一定程度上克服人工检查的效率相对较低且人工检查的成本较高的问题,通过自动化代码检查提升代码查错效率,降低代码查错成本;以及,能够通过与图数据结构中单词序列的匹配,识别待检查代码中的语法错误和逻辑错误,改善代码查错效果。
请参阅图7,图7示意性示出了根据本公开的一个实施例的确定与待检查单词序列对应的单词序列的流程图。如图7所示,该流程图包括步骤S710、步骤S720、步骤S730、步骤S740、步骤S750、步骤S760以及步骤S770,其中:
步骤S710:判断目标单词序列是否与待检查单词序列匹配,如果是,则执行步骤S720;如果否,则结束本次流程。
步骤S720:循环遍历目标单词序列所在的子图数据结构中其他单词序列,以确定出其他单词序列分别与待检查单词序列的相似度。
步骤S730:判断循环是否结束,如果是,则执行步骤S760;如果否,则执行步骤S740。
步骤S740:判断其他单词序列与待检查单词序列是否匹配,如果是,则执行步骤S750;如果否,则执行步骤S720。
步骤S750:确定该其他单词序列与待检查单词序列的相似度。
步骤S760:将各其他单词序列与待检查单词序列的相似度进行排序。
步骤S770:输出匹配结果。
具体地,可以判断目标单词序列是否与待检查单词序列匹配,其中,目标单词序列为子图数据结构中具有边最多的节点对应的单词序列,如果目标单词序列与待检查单词序列匹配,则说明待检查单词序列与目标单词序列相似,且属于同一类别的错误。由于目标单词序列所属的子图数据结构中包括的是同一类的单词序列,因此,可以循环遍历目标单词序列所在的子图数据结构中其他单词序列,以确定出是否存在比目标单词序列与待检查单词序列更相似的单词序列,可以理解为步骤:将其他单词序列与待检查单词序列进行匹配;进而,可以判断循环是否结束,如果是,则表明已得到每个其他单词序列与待检查单词序列的匹配结果;如果否,则表明还存在一些其他单词序列与待检查单词序列未进行匹配,可以进一步判断其他单词序列与待检查单词是否匹配,如果匹配,则确定上述这个其他单词序列与待检查单词序列的相似度,并将各其他单词序列与待检查单词序列的相似度进行排序,以得到输出的匹配结果,该匹配结果可以认为是与待检查单词序列最相似的单词序列,即,该单词序列与待检查单词序列相似度最高。此外,可选的,匹配结果可以为一个也可以为多个,如果匹配结果为多个,则果匹配结果为与待检查单词序列相似度最高的前N个单词序列(其中,N为正整数),本公开的实施例不作限定。
可见,结合图7所示的确定与待检查单词序列对应的单词序列的流程图实施本公开的实施例。能够在一定程度上克服人工检查的效率相对较低且人工检查的成本较高的问题,通过自动化代码检查提升代码查错效率,降低代码查错成本;以及,能够通过与图数据结构中单词序列的匹配,识别待检查代码中的语法错误和逻辑错误,改善代码查错效果。
进一步的,本示例实施方式中,还提供了一种错误代码确定装置。该错误代码确定装置可以应用于服务器或终端设备。参考图8所示,该错误代码确定装置800可以包括词法分析单元801、单词序列匹配单元802以及单词序列确定单元803,其中:
词法分析单元801,用于对待检查代码进行词法分析,得到待检查单词序列;
单词序列匹配单元802,用于将待检查单词序列与图数据结构中的目标单词序列进行匹配,得到第一匹配结果;其中,图数据结构包括至少两个子图数据结构,各子图数据结构分别对应一目标单词序列;
单词序列确定单元803,用于根据第一匹配结果从目标单词序列中确定出与待检查单词序列对应的第一单词序列;
单词序列确定单元803,还用于从第一单词序列对应的子图数据结构中确定出与待检查单词序列对应的第二单词序列,以根据第二单词序列确定待检查代码中的错误代码;其中,第二单词序列与待检查单词序列的相似度大于等于第一单词序列与待检查单词序列的相似度。
可见,实施图8所示的错误代码确定装置,能够在一定程度上克服人工检查的效率相对较低且人工检查的成本较高的问题,通过自动化代码检查提升代码查错效率,降低代码查错成本;以及,能够通过与图数据结构中单词序列的匹配,识别待检查代码中的语法错误和逻辑错误,改善代码查错效果。
在本公开的一种示例性实施例中,各子图数据结构均由具有连接关系的单词序列组成,单词序列匹配单元802将待检查单词序列与图数据结构中的目标单词序列进行匹配的方式具体为:
单词序列匹配单元802确定图数据结构中各子图数据结构对应的目标单词序列;其中,目标单词序列在对应的子图数据结构中具有的连接关系数量高于对应的子图数据结构中其他单词序列;
单词序列匹配单元802将目标单词序列分别与待检查单词序列进行匹配。
可见,实施该示例性实施例,能够通过子图数据结构中具有代表性的目标单词序列与待检查单词序列进行匹配,降低了整体计算量,提升了代码查错效率。
在本公开的一种示例性实施例中,单词序列确定单元803从第一单词序列对应的子图数据结构中确定出与待检查单词序列对应的第二单词序列的方式具体为:
单词序列确定单元803将第一单词序列对应的子图数据结构中除第一单词序列外的其他单词序列与待检查单词序列进行匹配,得到第二匹配结果;
单词序列确定单元803根据第二匹配结果从第一单词序列对应的子图数据结构中确定出与待检查单词序列相似度最高的第二单词序列。
可见,实施该示例性实施例,能够降低计算机资源的占用率,提升对于代码的查错效率和查错效果。
在本公开的一种示例性实施例中,单词序列确定单元803根据第二单词序列确定待检查代码中的错误代码的方式具体为:
单词序列确定单元803从待检查单词序列中确定出与第二单词序列相对应的单词序列部分;
单词序列确定单元803确定单词序列部分在待检查代码中对应的代码部分,作为错误代码。
可见,实施该可选的实施例,能够通过自动化代码检查提升代码查错效率,降低代码查错成本。
在本公开的一种示例性实施例中,该错误代码确定装置还包括高亮显示单元(未图示),其中:
高亮显示单元,用于将待检查代码中的错误代码进行高亮显示。
可见,实施该可选的实施例,能够帮助开发者快速定位错误代码,以通过开发者的代码修改提升代码质量。
在本公开的一种示例性实施例中,该错误代码确定装置还包括代码转换单元(未图示)和图数据结构构建单元(未图示),其中:
代码转换单元,用于将历史错误代码转换为历史单词序列并存储;
图数据结构构建单元,用于根据历史单词序列构建图数据结构;其中,目标单词序列、第一单词序列和第二单词序列均为历史单词序列。
进一步地,图数据结构构建单元根据历史单词序列构建图数据结构的方式具体为:
若历史单词序列在图数据结构中存在相应的节点,图数据结构构建单元根据历史单词序列和历史单词序列对应的错误说明确定出满足预置条件的备选历史单词序列;若历史单词序列在图数据结构中不存在相应的节点,图数据结构构建单元创建历史单词序列对应的节点;
若备选历史单词序列与历史单词序列属于相同错误类别,图数据结构构建单元在备选历史单词序列对应的节点与历史单词序列对应的节点之间建立连接关系。
可见,实施该可选的实施例,能够根据历史错误代码片段搜索匹配待检查代码中与已知错误相似的代码片段,从而帮助开发者定位容易被忽视的错误,以提升代码质量。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
由于本公开的示例实施例的错误代码确定装置的各个功能模块与上述错误代码确定方法的示例实施例的步骤对应,因此对于本公开装置实施例中未披露的细节,请参照本公开上述的错误代码确定方法的实施例。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

Claims (10)

1.一种错误代码确定方法,其特征在于,包括:
对待检查代码进行词法分析,得到待检查单词序列;
将所述待检查单词序列与图数据结构中的目标单词序列进行匹配,得到第一匹配结果;其中,所述图数据结构包括至少两个子图数据结构,各所述子图数据结构分别对应一所述目标单词序列,各所述子图数据结构对应的错误代码的类别不同;
根据所述第一匹配结果从所述目标单词序列中确定出与所述待检查单词序列对应的第一单词序列;
从所述第一单词序列对应的子图数据结构中确定出与所述待检查单词序列对应的第二单词序列,以根据所述第二单词序列确定所述待检查代码中的错误代码;其中,所述第二单词序列与所述待检查单词序列的相似度大于等于所述第一单词序列与所述待检查单词序列的相似度。
2.根据权利要求1所述的方法,其特征在于,各所述子图数据结构均由具有连接关系的单词序列组成,将所述待检查单词序列与图数据结构中的目标单词序列进行匹配,包括:
确定图数据结构中各所述子图数据结构对应的目标单词序列;其中,所述目标单词序列在对应的子图数据结构中具有的连接关系数量高于所述对应的子图数据结构中其他单词序列;
将所述目标单词序列分别与所述待检查单词序列进行匹配。
3.根据权利要求2所述的方法,其特征在于,从所述第一单词序列对应的子图数据结构中确定出与所述待检查单词序列对应的第二单词序列,包括:
将所述第一单词序列对应的子图数据结构中除所述第一单词序列外的其他单词序列与所述待检查单词序列进行匹配,得到第二匹配结果;
根据所述第二匹配结果从所述第一单词序列对应的子图数据结构中确定出与所述待检查单词序列相似度最高的第二单词序列。
4.根据权利要求1所述的方法,其特征在于,根据所述第二单词序列确定所述待检查代码中的错误代码,包括:
从所述待检查单词序列中确定出与所述第二单词序列相对应的单词序列部分;
确定所述单词序列部分在所述待检查代码中对应的代码部分,作为错误代码。
5.根据权利要求1所述的方法,其特征在于,还包括:
将所述待检查代码中的错误代码进行高亮显示。
6.根据权利要求1所述的方法,其特征在于,还包括:
将历史错误代码转换为历史单词序列并存储;
根据所述历史单词序列构建所述图数据结构;其中,所述目标单词序列、所述第一单词序列和所述第二单词序列均为所述历史单词序列。
7.根据权利要求6所述的方法,其特征在于,根据所述历史单词序列构建所述图数据结构,包括:
若所述历史单词序列在所述图数据结构中存在相应的节点,则根据所述历史单词序列和所述历史单词序列对应的错误说明确定出满足预置条件的备选历史单词序列;若所述历史单词序列在所述图数据结构中不存在相应的节点,则创建所述历史单词序列对应的节点;
若所述备选历史单词序列与所述历史单词序列属于相同错误类别,则在所述备选历史单词序列对应的节点与所述历史单词序列对应的节点之间建立连接关系。
8.一种错误代码确定装置,其特征在于,包括:
词法分析单元,用于对待检查代码进行词法分析,得到待检查单词序列;
单词序列匹配单元,用于将所述待检查单词序列与图数据结构中的目标单词序列进行匹配,得到第一匹配结果;其中,所述图数据结构包括至少两个子图数据结构,各所述子图数据结构分别对应一所述目标单词序列,各所述子图数据结构对应的错误代码的类别不同;
单词序列确定单元,用于根据所述第一匹配结果从所述目标单词序列中确定出与所述待检查单词序列对应的第一单词序列;
所述单词序列确定单元,还用于从所述第一单词序列对应的子图数据结构中确定出与所述待检查单词序列对应的第二单词序列,以根据所述第二单词序列确定所述待检查代码中的错误代码;其中,所述第二单词序列与所述待检查单词序列的相似度大于等于所述第一单词序列与所述待检查单词序列的相似度。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7任一项所述的方法。
10.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-7任一项所述的方法。
CN201910741361.4A 2019-08-12 2019-08-12 错误代码确定方法、装置、计算机可读存储介质及设备 Active CN110489127B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910741361.4A CN110489127B (zh) 2019-08-12 2019-08-12 错误代码确定方法、装置、计算机可读存储介质及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910741361.4A CN110489127B (zh) 2019-08-12 2019-08-12 错误代码确定方法、装置、计算机可读存储介质及设备

Publications (2)

Publication Number Publication Date
CN110489127A CN110489127A (zh) 2019-11-22
CN110489127B true CN110489127B (zh) 2023-10-13

Family

ID=68550616

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910741361.4A Active CN110489127B (zh) 2019-08-12 2019-08-12 错误代码确定方法、装置、计算机可读存储介质及设备

Country Status (1)

Country Link
CN (1) CN110489127B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111240687A (zh) * 2020-01-09 2020-06-05 华东师范大学 源代码静态分析装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106227668A (zh) * 2016-07-29 2016-12-14 腾讯科技(深圳)有限公司 数据处理方法和装置
CN107704453A (zh) * 2017-10-23 2018-02-16 深圳市前海众兴电子商务有限公司 一种文字语义分析方法、文字语义分析终端及存储介质
CN108549538A (zh) * 2018-04-11 2018-09-18 深圳市腾讯网络信息技术有限公司 一种代码检测方法、装置、存储介质及测试终端
CN109325105A (zh) * 2018-11-23 2019-02-12 泰康保险集团股份有限公司 代码匹配方法、装置及存储介质
CN109977014A (zh) * 2019-03-22 2019-07-05 泰康保险集团股份有限公司 基于区块链的代码错误识别方法、装置、设备及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020087604A1 (en) * 2001-01-04 2002-07-04 International Business Machines Corporation Method and system for intelligent spellchecking

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106227668A (zh) * 2016-07-29 2016-12-14 腾讯科技(深圳)有限公司 数据处理方法和装置
CN107704453A (zh) * 2017-10-23 2018-02-16 深圳市前海众兴电子商务有限公司 一种文字语义分析方法、文字语义分析终端及存储介质
CN108549538A (zh) * 2018-04-11 2018-09-18 深圳市腾讯网络信息技术有限公司 一种代码检测方法、装置、存储介质及测试终端
CN109325105A (zh) * 2018-11-23 2019-02-12 泰康保险集团股份有限公司 代码匹配方法、装置及存储介质
CN109977014A (zh) * 2019-03-22 2019-07-05 泰康保险集团股份有限公司 基于区块链的代码错误识别方法、装置、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
面向软错误的源代码级故障恢复技术研究;徐毅;《中国优秀博硕士学位论文全文数据库(硕士)工程科技Ⅱ辑》;全文 *

Also Published As

Publication number Publication date
CN110489127A (zh) 2019-11-22

Similar Documents

Publication Publication Date Title
US11651014B2 (en) Source code retrieval
CN107203468B (zh) 一种基于ast的软件版本演化对比分析方法
US11609748B2 (en) Semantic code search based on augmented programming language corpus
CN113760891B (zh) 一种数据表的生成方法、装置、设备和存储介质
US10255047B2 (en) Source code analysis and adjustment system
CN110750297B (zh) 一种基于程序分析和文本分析的Python代码参考信息生成方法
CN112988753B (zh) 一种数据搜索方法和装置
CN110688111A (zh) 业务流程的配置方法、装置、服务器和存储介质
CN110489127B (zh) 错误代码确定方法、装置、计算机可读存储介质及设备
CN110175128A (zh) 一种相似代码案例获取方法、装置、设备和存储介质
CN117540757A (zh) 用于自动翻译的方法、电子设备及计算机可读存储介质
CN116894434A (zh) 语法纠错方法及电子设备
US10705810B2 (en) Automatic code generation
CN116029290A (zh) 文本匹配方法、装置、设备、介质及产品
CN115146070A (zh) 键值生成方法、知识图谱生成方法、装置、设备及介质
CN111310442B (zh) 形近字纠错语料挖掘方法、纠错方法、设备及存储介质
CN114742062A (zh) 文本关键词提取处理方法及系统
CN114897183A (zh) 问题数据处理方法、深度学习模型的训练方法和装置
CN110825608B (zh) 关键语义测试方法、装置、存储介质及电子设备
CN116226686B (zh) 一种表格相似性分析方法、装置、设备和存储介质
CN117556006B (zh) 标准问题确定方法及装置、电子设备和存储介质
US20220269981A1 (en) Machine learning pipeline skeleton instantiation
EP4050525A2 (en) Machine learning pipeline skeleton instantiation
EP4053759A1 (en) Machine learning pipeline skeleton instantiation
CN117952092A (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