一种程序处理方法、装置以及相关设备与流程

文档序号:16627173发布日期:2019-01-16 06:13阅读:149来源:国知局
一种程序处理方法、装置以及相关设备与流程

本发明涉及计算机技术领域,尤其涉及一种程序处理方法、装置以及相关设备。



背景技术:

随着信息技术的不断发展,计算机技术在现代各行各业中的应用,使得计算机软件在各行业的工作效率提升过程中发挥了重要的作用。但是从软件的应用情况来看,bug问题(程序漏洞)已经成为影响软件实际应用效果的一个重要问题。研究发现,与软件相关的bug中,其中大都是由编码阶段引入的拼写错误引起的(例如,将“ondestory”拼写为“ondestroy”,错误原因为相邻字符写反;或者将“onapplicationpause”拼写为“onapplictionpause”,错误原因为少一个字符等)。因此,为了提早发现软件代码中全局变量、隐式调用函数的函数名的拼写错误,消除软件中的bug,需要对整个程序代码进行检测。

在现有技术中,检测程序代码中的全局变量以及隐式调用函数的函数名是否存在拼写错误主要是基于人工的方法,即是由人工走读整个程序代码,在走读过程中发现代码中的全局变量以及隐式调用函数的函数名的拼写错误,但是由于代码体量太大,人力成本过高,导致人工检测代码中的拼写错误耗时巨大,效率低下。



技术实现要素:

本发明实施例提供一种程序处理方法、装置以及相关设备,可以提高程序代码检测的效率。

本发明实施例一方面提供了一种程序处理方法,包括:

获取目标代码文本信息,在所述目标代码文本信息中获取检测字符串;

若所述检测字符串属于全局变量类型,则根据第一集合识别所述检测字符串的拼写类型;所述第一集合包括所述目标代码文本信息中所有属于变量类型的第一字符串;

若所述检测字符串属于隐式函数类型,则将与所述检测字符串对应的函数所在的目标子类包含的类函数名,以及与所述目标子类对应的目标父类包含的类函数名均作为第二字符串,将所述第二字符串添加至第二集合,并根据所述第二集合识别所述检测字符串的拼写类型;

所述拼写校验类型包括拼写正确类型和拼写错误类型。

其中,所述在所述目标代码文本信息中获取检测字符串,包括:

按照目标顺序遍历与所述目标代码文本信息对应的目标字符序列;

根据构词规则,将所述目标字符序列划分为多个参考字符串,并检测每个参考字符串的功能类型;

在所述多个参考字符串中,将功能类型为全局变量类型的参考字符串,以及将功能类型为隐式函数类型的参考字符串均确定为所述检测字符串。

其中,所述根据第一集合识别所述检测字符串的拼写类型,包括:

若在所述第一集合中存在第一字符串与所述检测字符串满足第一相似条件,则将所述检测字符串的拼写类型确定为所述拼写错误类型;

若在所述第一集合中不存在第一字符串与所述检测字符串满足所述第一相似条件,则将所述检测字符串的拼写类型确定为所述拼写正确类型。

其中,还包括:

从第一字符串中选择两个相邻的字符,作为第一字符和第二字符;

交换所述第一字符和所述第二字符在所述第一字符串中的位置;

若交换位置后得到的字符串和所述检测字符串相同、所述第一字符串在所述目标字符序列中位置坐标小于所述检测字符串在所述目标字符序列中的位置坐标、且所述第一字符串的拼写类型为拼写正确类型,则确定所述第一字符串与所述检测字符串满足所述第一相似条件。

其中,还包括:

更新第一字符串;更新后的第一字符串是在所述第一字符串中删除字符后得到的字符串,或是在所述第一字符串中新增字符后得到的字符串;

若更新后的第一字符串和所述检测字符串相同、所述第一字符串在所述目标字符序列中位置坐标小于所述检测字符串在所述目标字符序列中的位置坐标、且所述第一字符串的拼写类型为拼写正确类型,则确定所述第一字符串与所述检测字符串满足所述第一相似条件。

其中,还包括:

在所述第一字符串中选择第一字符,确定所述第一字符在所述第一字符串中的目标位置信息,并将在所述检测字符串中处于所述目标位置信息的字符确定为第二字符;

若删除所述第一字符串中的第一字符后所得到的字符串,和删除所述检测字符串中的第二字符后所得到的字符串相同、所述第一字符串在所述目标字符序列中位置坐标小于所述检测字符串在所述目标字符序列中的位置坐标、且所述第一字符串的拼写类型为拼写正确类型,则确定所述第一字符串与所述检测字符串满足所述第一相似条件。

其中,所述将所述检测字符串的拼写类型确定为所述拼写错误类型,包括:

在所述第一集合,将与所述检测字符串满足所述第一相似条件的第一字符串,确定为目标字符串;

若所述目标字符串的数量大于目标数量阈值,且所述目标字符串在所述第一集合中相邻,则将所述检测字符串的拼写类型确定为所述拼写错误类型。

其中,所述根据所述第二集合识别所述检测字符串的拼写类型,包括:

若在所述第二集合中存在第二字符串与所述检测字符串满足第二相似条件,则将所述检测字符串的拼写类型确定为所述拼写错误类型;

若在所述第二集合中不存在第二字符串与所述检测字符串满足所述第二相似条件,则将所述检测字符串的拼写类型确定为所述拼写正确类型。

其中,还包括:

从所述第二字符串中选择两个相邻的字符,作为第一字符和第二字符;

交换所述第一字符和所述第二字符在所述第二字符串中的位置;

若交换位置后得到的字符串和所述检测字符串相同,则确定所述第二字符串与所述检测字符串满足所述第二相似条件。

其中,还包括:

更新第二字符串;更新后的第二字符串是在所述第二字符串中删除字符后得到的字符串,或是在所述第二字符串中新增字符后得到的字符串;

若更新后的第二字符串和所述检测字符串相同,则确定所述第二字符串与所述检测字符串满足所述第二相似条件。

其中,还包括:

在所述第二字符串中选择第一字符,确定所述第一字符在所述第二字符串中的目标位置信息,并将在所述检测字符串中处于所述目标位置信息的字符确定为第二字符;

若删除所述第一字符串中的第一字符后所得到的字符串,和删除所述检测字符串中的第二字符后所得到的字符串相同,则确定所述第二字符串与所述检测字符串满足所述第二相似条件。

本发明实施例一方面提供了一种程序处理装置,包括:

获取模块,用于获取目标代码文本信息;

识别模块,用于在所述目标代码文本信息中获取检测字符串;

第一检测模块,用于若所述检测字符串属于全局变量类型,则根据第一集合识别所述检测字符串的拼写类型;所述第一集合包括所述目标代码文本信息中所有属于变量类型的第一字符串;

添加模块,用于若所述检测字符串属于隐式函数类型,则将与所述检测字符串对应的函数所在的目标子类包含的类函数名,以及与所述目标子类对应的目标父类包含的类函数名均作为第二字符串,将所述第二字符串添加至第二集合;

第二检测模块,用于根据所述第二集合识别所述检测字符串的拼写类型;

所述拼写校验类型包括拼写正确类型和拼写错误类型。

其中,所述识别模块,包括:

遍历单元,用于按照目标顺序遍历与所述目标代码文本信息对应的目标字符序列;

划分单元,用于根据构词规则,将所述目标字符序列划分为多个参考字符串,并检测每个参考字符串的功能类型;

所述划分单元,还用于在所述多个参考字符串中,将功能类型为全局变量类型的参考字符串,以及将功能类型为隐式函数类型的参考字符串均确定为所述检测字符串。

其中,所述第一检测模块,包括:

第一确定单元,用于若在所述第一集合中存在第一字符串与所述检测字符串满足第一相似条件,则将所述检测字符串的拼写类型确定为所述拼写错误类型;

第二确定单元,用于若在所述第一集合中不存在第一字符串与所述检测字符串满足所述第一相似条件,则将所述检测字符串的拼写类型确定为所述拼写正确类型。

其中,还包括:

第一交换模块,用于从第一字符串中选择两个相邻的字符,作为第一字符和第二字符;

所述第一交换模块,还用于交换所述第一字符和所述第二字符在所述第一字符串中的位置;

所述第一交换模块,还用于若交换位置后得到的字符串和所述检测字符串相同、所述第一字符串在所述目标字符序列中位置坐标小于所述检测字符串在所述目标字符序列中的位置坐标、且所述第一字符串的拼写类型为拼写正确类型,则确定所述第一字符串与所述检测字符串满足所述第一相似条件。

其中,还包括:

第一更新模块,用于更新第一字符串;更新后的第一字符串是在所述第一字符串中删除字符后得到的字符串,或是在所述第一字符串中新增字符后得到的字符串;

所述第一更新模块,还用于若更新后的第一字符串和所述检测字符串相同、所述第一字符串在所述目标字符序列中位置坐标小于所述检测字符串在所述目标字符序列中的位置坐标、且所述第一字符串的拼写类型为拼写正确类型,则确定所述第一字符串与所述检测字符串满足所述第一相似条件。

其中,还包括:

第一选择模块,用于在所述第一字符串中选择第一字符,确定所述第一字符在所述第一字符串中的目标位置信息,并将在所述检测字符串中处于所述目标位置信息的字符确定为第二字符;

所述第一选择模块,还用于若删除所述第一字符串中的第一字符后所得到的字符串,和删除所述检测字符串中的第二字符后所得到的字符串相同、所述第一字符串在所述目标字符序列中位置坐标小于所述检测字符串在所述目标字符序列中的位置坐标、且所述第一字符串的拼写类型为拼写正确类型,则确定所述第一字符串与所述检测字符串满足所述第一相似条件。

其中,所述第二确定单元,包括:

第一确定子单元,用于在所述第一集合,将与所述检测字符串满足所述第一相似条件的第一字符串,确定为目标字符串;

第二确定子单元,用于若所述目标字符串的数量大于目标数量阈值,且所述目标字符串在所述第一集合中相邻,则将所述检测字符串的拼写类型确定为所述拼写错误类型。

其中,所述第二检测模块,包括:

第三确定单元,用于若在所述第二集合中存在第二字符串与所述检测字符串满足第二相似条件,则将所述检测字符串的拼写类型确定为所述拼写错误类型;

第四确定单元,用于若在所述第二集合中不存在第二字符串与所述检测字符串满足所述第二相似条件,则将所述检测字符串的拼写类型确定为所述拼写正确类型。

其中,还包括:

第二交换模块,用于从所述第二字符串中选择两个相邻的字符,作为第一字符和第二字符;

所述第二交换模块,还用于交换所述第一字符和所述第二字符在所述第二字符串中的位置;

所述第二交换模块,还用于若交换位置后得到的字符串和所述检测字符串相同,则确定所述第二字符串与所述检测字符串满足所述第二相似条件。

其中,还包括:

第二更新模块,用于更新第二字符串;更新后的第二字符串是在所述第二字符串中删除字符后得到的字符串,或是在所述第二字符串中新增字符后得到的字符串;

所述第二更新模块,还用于若更新后的第二字符串和所述检测字符串相同,则确定所述第二字符串与所述检测字符串满足所述第二相似条件。

其中,还包括:

第二选择模块,用于在所述第二字符串中选择第一字符,确定所述第一字符在所述第二字符串中的目标位置信息,并将在所述检测字符串中处于所述目标位置信息的字符确定为第二字符;

所述第二选择模块,还用于若删除所述第一字符串中的第一字符后所得到的字符串,和删除所述检测字符串中的第二字符后所得到的字符串相同,则确定所述第二字符串与所述检测字符串满足所述第二相似条件。

本发明实施例一方面提供了一种电子设备,包括:处理器和存储器;

所述处理器和存储器相连,其中,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行如本发明实施例中的方法。

本发明实施例一方面提供了一种计算机存储介质,所述计算机存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如本发明实施例中的方法。

本发明实施例通过获取目标代码文本信息,在目标代码文本信息中获取检测字符串;若检测字符串属于全局变量类型,则根据第一集合识别检测字符串的拼写类型;第一集合包括目标代码文本信息中所有属于变量类型的第一字符串;若检测字符串属于隐式函数类型,则将与检测字符串对应的函数所在的目标子类包含的类函数名,以及与目标子类对应的目标父类包含的类函数名均作为第二字符串,将第二字符串添加至第二集合,并根据第二集合识别检测字符串的拼写类型。上述可知,自动化地检测出程序代码中存在拼写错误的全局变量,以及自动化地检测出程序代码存在拼写错误的隐式函数的函数名,避免由人工手动检测整个程序代码,可以节省检测程序代码的耗时,进而提高检测的效率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种程序处理方法的系统架构图;

图2是本发明实施例提供的一种程序处理方法的场景示意图;

图3是本发明实施例提供的一种程序处理方法的流程示意图;

图4是本发明实施例提供的一种确定检测字符串类型的流程示意图;

图5是本发明实施例提供的另一种确定检测字符串类型的流程示意图;

图6是本发明实施例提供的一种程序处理装置的结构示意图;

图7是本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

是本发明实施例提供的一种程序处理方法的系统架构图,服务器10a为用户终端集群提供服务,用户终端集群可以包括:用户终端10b、用户终端10c、...、用户终端10d。当用户终端(可以是用户终端10b、用户终端10c或用户终端10d)中的程序代码中的全局变量以及采用隐式调用方式调用函数的函数名需要检测是否存在拼写错误时,用户终端可以将待检测的程序代码发送至服务器10a,由服务器10a对该程序代码进行检测,其中采用隐式调用方式调用的函数可以称为隐式函数。服务器10a检测完成后,可以将检测结果发送至用户终端,用户终端对检测结果进行显示,以使用户知晓上述程序代码中存在的拼写错误,后续服务器10a可以将本次的检测结果以及对应的程序代码关联存储至数据库,方便后续查看。当然,如果用户终端自身就可以检测程序代码中的的全局变量以及隐式函数的函数名是否存在拼写错误,也可以在用户终端中直接检测程序代码得到检测结果,只需要用户终端将检测的程序代码以及检测结果一并发送至服务器10a用于存储。下述以用户终端直接对一段程序代码进行检测为例,说明如何检测程序代码中的拼写错误。

其中,用户终端可以包括手机、平板电脑、笔记本电脑、掌上电脑、台式机等用户终端设备。

请参见图2,是本发明实施例提供的一种程序处理方法的场景示意图。获取待检测的程序代码20a,其中程序代码20a所对应的编程语言类型不做限定。为了检测程序代码20a中的全局变量,以及采用隐式调用方式调用函数(隐式函数)的函数名是否存在拼写错误,将程序代码20a中的属于变量类型的字符串以及属于隐式函数类型的字符串均作为检测字符串。识别程序代码20a中属于变量类型的字符串和属于隐式函数类型的字符串的具体过程为:按照从上至下,从左到右的顺序遍历与程序代码20a对应的字符序列,由上述遍历到的字符组合而成的序列称为与程序代码20a对应的字符序列,可以知道字符序列中不仅包含了字符,还包含了字符之间的前后顺序关系。根据构词规则,将字符序列划分为多个字符串,并识别每个字符串对应的功能类型,即是划分出来的字符串都存在与之对应的功能类型。其中功能类型包括:变量类型、运算符类型、常量类型、关键字类型、隐式函数类型等,变量类型还可以进一步细分为局部变量类型和全局变量类型。

需要说明的是,在程序代码中函数声明中的函数名,或者采用显式调用方式调用函数时所对应的函数名的功能类型均为变量类型;只有当采用隐式调用方式调用函数时,该函数的函数名所对应的功能类型才是隐式函数类型。其中显式调用是直接将函数名作为一条语句进行调用,例如:a=max(2,3)(计算数值2和数值3哪个数值更大),此处中的函数名“max”的功能类型即是变量类型,隐式调用是将函数名作为一个常量字符串进行调用,例如:this.luastate.registerfunction("csharpmethod",this,this.gettype().getmethod("max"));此处中的函数名“max”的功能类型即是隐式函数类型。如图2所示,对程序代码20a进行解析后,可以划分出多个字符串,以及识别出每个字符串对应的功能类型。在划分出来的所有字符串中,将功能类型为全局变量类型的字符串(变量)以及功能类型为隐式函数类型的字符串均(隐式函数的函数名)确定为检测字符串,并将上述检测字符串组合为检测字符串集合20b。

对检测字符串集合20b中的各个检测字符串分别进行检测,将检测方式分为两种,一种检测方式的对象的全局变量类型的字符串;另一个检测方式的对象是隐式函数类型的字符串。下面对两种检测方式分别进行说明。当检测字符串的功能类型为全局变量类型时,根据第一集合20c中的字符串,识别检测字符串是否存在拼写错误。其中,第一集合20c中的字符串是程序代码20a中的所有属于变量类型的字符串,由于属于全局变量类型的字符串也是属于变量类型的字符串,因此第一集合20c中必然包含属于全局变量类型的检测字符串。在第一集合20c中搜索是否存在和检测字符串相似的字符串,若存在的话进一步判断相似字符串的拼写是否拼写正确,且该相似字符串在字符序列中的位置是否比检测字符串靠前,若判断结果均为是,那么确定检测字符串拼写错误;反之,确定检测字符串拼写正确。

判断两个字符串是否相似的方式可以是:若交换一个字符串中相邻的两个字符的位置后,和另一个字符串相同,那么说明这两个字符串相似,例如,ondestroy和ondestory。判断两个字符串是否相似的方式还可以是:删除一个字符串中的一个字符或者添加一个字符串后和另一个字符串相同,那么说明这两个字符串相似,例如,onapplictionpause和onapplicationpause。判断两个字符串是否相似的方式还可以是:删除两个字符串中位于同一个位置的字符,若删除字符后的两个字符串相同,那么说明这两个字符串相似,例如,ondestroy和ondestroy。

如图2所示,对检测字符串集合20b中的对检测字符串“a”来说,由于在第一集合20c中不存在和检测字符串“a”相似的字符串,那么说明检测字符串“a”拼写正确。采用同样的方式,可以判断出检测字符串“b”也拼写正确。

对检测字符串“ondestroy”来说,由于在第一集合20c中存在和它相似的字符串“ondestroy”,但字符串“ondestroy”在程序代码20a对应的字符序列中的位置处于检测字符串“ondestroy”在程序代码20a对应的字符序列中的位置之后,因此,检测字符串“ondestroy”的拼写仍旧正确,或者可以理解为对首次定义声明的变量字符串来说必然是拼写正确的字符串。对应地,对检测字符串“ondestroy”来说,由于相似的对称性,检测字符串“ondestroy”和第一集合20c中的字符串“ondestroy”相似,但字符串“ondestroy”在程序代码20a对应的字符序列中的位置处于检测字符串“ondestroy”在程序代码20a对应的字符序列中的位置之前,且字符串“ondestroy”已经确定拼写正确,因此检测字符串“ondestroy”就是拼写错误的字符串。可以采用相同的方式,可以得到检测字符串“abdec”和字符串“abcde”相似,但字符串“abcde”在字符序列中的位置处于字符串“abdec”之前,因此字符串“abcde”拼写正确,字符串“abdec”就拼写错误。对字符串“f1”来说,虽然字符串“f1”是一个函数名,但在此处是函数声明中的函数名,因此字符串“f1”的功能类型为全局变量类型,且在第一集合20c中不存在与检测字符串“f1”相似的字符串,因此字符串“f1”拼写正确。

上述是当检测对象的功能类型为全局变量类型时的检测方式,下述是当检测对象的功能类型为隐式函数类型时的检测方式:将检测字符串所在的子类称为目标子类,将目标子类对应的父类称为目标父类。将目标子类所包含的类函数名和目标父类所包含的类函数名均组合为第二集合,在第二集合中搜索是否存在和检测字符串之间相似的字符串。如果在第二集合中查找到字符串和检测字符串相似,那么可以直接确定检测字符串拼写错误;相反如果在第二集合中不能查找到字符串和检测字符串相似,那么可以直接确定检测字符串拼写正确。其中,查找目标子类和目标父类所包含的类函数的方式是:查找目标子类和目标父类在程序代码中对应的导入(import)包的包名,在该包名所在的路径下查找目标子类和目标父类所包含的类函数。

如图2所示,提取功能类型为隐式函数类型的字符串“sendmessege”,作为检测字符串“sendmessege”,查找检测字符串“sendmessege”对应函数所在的子类,该子类为:message,将子类“message”以及对应父类“me”所包含的类函数的函数名添加至第二集合,因此将函数名“f1”、“sendmessage”(发送消息)、“broadcastmessage”(广播消息)、“sendmessageupwards”(上传消息)、“sendmessagedownwards”(下载消息)均添加至第二集合20d。

在第二集合20d中搜索是否存在字符串和检测字符串“sendmessege”相似,判断两个字符串是否相似可以参见上述具体描述过程。由于在第二集合20d中存在字符串“sendmessage”和检测字符串“sendmessege”相似,因此可以直接确定该检测字符串“sendmessege”拼写错误。

将上述两种不同的检测方式对比可以知道,在检测过程中,第一集合20c可以根据程序代码20b提前构造好,且第一集合20c中的字符串只要构造好后续就不用更新;第二集合20d是根据检测字符串实时生成的,第二集合中的字符串是不断变化的。对两种检测对象来说,均是通过比较对应集合中是否存在相似的字符串,但对检测全局变量类型的字符串来说,还需进一地比较在字符序列中的位置等才能确定是否拼写错误,对检测隐式函数类型的字符串来说,只需要在第二集合中比较是否存在相似的字符串就可以直接确定是否拼写错误。

进一步地,为了向用户提示那些程序代码中拼写错误的字符串可能的正确拼写方式,还可以将那些在检测过程中,被判定为与检测字符串相似的字符串提取出来作为参考正确字符串,并同时显示拼写错误的字符串以及对应的参考正确字符串,用于提示用户,如图2中的集合20e所示,拼写错误的字符串“abdce”对应的参考正确字符串为:abcde;拼写错误的字符串“ondestroy”对应的参考正确字符串为:ondestroy;拼写错误的字符串“sendmessege”对应的参考正确字符串为:sendmessage,这样可以方便用户快速地对拼写错误的字符进行修改。

自动化地检测出程序代码中存在拼写错误的全局变量,以及自动化地检测出程序代码存在拼写错误的隐式函数的函数名,避免由人工手动检测整个程序代码,可以节省检测程序代码的耗时,进而提高检测的效率。

其中,检测全局变量类型的字符串、检测隐式函数类型的字符串的具体过程可以参见以下图3至图5所对应的实施例。

进一步地,请参见图3,是本发明实施例提供的一种程序处理方法的流程示意图。如图3所示,所述程序处理方法可以包括:

步骤s101,获取目标代码文本信息,在所述目标代码文本信息中获取检测字符串。

具体的,获取待检测的程序代码文本信息(如上述实施例图2实施例中的程序代码20a),称为目标代码文本信息。为了验证目标代码文本信息中属于全局变量类型的字符串和属于隐式函数类型的字符串是否存在拼写错误,首先将上述两种类型的字符串从目标代码文本信息中识别出来,作为检测字符串(如上述实施例图2实施例中的检测字符串集合20b中的各个检测字符串)。识别的具体过程是:按照预设的目标顺序,即是从上至下,从左到右的遍历目标代码文本信息中的所有字符,将遍历到的所有字符组合而成的字符序列称为目标字符序列,需要说明的是,遍历操作的对象是目标代码文本信息中的字符,对目标代码文本中的空格、注释、换行符等不执行遍历操作,即是目标字符序列中不包括空格、注释、换行符等。按照构词规则将目标字符序列分解为一系列的单词符号(单词符号可以用英文token表示),将分解出来的每个单词符号分别称为参考字符串,并检测每个参考字符串的功能类型,功能类型包括:变量类型(变量类型还可以细分为全局变量类型和参考变量类型)、关键字类型、指示符类型、运算符类型、常量类型、隐式函数类型等,每个参考字符串都存在与之对应的功能类型,可以看出来,每个参考字符串都是具有独立意义的最小单位。

需要说明的是,在程序代码中函数声明中的函数名,或者采用显式调用方式调用函数时所对应的函数名的功能类型均为变量类型;只有当采用隐式调用方式调用函数时,该函数的函数名所对应的功能类型才是隐式函数类型。其中显式调用是直接将函数名作为一条语句进行调用,隐式调用是将函数名作为一个常量字符串进行调用。

识别完每个参考字符串对应的功能类型后,在多个参考字符串中,将功能类型为全局变量类型的参考字符串作为检测字符串,且将功能类型为隐式函数类型的参考字符串也作为检测字符串。

由于待检测的对象的功能类型分为两种(属于全局变量类型和属于隐式函数类型),下述步骤s102-步骤s103是对应于两种对象执行不同的检测方式的具体说明,其中步骤s102是对属于全局变量类型的一个检测字符串进行说明;步骤s103是对属于隐式函数类型的一个检测字符串进行说明。为了保证检测字符串的连续性,可以按照检测字符串在目标字符序列中的前后顺序,依次检测每个检测字符串的拼写类型。

步骤s102,若所述检测字符串属于全局变量类型,则根据第一集合识别所述检测字符串的拼写类型;所述第一集合包括所述目标代码文本信息中所有属于变量类型的第一字符串。

具体的,当检测字符串的功能类型是全局变量类型时,根据第一集合(如上述实施例图2实施例中的第一集合20c)识别该检测字符串的拼写类型,拼写类型分为拼写正确类型和拼写错误类型,如果检测字符串的拼写类型为拼写正确类型,那么可以确定该检测字符串拼写正确;如果检测字符串的拼写类型为拼写错误类型,那么可以确定该检测字符串拼写存在错误。若检测字符串的拼写类型为拼写错误类型,后续可以向用户发送提示消息,用于提示用户该检测字符串是错误字符串。其中,第一集合是根据目标代码文本信息提前构造好的,构造的过程是:在划分出来的所有参考字符串中,将功能类型为变量类型的字符串作为第一字符串,并将确定的第一字符串组合为第一集合,即第一集合中的字符串称为第一字符串,且若一个字符串属于全局变量类型,那么它必然也属于变量类型,因此可以推断出那些属于全局变量的检测字符串必然也存在于第一集合中。

根据第一集合识别检测字符串是否拼写错误的过程是:查找第一集合中是否存在第一字符串和检测字符串相似,如果存在的话,那么进一步比较查找出来的第一字符串和检测字符串在目标字符序列中的位置,若查找出来的第一字符串相比检测字符串在目标字符序列中的位置更靠前,且查找出来的第一字符串已经确定是拼写正确的字符串,那么可以确定检测字符串的拼写类型为拼写错误类型,即确定检测字符串拼写错误;相反,只要不满足上述任一个条件,那么都可以判定检测字符串的拼写类型是拼写正确类型,即确定检测字符串拼写正确。上述可知,只要第一集合构建完成,那么后续不需要对第一集合中的第一字符串进行删除或者是新增。

步骤s103,若所述检测字符串属于隐式函数类型,则将与所述检测字符串对应的函数所在的目标子类包含的类函数名,以及与所述目标子类对应的目标父类包含的类函数名均作为第二字符串,将所述第二字符串添加至第二集合,并根据所述第二集合识别所述检测字符串的拼写类型。

具体的,当检测字符串的功能类型是隐式函数类型时,将检测字符串对应函数所在的类称为目标子类,将目标子类对应的父类称为目标父类。将目标子类所包含的类函数的函数名作为第二字符串,进目标父类所包含的类函数的函数名也作为第二字符串,并将上述第二字符串均添加至第二集合(如上述实施例图2实施例中的第二集合20d)中。然后根据第二集合识别检测字符串是否存在拼写错误。

根据第二集合识别检测字符串是否拼写错误的过程是:查找第二集合中是否存在字符串和检测字符串相似,如果存在的话,那么可以确定检测字符串的拼写类型为拼写错误类型,即确定检测字符串拼写错误;相反,只要第二集合中不存在字符串和检测字符串相似,那么可以判定检测字符串的拼写类型是拼写正确类型,即确定检测字符串拼写正确。上述可知,第二集合中的字符串是在不断更新的,只要检测字符串属于隐式函数类型,那么检测该检测字符串时,就要向第二集合中实时地添加该检测字符串对应函数所在目标子类和目标父类的类函数名。

进一步地,请参见图4,是本发明实施例提供的一种确定检测字符串类型的流程示意图,当检测字符串属于全局变量类型时,判断检测字符串的拼写类型为拼写错误类型的的方式包括三种,其中,步骤s201-步骤s203、步骤s208为一种判断方式;步骤s204-步骤s205、步骤s208为一种判断方式;步骤s206-步骤s208为另一种判断方式。

步骤s201,从第一字符串中选择两个相邻的字符,作为第一字符和第二字符。

具体的,下面以一个第一字符串进行说明,如何判断第一字符串和检测字符串是否满足第一相似条件。从第一字符串中任意选择两个相邻的字符,分别作为第一字符和第二字符

步骤s202,交换所述第一字符和所述第二字符在所述第一字符串中的位置。

具体的,交换第一字符和第二字符在第一字符串中的位置。

步骤s203,若交换位置后得到的字符串和所述检测字符串相同、所述第一字符串在所述目标字符序列中位置坐标小于所述检测字符串在所述目标字符序列中的位置坐标、且所述第一字符串的拼写类型为拼写正确类型。

具体的,若交换位置后得到的字符串和检测字符串相同、第一字符串在目标字符序列中的位置坐标小于检测字符串在目标字符序列中的位置坐标(即第一字符串在前,检测字符串在后)、且第一字符串的拼写类型为拼写正确类型,则确定所述第一字符串与所述检测字符串满足所述第一相似条件,那么可以判定该第一字符串和检测字符串满足第一相似条件。

上述步骤描述的是一个第一字符和一个第二字符,对一个第一字符串来说可能存在多个对应的第一字符和第二字符,对每个第一字符和第二字符都可以采用上述方式用于判断该第一字符串和检测字符串是否满足第一相似条件。相反地,只要上述3个条件中有一个条件不满足,那么该第一字符串和检测字符串就不满足第一相似条件。即是若第一字符串的所有第一字符和第二字符交换位置后得到的字符串和检测字符串都相同,那么该第一字符串和检测字符串就不满足第一相似条件;或者只要第一字符串在目标字符序列中的位置坐标大于或者等于检测字符串在目标字符序列中的位置坐标,那么该第一字符串和检测字符串就不满足第一相似条件;或者只要第一字符串的拼写类型为拼写错误类型,那么该第一字符串和检测字符串就不满足第一相似条件。

需要说明的,为了可以连续判断检测字符串的拼写类型,可以按照检测字符在目标字符序列中的前后顺序,依次检测每个检测字符串的拼写类型。在对目标代码文本信息中的变量第一次声明和定义时,该变量的拼写方式一定是正确的。在上述判断条件中第一字符串的拼写类型必须是拼写正确类型的原因是:由于判断检测字符串的拼写类型是以第一字符串为参考对象,若参考对象都不具备可信度,那么检测结果也不具有可信度,即不能判断检测字符串的拼写类型究竟是拼写正确类型还是拼写错误类型。

举例来说,第一字符串为:ondestroy,检测字符串为:ondestory,且第一字符串“ondestroy”在目标字符序列中的位置坐标要小于检测字符串“ondestory”在目标字符序列中的位置坐标,且第一字符串“ondestroy”的拼写类型为拼写正确类型。将第一字符串“ondestroy”中的字符“r”和字符“o”分别作为第一字符和第二字符。由于交换第一字符和第二字符后所得到的字符串和检测字符串“ondestory”相同,且同时满足第一字符串“ondestroy”在目标字符序列中的位置坐标要小于检测字符串“ondestory”在目标字符序列中的位置坐标、第一字符串“ondestroy”的拼写类型为拼写正确类型,那么就可以确定第一字符串“ondestroy”和检测字符串“ondestory”满足第一相似条件。进而可以确定检测字符串“ondestory”为拼写错误类型。

步骤s204,更新第一字符串;更新后的第一字符串是在所述第一字符串中删除字符后得到的字符串,或是在所述第一字符串中新增字符后得到的字符串;

具体的,下面仍以一个第一字符串进行说明,如何判断第一字符串和检测字符串是否满足第一相似条件。在第一字符串中的任意位置添加字符,或者在第一字符串中的任意位置删除字符,上述操作称为更新第一字符串。其中,添加字符或者删除字符的数量可以是一个也可以是多个。

步骤s205,若更新后的第一字符串和所述检测字符串相同、所述第一字符串在所述目标字符序列中位置坐标小于所述检测字符串在所述目标字符序列中的位置坐标、且所述第一字符串的拼写类型为拼写正确类型,则确定所述第一字符串与所述检测字符串满足所述第一相似条件。

具体的,若更新后的第一字符串和检测字符串相同、第一字符串在目标字符序列中的位置坐标小于检测字符串在目标字符序列中的位置坐标(即第一字符串在前,检测字符串在后)、且第一字符串的拼写类型为拼写正确类型,那么可以判定该第一字符串和检测字符串满足第一相似条件。相反地,只要上述3个条件中有一个条件不满足,那么该第一字符串和检测字符串就不满足第一相似条件。即是在第一字符串中的任意位置添加字符后或删除字符后和检测字符串都不相同,那么该第一字符串和检测字符串就不满足第一相似条件;或者只要第一字符串在目标字符序列中的位置坐标大于或者等于检测字符串在目标字符序列中的位置坐标,那么该第一字符串和检测字符串就不满足第一相似条件;或者只要第一字符串的拼写类型为拼写错误类型,那么该第一字符串和检测字符串就不满足第一相似条件,需要说明的,为了可以连续判断检测字符串的拼写类型,可以按照检测字符在目标字符序列中的前后顺序,依次检测每个检测字符串的拼写类型。

举例来说,第一字符串为:laterupdate,检测字符串为:lateupdate,且第一字符串“laterupdate”在目标字符序列中的位置坐标要小于检测字符串“lateupdate”在目标字符序列中的位置坐标,且第一字符串“laterupdate”的拼写类型为拼写正确类型。将第一字符串“laterupdate”中的字符“r”删除,可以得到字符串“lateupdate”。由于删除后所得到的字符串“lateupdate”和检测字符串“lateupdate”相同,且同时满足第一字符串“laterupdate”在目标字符序列中的位置坐标要小于检测字符串“lateupdate”在目标字符序列中的位置坐标、第一字符串“laterupdate”的拼写类型为拼写正确类型,那么就可以确定第一字符串“laterupdate”和检测字符串“lateupdate”满足第一相似条件。进而可以确定检测字符串“lateupdate”为拼写错误类型。

步骤s206,在所述第一字符串中选择第一字符,确定所述第一字符在所述第一字符串中的目标位置信息,并将在所述检测字符串中处于所述目标位置信息的字符确定为第二字符;

具体的,下面还以一个第一字符串进行说明,如何判断第一字符串和检测字符串是否满足第一相似条件。在第一字符串中任意选择一个字符,作为第一字符,并确定该第一字符在第一字符串中的位置信息,称为目标位置信息。将在检测字符串中,处于目标位置信息的字符作为第二字符。

步骤s207,若删除所述第一字符串中的第一字符后所得到的字符串,和删除所述检测字符串中的第二字符后所得到的字符串相同、所述第一字符串在所述目标字符序列中位置坐标小于所述检测字符串在所述目标字符序列中的位置坐标、且所述第一字符串的拼写类型为拼写正确类型,则确定所述第一字符串与所述检测字符串满足所述第一相似条件。

具体的,若删除第一字符在第一字符串后得到的字符串,与删第二字符串在第二字符串后得到的字符串相同(即若删除处于同一个位置的字符后,第一字符串和检测字符串相同)、且第一字符串的拼写类型为拼写正确类型,那么可以判定该第一字符串和检测字符串满足第一相似条件。上述描述的是一个第一字符和一个第二字符,对一个第一字符串来说可能存在多个对应的第一字符,对每个第一字符都可以采用上述方式用于判断该第一字符串和检测字符串是否满足第一相似条件。相反地,只要上述3个条件中有一个条件不满足,即如果所有第一字符和与之对应的第二字符分别从第一字符串和检测字符串中删除后,所得到两个字符串均不相同,那么该第一字符串和检测字符串就不满足第一相似条件;或者只要第一字符串在目标字符序列中的位置坐标大于或者等于检测字符串在目标字符序列中的位置坐标,那么该第一字符串和检测字符串就不满足第一相似条件;或者只要第一字符串的拼写类型为拼写错误类型,那么该第一字符串和检测字符串就不满足第一相似条件。

举例来说,第一字符串为:onpreupdate,检测字符串为:onrreupdate,且第一字符串“onpreupdate”在目标字符序列中的位置坐标要小于检测字符串“onrreupdate”在目标字符序列中的位置坐标,且第一字符串“onpreupdate”的拼写类型为拼写正确类型。将第一字符串“onpreupdate”中的字符“p”作为第一字符串,且该字符位于第一字符串的第三位;将检测字符串中位于第三位的字符“r”作为第二字符。在第一字符串“onpreupdate”中将第一字符“p”删除后得到字符串“onreupdate”;在第二字符串“onrreupdate”中将第二字符串“r”删除后得到字符串“onreupdate”,由于上述删除后得到的两个字符串相同、且同时满足第一字符串“onpreupdate”在目标字符序列中的位置坐标要小于检测字符串“onrreupdate”在目标字符序列中的位置坐标、第一字符串“onpreupdate”的拼写类型为拼写正确类型,那么就可以确定第一字符串“onpreupdate”和检测字符串“onrreupdate”满足第一相似条件,进而可以确定检测字符串“onrreupdate”为拼写错误类型。

上述罗列了三种方式判断第一集合中的任意一个第一字符串和检测字符串是否满足第一相似条件,只要采用其中的任意一种方式可以判断出一个第一字符串和检测字符串满足第一相似条件,那么就可以确定第一集合中存在第一字符串和检测字符串满足第一相似条件。

步骤s208,若在所述第一集合中存在第一字符串与所述检测字符串满足第一相似条件,则将所述检测字符串的拼写类型确定为所述拼写错误类型。

具体的,若采用上述三种判断方式中的任意一种可以确定第一集合中存在第一字符串和检测字符串满足第一相似条件,那么可以将检测字符串的拼写类型确定为拼写错误类型,即确定检测字符串拼写错误。

进一步地,若在第一集合中存在至少一个第一字符串和检测字符串满足第一相似条件,则将那些满足第一相似条件的第一字符串提取出来,作为目标字符串。若目标字符串的数量大于预设的目标数量阈值,且目标字符串在第一集合中的的位置相邻,则确定检测字符串的拼写类型为拼写错误类型,需要说明的是,此处第一集合中的各个第一字符串是遵循第一字符串在目标字符序列中的前后位置排列的。这种进一步检测方式是根据与检测字符串满足第一相似条件的第一字符串的上下文信息,可以提高判断结果的准确性。

可选的,若采用上述三种方式均没有判断出第一集合中存在第一字符串和检测字符串满足第一相似条件,即第一集合中不存在第一字符串和检测字符串满足第一相似条件,那么说明检测字符串验证通过,即确定检测字符串的拼写类型为拼写正确类型。

进一步地,请参见图5,是本发明实施例提供的另一种确定检测字符串类型的流程示意图,当检测字符串属于隐式函数类型时,判断检测字符串的拼写类型为拼写错误类型的的方式包括三种,其中,步骤s301-步骤s303、步骤s308为一种判断方式;步骤s304-步骤s305、步骤s308为一种判断方式;步骤s306-步骤s308为另一种判断方式。

步骤s301,从所述第二字符串中选择两个相邻的字符,作为第一字符和第二字符。

具体的,下面以一个第二字符串进行说明,如何判断第二字符串和检测字符串是否满足第二相似条件。从第二字符串中任意选择两个相邻的字符,分别作为第一字符和第二字符。

步骤s302,交换所述第一字符和所述第二字符在所述第二字符串中的位置

具体的,交换第一字符和第二字符在第二字符串中的位置。

步骤s303,若交换位置后得到的字符串和所述检测字符串相同,则确定所述第二字符串与所述检测字符串满足所述第二相似条件。

具体的,若交换位置后得到的字符串和检测字符串相同,那么可以判定该第二字符串和检测字符串满足第二相似条件。上述描述的是一个第一字符和一个第二字符,对一个第二字符串来说可能存在多个对应个第一字符和第二字符,对每个第一字符和第二字符都可以采用上述方式用于判断该第二字符串和检测字符串是否满足第二相似条件。相反地,若第二字符串的所有的第一字符和与之对应的第二字符交换位置后得到的字符串和检测字符均不相同,那么该第二字符串和检测字符串就不满足第二相似条件。

步骤s304,更新第二字符串;更新后的第二字符串是在所述第二字符串中删除字符后得到的字符串,或是在所述第二字符串中新增字符后得到的字符串。

具体的,下面仍以一个第二字符串进行说明,如何判断第二字符串和检测字符串是否满足第二相似条件。在第二字符串中的任意位置添加字符,或者在第二字符串中的任意位置删除字符,上述操作称为更新第二字符串。其中,添加字符或者删除字符的数量可以是一个也可以是多个。

步骤s305,若更新后的第二字符串和所述检测字符串相同,则确定所述第二字符串与所述检测字符串满足所述第二相似条件。

具体的,若更新后的第二字符串和检测字符串相同,那么可以判定该第二字符串和检测字符串满足第二相似条件。相反地,在第二字符串中的任意位置添加字符后或删除字符后和检测字符串都不相同,那么该第二字符串和检测字符串就不满足第二相似条件。

步骤s306,在所述第二字符串中选择第一字符,确定所述第一字符在所述第二字符串中的目标位置信息,并将在所述检测字符串中处于所述目标位置信息的字符确定为第二字符。

具体的,下面还以一个第二字符串进行说明,如何判断第二字符串和检测字符串是否满足第二相似条件。在第二字符串中任意选择一个字符,作为第一字符,并确定该第一字符在第二字符串中的位置信息,称为目标位置信息。将在检测字符串中,处于目标位置信息的字符作为第二字符。

步骤s307,若删除所述第一字符串中的第一字符后所得到的字符串,和删除所述检测字符串中的第二字符后所得到的字符串相同,则确定所述第二字符串与所述检测字符串满足所述第二相似条件。

具体的,若删除第一字符在第二字符串后得到的字符串,与删第二字符串在第二字符串后得到的字符串相同(即若删除处于同一个位置的字符后,第二字符串和检测字符串相同)、且第二字符串的拼写类型为拼写正确类型,那么可以判定该第二字符串和检测字符串满足第二相似条件。上述描述的是一个第一字符和一个第二字符,对一个第二字符串来说可能存在多个对应个第一字符,对每个第一字符都可以采用上述方式用于判断该第二字符串和检测字符串是否满足第一相似条件。相反地,如果所有第一字符和与之对应的第二字符分别从第二字符串和检测字符串中删除后,所得到两个字符串均不相同,那么该第二字符串和检测字符串就不满足第二相似条件。

上述可知,第一相似条件的判断依据比第二相似条件的判断依据要更加苛刻,这是因为对全局变量类型的字符串来说,在目标代码文本信息中可能反复出现同一个拼写错误的字符串,或者是开始拼写错误,但后面又拼写正确的字符串,就会出现多种情况,导致参考对象(第一集合中的第一字符串)存在多种情况,因此需要更多地条件来进行判断,且检测顺序也需要进行限制;但对隐式函数类型的字符串来说,由于参考对象主要是目标代码文本之外的函数的函数名,因此可以确定用于对比的参考对象(第二集合中的第二字符串)必然是正确可信的,因此判断条件相对松弛,且检测顺序也不必进行限制。

上述也罗列了三种方式判断第二集合中的任意一个第二字符串和检测字符串是否满足第二相似条件,只要采用其中的任意一种方式可以判断出一个第二字符串和检测字符串满足第二相似条件,那么就可以确定第二集合中存在第二字符串和检测字符串满足第二相似条件。

步骤s308,若在所述第二集合中存在第二字符串与所述检测字符串满足第二相似条件,则将所述检测字符串的拼写类型确定为所述拼写错误类型。

具体的,若采用上述三种判断方式中的任意一种可以确定第二集合中存在第二字符串和检测字符串满足第二相似条件,那么可以将检测字符串的拼写类型确定为拼写错误类型,即确定检测字符串拼写错误。

可选的,若采用上述三种方式均没有判断出第二集合中存在第二字符串和检测字符串满足第二相似条件,即第二集合中不存在第二字符串和检测字符串满足第二相似条件,那么说明检测字符串验证通过,即确定检测字符串的拼写类型为拼写正确类型。

上述可知,自动化地检测出程序代码中存在拼写错误的全局变量,以及自动化地检测出程序代码存在拼写错误的隐式函数的函数名,避免由人工手动检测整个程序代码,可以节省检测程序代码的耗时,进而提高检测的效率。

进一步的,请参见图6,是本发明实施例提供的一种程序处理装置的结构示意图。如图6所示,程序处理装置1可以包括:获取模块11、识别模块12、第一检测模块13、添加模块14、第二检测模块15。

获取模块11,用于获取目标代码文本信息。

具体的,获取模块11获取待检测的程序代码文本信息(如上述实施例图2实施例中的程序代码20a),称为目标代码文本信息。

识别模块12,用于在所述目标代码文本信息中获取检测字符串。

具体的,为了验证目标代码文本信息中属于全局变量类型的字符串和属于隐式函数类型的字符串是否存在拼写错误,识别模块12首先将上述两种类型的字符串从目标代码文本信息中识别出来,作为检测字符串。识别模块12识别的具体过程是:按照预设的目标顺序,即是从上至下,从左到右的遍历目标代码文本信息中的所有字符,将遍历到的所有字符组合而成的字符序列称为目标字符序列,需要说明的是,遍历操作的对象是目标代码文本信息中的字符,对目标代码文本中的空格、注释、换行符等不执行遍历操作,即是目标字符序列中不包括空格、注释、换行符等。识别模块12按照构词规则将目标字符序列分解为一系列的单词符号(单词符号可以用英文token表示),将分解出来的每个单词符号分别称为参考字符串,识别模块12并检测每个参考字符串的功能类型,功能类型包括:变量类型(变量类型还可以细分为全局变量类型和参考变量类型)、关键字类型、指示符类型、运算符类型、常量类型、隐式函数类型等,每个参考字符串都存在与之对应的功能类型,可以看出来,每个参考字符串都是具有独立意义的最小单位。

识别模块12识别完每个参考字符串对应的功能类型后,在多个参考字符串中,识别模块12将功能类型为全局变量类型的参考字符串作为检测字符串,且将功能类型为隐式函数类型的参考字符串也作为检测字符串。

第一检测模块13,用于若所述检测字符串属于全局变量类型,则根据第一集合识别所述检测字符串的拼写类型;所述第一集合包括所述目标代码文本信息中所有属于变量类型的第一字符串。

具体的,当检测字符串的功能类型是全局变量类型时,第一检测模块13根据第一集合识别该检测字符串的拼写类型,拼写类型分为拼写正确类型和拼写错误类型,如果检测字符串的拼写类型为拼写正确类型,那么可以确定该检测字符串拼写正确;如果检测字符串的拼写类型为拼写错误类型,那么可以确定该检测字符串拼写存在错误。若检测字符串的拼写类型为拼写错误类型,后续可以向用户发送提示消息,用于提示用户该检测字符串是错误字符串。其中,第一集合是根据目标代码文本信息提前构造好的,构造的过程是:在划分出来的所有参考字符串中,第一检测模块13将功能类型为变量类型的字符串作为第一字符串,并将确定的第一字符串组合为第一集合,即第一集合中的字符串称为第一字符串,且若一个字符串属于全局变量类型,那么它必然也属于变量类型,因此可以推断出那些属于全局变量的检测字符串必然也存在于第一集合中。

第一检测模块13根据第一集合识别检测字符串是否拼写错误的过程是:第一检测模块13查找第一集合中是否存在第一字符串和检测字符串相似,如果存在的话,那么进一步比较查找出来的第一字符串和检测字符串在目标字符序列中的位置,若查找出来的第一字符串相比检测字符串在目标字符序列中的位置更靠前,且查找出来的第一字符串已经确定是拼写正确的字符串,那么可以确定检测字符串的拼写类型为拼写错误类型,即确定检测字符串拼写错误;相反,只要不满足上述任一个条件,那么第一检测模块13都可以判定检测字符串的拼写类型是拼写正确类型,即确定检测字符串拼写正确。上述可知,只要第一集合构建完成,那么后续不需要对第一集合中的第一字符串进行删除或者是新增。

添加模块14,用于若所述检测字符串属于隐式函数类型,则将与所述检测字符串对应的函数所在的目标子类包含的类函数名,以及与所述目标子类对应的目标父类包含的类函数名均作为第二字符串,将所述第二字符串添加至第二集合;

第二检测模块15,用于根据所述第二集合识别所述检测字符串的拼写类型;

所述拼写校验类型包括拼写正确类型和拼写错误类型。

其中,获取模块11、识别模块12、第一检测模块13、添加模块14、第二检测模块15的具体功能实现方式可以参见上述图3对应实施例中的步骤s101-步骤s103,这里不再进行赘述。

请参见图6,识别模块12可以包括:遍历单元121、划分单元122。

遍历单元121,用于按照目标顺序遍历与所述目标代码文本信息对应的目标字符序列;

划分单元122,用于根据构词规则,将所述目标字符序列划分为多个参考字符串,并检测每个参考字符串的功能类型;

所述划分单元122,还用于在所述多个参考字符串中,将功能类型为全局变量类型的参考字符串,以及将功能类型为隐式函数类型的参考字符串均确定为所述检测字符串。

其中,遍历单元121、划分单元122的具体功能实现方式可以参见上述图3对应实施例中的步骤s101,这里不再进行赘述。

请参见图6,第一检测模块13可以包括:第一确定单元131、第二确定单元132。

第一确定单元131,用于若在所述第一集合中存在第一字符串与所述检测字符串满足第一相似条件,则将所述检测字符串的拼写类型确定为所述拼写错误类型;

第二确定单元132,用于若在所述第一集合中不存在第一字符串与所述检测字符串满足所述第一相似条件,则将所述检测字符串的拼写类型确定为所述拼写正确类型。

其中,第一确定单元131、第二确定单元132的具体功能实现方式可以参见上述图3对应实施例中的步骤s102,这里不再进行赘述。

请参见图6,程序处理装置1可以包括:获取模块11、识别模块12、第一检测模块13、添加模块14、第二检测模块15;还可以包括:第一交换模块16。

第一交换模块16,用于从第一字符串中选择两个相邻的字符,作为第一字符和第二字符;

所述第一交换模块16,还用于交换所述第一字符和所述第二字符在所述第一字符串中的位置;

所述第一交换模块16,还用于若交换位置后得到的字符串和所述检测字符串相同、所述第一字符串在所述目标字符序列中位置坐标小于所述检测字符串在所述目标字符序列中的位置坐标、且所述第一字符串的拼写类型为拼写正确类型,则确定所述第一字符串与所述检测字符串满足所述第一相似条件。

其中,第一交换模块16的具体功能实现方式可以参见上述图4对应实施例中的步骤s201-步骤s203,这里不再进行赘述。

请参见图6,程序处理装置1可以包括:获取模块11、识别模块12、第一检测模块13、添加模块14、第二检测模块15、第一交换模块16;还可以包括:第一更新模块17。

第一更新模块17,用于更新第一字符串;更新后的第一字符串是在所述第一字符串中删除字符后得到的字符串,或是在所述第一字符串中新增字符后得到的字符串;

所述第一更新模块17,还用于若更新后的第一字符串和所述检测字符串相同、所述第一字符串在所述目标字符序列中位置坐标小于所述检测字符串在所述目标字符序列中的位置坐标、且所述第一字符串的拼写类型为拼写正确类型,则确定所述第一字符串与所述检测字符串满足所述第一相似条件。

其中,第一更新模块17的具体功能实现方式可以参见上述图4对应实施例中的步骤ss204-步骤s205,这里不再进行赘述。

请参见图6,程序处理装置1可以包括:获取模块11、识别模块12、第一检测模块13、添加模块14、第二检测模块15、第一交换模块16、第一更新模块17;还可以包括:第一选择模块18。

第一选择模块18,用于在所述第一字符串中选择第一字符,确定所述第一字符在所述第一字符串中的目标位置信息,并将在所述检测字符串中处于所述目标位置信息的字符确定为第二字符;

所述第一选择模块18,还用于若删除所述第一字符串中的第一字符后所得到的字符串,和删除所述检测字符串中的第二字符后所得到的字符串相同、所述第一字符串在所述目标字符序列中位置坐标小于所述检测字符串在所述目标字符序列中的位置坐标、且所述第一字符串的拼写类型为拼写正确类型,则确定所述第一字符串与所述检测字符串满足所述第一相似条件。

其中,第一选择模块18的具体功能实现方式可以参见上述图4对应实施例中的步骤ss206-步骤s207,这里不再进行赘述。

请参见图6,第二确定单元132可以包括:第一确定子单元1321、第二确定子单元1322。

第一确定子单元1321,用于在所述第一集合,将与所述检测字符串满足所述第一相似条件的第一字符串,确定为目标字符串;

第二确定子单元1322,用于若所述目标字符串的数量大于目标数量阈值,且所述目标字符串在所述第一集合中相邻,则将所述检测字符串的拼写类型确定为所述拼写错误类型。

其中,第一确定子单元1321、第二确定子单元1322的具体功能实现方式可以参见上述图4对应实施例中的步骤s208,这里不再进行赘述。

请参见图6,第二检测模块15可以包括:第三确定单元151、第四确定单元152。

第三确定单元151,用于若在所述第二集合中存在第二字符串与所述检测字符串满足第二相似条件,则将所述检测字符串的拼写类型确定为所述拼写错误类型;

第四确定单元152,用于若在所述第二集合中不存在第二字符串与所述检测字符串满足所述第二相似条件,则将所述检测字符串的拼写类型确定为所述拼写正确类型。

其中,第三确定单元151、第四确定单元152的具体功能实现方式可以参见上述图3对应实施例中的步骤s103,这里不再进行赘述。

请参见图6,程序处理装置1可以包括:获取模块11、识别模块12、第一检测模块13、添加模块14、第二检测模块15、第一交换模块16、第一更新模块17、第一选择模块18;还可以包括:第二交换模块19。

第二交换模块19,用于从所述第二字符串中选择两个相邻的字符,作为第一字符和第二字符;

所述第二交换模块19,还用于交换所述第一字符和所述第二字符在所述第二字符串中的位置;

所述第二交换模块19,还用于若交换位置后得到的字符串和所述检测字符串相同,则确定所述第二字符串与所述检测字符串满足所述第二相似条件。

其中,第二交换模块19的具体功能实现方式可以参见上述图5对应实施例中的步骤s301-步骤s303,这里不再进行赘述。

请参见图6,程序处理装置1可以包括:获取模块11、识别模块12、第一检测模块13、添加模块14、第二检测模块15、第一交换模块16、第一更新模块17、第一选择模块18、第二交换模块19;还可以包括:第二更新模块20。

第二更新模块20,用于更新第二字符串;更新后的第二字符串是在所述第二字符串中删除字符后得到的字符串,或是在所述第二字符串中新增字符后得到的字符串;

所述第二更新模块20,还用于若更新后的第二字符串和所述检测字符串相同,则确定所述第二字符串与所述检测字符串满足所述第二相似条件。

其中,第二更新模块20的具体功能实现方式可以参见上述图5对应实施例中的步骤s304-步骤s305,这里不再进行赘述。

请参见图6,程序处理装置1可以包括:获取模块11、识别模块12、第一检测模块13、添加模块14、第二检测模块15、第一交换模块16、第一更新模块17、第一选择模块18、第二交换模块19、第二更新模块20;还可以包括:第二选择模块21。

第二选择模块21,用于在所述第二字符串中选择第一字符,确定所述第一字符在所述第二字符串中的目标位置信息,并将在所述检测字符串中处于所述目标位置信息的字符确定为第二字符;

所述第二选择模块21,还用于若删除所述第一字符串中的第一字符后所得到的字符串,和删除所述检测字符串中的第二字符后所得到的字符串相同,则确定所述第二字符串与所述检测字符串满足所述第二相似条件。

其中,第二选择模块21的具体功能实现方式可以参见上述图5对应实施例中的步骤s306-步骤s307,这里不再进行赘述。

上述可知,自动化地检测出程序代码中存在拼写错误的全局变量,以及自动化地检测出程序代码存在拼写错误的隐式函数的函数名,避免由人工手动检测整个程序代码,可以节省检测程序代码的耗时,进而提高检测的效率。

进一步地,请参见图7,是本发明实施例提供的一种电子设备的结构示意图。如图7所示,上述图7中的程序处理装置1可以应用于所述电子设备1000,所述电子设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,所述电子设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(display)、键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图7所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。

在图7所示的电子设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:

获取目标代码文本信息,在所述目标代码文本信息中获取检测字符串;

若所述检测字符串属于全局变量类型,则根据第一集合识别所述检测字符串的拼写类型;所述第一集合包括所述目标代码文本信息中所有属于变量类型的第一字符串;

若所述检测字符串属于隐式函数类型,则将与所述检测字符串对应的函数所在的目标子类包含的类函数名,以及与所述目标子类对应的目标父类包含的类函数名均作为第二字符串,将所述第二字符串添加至第二集合,并根据所述第二集合识别所述检测字符串的拼写类型;

所述拼写校验类型包括拼写正确类型和拼写错误类型。

在一个实施例中,所述处理器1001在执行在所述目标代码文本信息中获取检测字符串时,具体执行以下步骤:

按照目标顺序遍历与所述目标代码文本信息对应的目标字符序列;

根据构词规则,将所述目标字符序列划分为多个参考字符串,并检测每个参考字符串的功能类型;

在所述多个参考字符串中,将功能类型为全局变量类型的参考字符串,以及将功能类型为隐式函数类型的参考字符串均确定为所述检测字符串。

在一个实施例中,所述处理器1001在执行根据第一集合识别所述检测字符串的拼写类型时,具体执行以下步骤:

若在所述第一集合中存在第一字符串与所述检测字符串满足第一相似条件,则将所述检测字符串的拼写类型确定为所述拼写错误类型;

若在所述第一集合中不存在第一字符串与所述检测字符串满足所述第一相似条件,则将所述检测字符串的拼写类型确定为所述拼写正确类型。

在一个实施例中,所述处理器1001还执行以下步骤:

从第一字符串中选择两个相邻的字符,作为第一字符和第二字符;

交换所述第一字符和所述第二字符在所述第一字符串中的位置;

若交换位置后得到的字符串和所述检测字符串相同、所述第一字符串在所述目标字符序列中位置坐标小于所述检测字符串在所述目标字符序列中的位置坐标、且所述第一字符串的拼写类型为拼写正确类型,则确定所述第一字符串与所述检测字符串满足所述第一相似条件。

在一个实施例中,所述处理器1001还执行以下步骤:

更新第一字符串;更新后的第一字符串是在所述第一字符串中删除字符后得到的字符串,或是在所述第一字符串中新增字符后得到的字符串;

若更新后的第一字符串和所述检测字符串相同、所述第一字符串在所述目标字符序列中位置坐标小于所述检测字符串在所述目标字符序列中的位置坐标、且所述第一字符串的拼写类型为拼写正确类型,则确定所述第一字符串与所述检测字符串满足所述第一相似条件。

在一个实施例中,所述处理器1001还执行以下步骤:

在所述第一字符串中选择第一字符,确定所述第一字符在所述第一字符串中的目标位置信息,并将在所述检测字符串中处于所述目标位置信息的字符确定为第二字符;

若删除所述第一字符串中的第一字符后所得到的字符串,和删除所述检测字符串中的第二字符后所得到的字符串相同、所述第一字符串在所述目标字符序列中位置坐标小于所述检测字符串在所述目标字符序列中的位置坐标、且所述第一字符串的拼写类型为拼写正确类型,则确定所述第一字符串与所述检测字符串满足所述第一相似条件。

在一个实施例中,所述处理器1001在执行将所述检测字符串的拼写类型确定为所述拼写错误类型时,具体执行以下步骤:

在所述第一集合,将与所述检测字符串满足所述第一相似条件的第一字符串,确定为目标字符串;

若所述目标字符串的数量大于目标数量阈值,且所述目标字符串在所述第一集合中相邻,则将所述检测字符串的拼写类型确定为所述拼写错误类型。

在一个实施例中,所述处理器1001在执行根据所述第二集合识别所述检测字符串的拼写类型时,具体执行以下步骤:

若在所述第二集合中存在第二字符串与所述检测字符串满足第二相似条件,则将所述检测字符串的拼写类型确定为所述拼写错误类型;

若在所述第二集合中不存在第二字符串与所述检测字符串满足所述第二相似条件,则将所述检测字符串的拼写类型确定为所述拼写正确类型。

在一个实施例中,所述处理器1001还执行以下步骤:

从所述第二字符串中选择两个相邻的字符,作为第一字符和第二字符;

交换所述第一字符和所述第二字符在所述第二字符串中的位置;

若交换位置后得到的字符串和所述检测字符串相同,则确定所述第二字符串与所述检测字符串满足所述第二相似条件。

在一个实施例中,所述处理器1001还执行以下步骤:

更新第二字符串;更新后的第二字符串是在所述第二字符串中删除字符后得到的字符串,或是在所述第二字符串中新增字符后得到的字符串;

若更新后的第二字符串和所述检测字符串相同,则确定所述第二字符串与所述检测字符串满足所述第二相似条件。

在一个实施例中,所述处理器1001还执行以下步骤:

在所述第二字符串中选择第一字符,确定所述第一字符在所述第二字符串中的目标位置信息,并将在所述检测字符串中处于所述目标位置信息的字符确定为第二字符;

若删除所述第一字符串中的第一字符后所得到的字符串,和删除所述检测字符串中的第二字符后所得到的字符串相同,则确定所述第二字符串与所述检测字符串满足所述第二相似条件。

上述可知,自动化地检测出程序代码中存在拼写错误的全局变量,以及自动化地检测出程序代码存在拼写错误的隐式函数的函数名,避免由人工手动检测整个程序代码,可以节省检测程序代码的耗时,进而提高检测的效率。

应当理解,本发明实施例中所描述的电子设备1000可执行前文图3到图5所对应实施例中对所述程序处理方法的描述,也可执行前文图6所对应实施例中对所述程序处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。

此外,这里需要指出的是:本发明实施例还提供了一种计算机存储介质,且所述计算机存储介质中存储有前文提及的程序处理装置1所执行的计算机程序,且所述计算机程序包括程序指令,当所述处理器执行所述程序指令时,能够执行前文图3到图5所对应实施例中对所述程序处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本发明所涉及的计算机存储介质实施例中未披露的技术细节,请参照本发明方法实施例的描述。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1