CN115080054A - 代码评价方法、装置、设备及存储介质 - Google Patents
代码评价方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115080054A CN115080054A CN202210660634.4A CN202210660634A CN115080054A CN 115080054 A CN115080054 A CN 115080054A CN 202210660634 A CN202210660634 A CN 202210660634A CN 115080054 A CN115080054 A CN 115080054A
- Authority
- CN
- China
- Prior art keywords
- code text
- evaluated
- text
- code
- preset
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
Abstract
本发明公开了一种代码评价方法、装置、设备及存储介质。具体实施方案为:获取待评价代码文本;其中,所述待评价代码文本包括基础代码文本和对所述基础代码文本进行验证的验证代码文本;对所述待评价代码文本进行编译,以确定所述基础代码文本中是否存在编译异常;若所述基础代码文本中不存在编译异常,则运行所述待评价代码文本;根据所述验证代码文本,对所述基础代码文本的原始输出结果进行验证。上述方式能够实现对该待评价代码文本中是否存在逻辑错误的判断,有效提高了对该待评价代码文本进行评价的全面性和相应评价结果的可靠性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种代码评价方法、装置、设备及存储介质。
背景技术
当用户编辑完成一段代码文本之后,通常情况下需要对该代码文本的正确性进行评价。
现有技术中在针对待评价代码文本进行评价时,通常只能够检测出该待评价代码文本中所存在的格式上的编译错误或者框架使用层面的错误。上述方式使得针对该待评价代码文本的评价不够全面,从而导致所得到的评价结果无法准确反映出该待评价代码文本中是否存在逻辑错误,进而降低了相应评价结果的可靠性。
发明内容
本发明提供了一种代码评价方法、装置、设备及存储介质,以提高对待评价代码文本进行评价的全面性和相应评价结果的可靠性。
第一方面,本发明实施例提供了一种代码评价方法,该方法包括:
获取待评价代码文本;其中,所述待评价代码文本包括基础代码文本和对所述基础代码文本进行验证的验证代码文本;
对所述待评价代码文本进行编译,以确定所述基础代码文本中是否存在编译异常;
若所述基础代码文本中不存在编译异常,则运行所述待评价代码文本;
根据所述验证代码文本,对所述基础代码文本的原始输出结果进行验证。
第二方面,本发明实施例提供了一种代码评价装置,该装置包括:
待评价代码文本获取模块,用于获取待评价代码文本;其中,所述待评价代码文本包括基础代码文本和对所述基础代码文本进行验证的验证代码文本;
编译异常确定模块,用于对所述待评价代码文本进行编译,以确定所述基础代码文本中是否存在编译异常;
待评价代码文本运行模块,用于若所述基础代码文本中不存在编译异常,则运行所述待评价代码文本;
原始输出结果验证模块,用于根据所述验证代码文本,对所述基础代码文本的原始输出结果进行验证。
第三方面,本发明实施例提供了一种电子设备,该电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行如本发明任一实施例所提供的代码评价方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现如本发明任一实施例所提供的代码评价方法。
本发明实施例中所获取的待评价代码文本中包括基础代码文本和可对基础代码文本进行验证的验证代码文本,相应的,在该基础代码文本中不存在编译异常时,可运行相应待评价代码文本,从而使得在对该待评价代码文本进行评价时,能够基于该待评价代码文本中本身所包含的验证代码对相应基础代码文本的原始输出结果进行验证,以实现对该待评价代码文本中是否存在逻辑错误的判断,进而有效提高了对该待评价代码文本进行评价的全面性和相应评价结果的可靠性。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例一提供的一种代码评价方法的流程图;
图2是根据本发明实施例二提供的一种代码评价方法的流程图;
图3是根据本发明实施例三提供的一种代码评价方法的流程图;
图4是根据本发明实施例六提供的一种代码评价装置的结构示意图;
图5是根据本发明实施例七提供的一种电子设备的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1为本发明实施例一提供的一种代码评价方法的流程图,本实施例可适用于对待评价代码文本进行正确性评价的情况,该方法可以由代码评价装置来执行,该装置可以采用软件和/或硬件的形式来实现,可配置于电子设备中。参考图1所示,该方法具体包括如下步骤:
S110、获取待评价代码文本;其中,所述待评价代码文本包括基础代码文本和对所述基础代码文本进行验证的验证代码文本。
其中,待评价代码文本可以是需要进行正确性评价的代码,例如可以是学生根据课程要求所编辑的代码等。基础代码文本可以是待评价代码文本中由操作者自定义输入的代码,例如可以是学生自行输入的代码等。验证代码文本可以是预先设定的用于基础代码文本验证的固定代码。其中,验证代码文本可以是隐藏的,也可以是非隐藏的,这里不做具体限制。
具体地,当需要对代码进行正确性评价时,则可以认为该代码为待评价代码文本。操作者在编辑完成相应的待评价代码文本后,可以对该待评价代码文本对应代码进行启动。相应的,若检测到该待评价代码文本所对应代码被启动,则可以对该待评价代码文本进行获取,并确定该待评价代码文本中所包含的基础代码文本和验证代码文本。
S120、对所述待评价代码文本进行编译,以确定所述基础代码文本中是否存在编译异常。
其中,编译异常可以是编译过程中出现错误。
具体地,可以在获取到相应待评价代码文本后,对该待评价代码文本进行编译。相应的,若对该评价代码文本进行编译的过程中出现错误,则可以确定基础代码文本中存在编译异常;若对该待评价代码文本进行编译的过程中未出现错误,则表示该待评价代码文本编译成功,从而确定相应基础代码文本中不存在编译异常。
S130、若所述基础代码文本中不存在编译异常,则运行所述待评价代码文本。
具体地,若判定基础代码文本中存在编译异常,则可以暂时终止对该待评价代码文本的评价;若判定基础代码文本中不存在编译异常,则可以确定相应待评价代码文本具备运行条件。相应的,可以运行该待评价代码文本,以执行该待评价代码文本中所包含的具体逻辑。
S140、根据所述验证代码文本,对所述基础代码文本的原始输出结果进行验证。
其中,原始输出结果可以是运行基础代码文本所输出的结果。
具体地,可以预先建立原始输出结果和不同基础代码文本之间的映射关系库,当运行待评价代码文本后,该待评价代码文本中所包括的基础代码文本和验证代码文本均处于运行状态。相应的,可以通过运行验证代码文本,重新执行相应基础代码文本中所包含的具体逻辑,并将所得到的结果与运行基础代码文本所产生的原始输出结果相比较,以确定该原始输出结果是否正确。相应的,若重新执行相应基础代码文本中所包含的具体逻辑所得到的结果和原始输出结果相同,则确定该原始输出结果正确;若重新执行相应基础代码文本中所包含的具体逻辑所得到的结果和原始输出结果不同,则确定该原始输出结果错误。
本发明实施例中所获取的待评价代码文本中包括基础代码文本和可对基础代码文本进行验证的验证代码文本,相应的,在该基础代码文本中不存在编译异常时,可运行相应待评价代码文本,从而使得在对该待评价代码文本进行评价时,能够基于该待评价代码文本中本身所包含的验证代码对相应基础代码文本的原始输出结果进行验证,以实现对该待评价代码文本中是否存在逻辑错误的判断,进而有效提高了对该待评价代码文本进行评价的全面性和相应评价结果的可靠性。
实施例二
图2为本发明实施例二提供的一种代码评价方法的流程图,本实施例在上述各实施例的基础上进行了进一步地优化。
进一步地,将“根据所述验证代码文本,对所述基础代码文本的原始输出结果进行验证”细化为“将获取到的基础代码文本的原始输出结果输入至所述验证代码文本的目标输出函数中,得到目标输出结果;其中,所述目标输出函数通过对基础代码文本中的输出函数进行重写得到;根据所述目标输出结果,验证所述基础代码文本的原始输出结果是否正确”,以完善原始输出结果的验证机制。
参考图2所示,该方法具体包括如下步骤:
S210、获取待评价代码文本;其中,所述待评价代码文本包括基础代码文本和对所述基础代码文本进行验证的验证代码文本。
S220、对所述待评价代码文本进行编译,以确定所述基础代码文本中是否存在编译异常。
S230、若所述基础代码文本中不存在编译异常,则运行所述待评价代码文本。
S240、将获取到的基础代码文本的原始输出结果输入至所述验证代码文本的目标输出函数中,得到目标输出结果;其中,所述目标输出函数通过对基础代码文本中的输出函数进行重写得到。
其中,目标输出函数可以是验证原始输出结果是否达到预设条件的函数,是通过对基础代码文本中的输出函数进行重写得到的。对基础代码文本中的输出函数进行重写可以是保留该输出函数的函数名,并根据需求对该输出函数的函数体中所包含的代码进行修改,以使得修改后的函数体可用于验证原始输出结果是否达到预设条件。其中,函数名可以是函数的名称,函数体可以是函数被执行后所需要执行的代码。例如基础代码文本中的输出函数可以是print函数,该print函数的函数体中包含的可以是用于求取任意两个数值,并保证所求取的两个数值相加为c的代码,那么在对该print函数进行重写时,则可以保留该print函数的函数名print,并将该print函数中函数体的代码修改为用于验证原始输出结果中的数值a和b相加是否等于c的代码,以实现对原始输出结果的验证。需要说明的是,基础代码文本中的输出函数还可以是除print函数外的其他函数类型,这里并不做具体限定。
其中,目标输出结果可以是表征原始输出结果是否正确的结果,例如可以是正确或错误等,还可以是用于与原始输出结果进行比较以验证该原始输出结果是否正确的结果。
具体地,可以预先在验证代码文本中重写基础代码文本中的输出函数,当相应待评价代码文本处于运行状态时,验证代码文本可以对基础代码文本运行所产生的原始输出结果进行获取。基于此,可以将该原始输出结果输入验证代码文本中的目标输出函数中,并将该目标输出函数的输出作为目标输出结果。
示例性地,所述验证代码文本可以包括前置验证代码文本和后置验证代码文本;相应的,所述将获取到的基础代码文本的原始输出结果输入至所述验证代码文本的目标输出函数中,得到目标输出结果,包括:通过运行所述前置验证代码文本,配置所述目标输出函数;通过运行所述后置验证代码文本,获取所述基础代码文本的原始输出结果,并调用所述目标输出函数;将所述原始输出结果作为所述目标输出函数的输入,得到目标输出结果。
其中,前置验证代码文本可以是处于基础代码文本之前的验证代码文本。后置验证代码文本可以是处于基础代码文本之后的验证代码文本。其中,前置验证代码文本和后置验证代码文本可以是隐藏的,也可以是非隐藏的,这里不做具体限制。
具体地,可以预先在前置验证代码文本中重写基础代码文本的输出函数,以在基础代码文本之前配置相应的目标输出函数。相应的,当运行相应待评价代码文本时,可以先执行前置验证代码文本,以加载相应的目标输出函数。当基础代码文本执行完毕后,运行后置验证代码文本,可对运行基础代码文本所产生的原始输出结果进行获取,并对前置验证代码文本中所配置的目标输出函数进行调用。通过将所获取到的原始输出结果作为所调用的目标输出函数的输入,可得到对应的目标输出结果,以对相应原始输出结果进行验证。
可以理解的是,可以通过运行前置验证代码文本配置相应的目标输出函数,并基于后置验证代码文本的运行,获取基础代码文本的原始输出结果,并对该目标输出函数进行调用,从而能够在相应待评价代码文本本身的运行过程中便可实现对原始输出结果的获取和验证过程,无需另外设置独立的验证环节对相应基础代码文本的原始输出结果进行验证,进而有助于提高针对待评价代码文本的评价效率。
S250、根据所述目标输出结果,验证所述基础代码文本的原始输出结果是否正确。
具体地,可以通过目标输出结果来表征相应原始输出结果是否正确。相应的,若目标输出结果为正确,则可以确定原始输出结果是正确的,从而判定相应待评价代码文本中不存在错误;若目标输出结果为错误,则可以确定原始输出结果是错误的,从而判定相应待评价代码文本中存在错误。
可选的,还可以通过将目标输出结果与相应原始输出结果进行比较的方式,判定该原始输出结果是否正确。具体地,若目标输出结果与原始输出结果相同,则可以判定原始输出结果是正确的;若目标输出结果与原始输出结果不同,则可以判定原始输出结果是错误的。
本发明实施例通过对基础代码文本中的输出函数进行重写所得到的目标输出函数,能够根据基础代码文本的原始输出结果得到相应的目标输出结果,并根据该目标输出结果实现对相应原始输出结果的正确性的验证,使得在相应待评价代码文本本身的运行过程中便可实现对原始输出结果的获取和验证过程,从而无需另外设置独立的验证环节对该基础代码文本的原始输出结果进行验证,进而有助于提高针对待评价代码文本的评价效率。
实施例三
图3为本发明实施例三提供的一种代码评价方法的流程图,本实施例以上述各实施例为基础进行了进一步地优化。
进一步地,追加“对所述待评价代码文本进行静态解析,以检测所述待评价代码文本中是否存在解析异常;若所述待评价代码文本中不存在解析异常,则选择对所述待评价代码文本进行编译”,以确定相应待评价代码文本中是否存在解析异常,并基于此进行后续操作的选择。
参考图3所示,该方法具体包括如下步骤:
S310、获取待评价代码文本;其中,所述待评价代码文本包括基础代码文本和对所述基础代码文本进行验证的验证代码文本。
S320、对所述待评价代码文本进行静态解析,以检测所述待评价代码文本中是否存在解析异常。
其中,静态解析可以是对待评价代码文本所包含的内容进行解析。解析异常可以是静态解析过程中所出现的异常。
具体地,可以预先建立不同内容的代码文本与解析异常之间的映射关系,并基于所建立的至少一种映射关系,组建相应的解析异常数据库。其中,解析异常数据库可以是包含不同内容的代码文本与解析异常之间的映射关系的数据库。当获取到待评价代码文本时,可以先对该待评价代码文本执行静态解析操作,并基于经过静态解析后的待评价代码文本,在预先建立的解析异常数据库中查询是否存在对应的解析异常。相应的,若查询到对应的解析异常,则判定待评价代码文本中存在解析异常;若未查询到对应的解析异常,则判定待评价代码文本中不存在解析异常。
示例性地,所述待评价代码文本包括预置代码文本;所述预置代码文本可以为构建基础代码文本的框架的固定代码;所述解析异常可以包括预置代码文本的文本异常;相应的,对所述待评价代码文本进行静态解析,以检测所述待评价代码文本中是否存在解析异常,可以包括:将所述待评价代码文本与所述预置代码文本进行字符匹配;根据匹配结果,确定所述待评价代码文本是否存在文本异常。
其中,预置代码文本的文本异常可以是预置代码文本出现异常,例如可以是预置代码文本被修改等。预置代码文本可以被呈现给对基础代码文本进行编辑的操作者。字符匹配可以是将不同代码文本中的字符进行匹配,可以包括字符串强匹配等。
具体地,可以预先设置相应的固定代码,对基础代码文本的框架进行构建,以使得操作者在该框架内对基础代码文本进行编辑。其中,相应固定代码可以被认为是预置代码文本。相应的,可以通过对待评价代码文本进行解析,并使得解析后的待评价代码文本中所包含的字符与预置代码文本中所包含的字符进行匹配,根据该匹配操作的结果,可以确定待评价代码文本中是否存在文本异常。具体地,若待评价代码文本中匹配不到预置代码文本所对应的全部的字符,表示该待评价代码文本中的预置代码文本被修改,则可以判定该待评价代码文本中存在文本异常;若待评价代码文本中可以匹配到预置代码文本所对应的全部的字符,则表示该待评价代码文本中的预置代码文本未被修改,则可以判定该待评价代码文本中不存在文本异常。
可以理解的是,通过将待评价代码文本和预置代码文本进行字符匹配,并根据匹配结果,对该待评价代码文本中是否存在文本异常进行确定,使得在对待评价代码文本进行评价时,能够检测用于构建基础代码文本的框架的固定代码是否出现异常,从而避免因操作者自行修改预置代码文本而造成所编辑的基础代码文本超出设定框架的情况发生,进而保证了操作者对基础代码文本的编辑处于所设定框架的引导之下,对正确引导操作者进行代码编辑具有重要意义。
示例性地,在所述确定确定所述待评价代码文本是否存在文本异常之后,还可以包括:若所述待评价代码文本中存在文本异常,则发出所述文本异常的通知消息,以提示操作者不可对所述预置代码文本进行修改。
具体地,如果确定待评价代码文本中存在文本异常,则可以认为该待评价代码文本中的预置代码文本被进行了修改。基于此,可以发出相应文本异常的通知消息,并在该通知消息中提示操作者不能对预置代码文本进行修改。
可以理解的是,在确定待评价代码文本中存在文本异常时,发出该文本异常的通知消息,以提示操作者不可对预置代码文本进行修改,使得在对待评价代码文本进行评价的过程中,能够及时告知操作者不要对预置代码文本进行修改,从而有助于避免操作者在后续对基础代码文本的编辑过程中出现因自行修改预置代码文本而造成所编辑的基础代码文本超出设定框架的情况,进而有助于保证操作者对基础代码文本的编辑处于所设定框架的引导之下,对正确引导操作者进行代码编辑具有重要意义。
示例性地,所述解析异常可以包括预设编写异常;相应的,对所述待评价代码文本进行静态解析,以检测所述待评价代码文本中是否存在解析异常,可以包括:根据预先设定的正则表达式,将所述待评价代码文本与预先建立的预设编写异常数据库进行匹配;根据匹配结果,确定所述待评价代码文本中是否存在预设编写异常。
其中,预设编写异常可以是预先设定的编写过程中出现的编辑错误,例如可以是语法错误或拼写错误等。正则表达式可以是将待评价代码文本中所包含的字符与预设编写异常数据库进行匹配时需要依据的匹配规则。
具体地,可以预先设定待评价代码文本和预先建立的预设编写异常数据库之间的匹配规则。根据该匹配规则,可以将待评价代码文本中所包含的各字符与预设编写异常数据库中所包含的各预设编译异常所对应的代码文本进行匹配,并根据相应的匹配结果,对该待评价代码文本中是否存在预设编写异常进行确定。
可以理解的是,根据预先设定的正则表达式,将所述待评价代码文本与预先建立的预设编写异常数据库进行匹配,并根据相应匹配结果,对待评价代码文本中是否存在预设编写异常进行确定,使得在对待评价代码文本进行评价的过程中,能够根据自行预设的编写过程中可能出现的编辑错误对该待评价代码文本进行检测,从而避免了漏识别待检测代码文本中存在的编辑错误的情况发生,进而提高了对待评价代码文本评价的全面性。
示例性地,根据匹配结果,判定所述待评价代码文本中是否存在预设编写异常,可以包括:若检测到所述待评价代码文本中包含符合预设异常正则表达式的语句,则确定相应语句存在预设编写异常;和/或,若检测到所述待评价代码文本中包含不符合预设标准正则表达式的语句,则确定相应语句存在预设编写异常。
其中,预设异常正则表达式可以是预先设定的判定待评价代码文本中各语句所包含的字符与预设编写异常数据库中各预设编写异常对应字符相同的匹配规则;预设标准正则表达式可以是预先设定的判定待评价代码文本中各语句所包含的字符与预设编写异常数据库中各预设编写异常对应字符不同的匹配规则。
具体地,可以预先设定判定待评价代码文本中各语句所包含的字符与预设编写异常数据库中各预设编写异常对应字符相同的匹配规则,并根据该匹配规则,将待评价代码文本中各语句所包含的字符与预设编写异常数据库各对应字符进行匹配。相应的,若匹配成功,则可以认为待评价代码文本中存在预设编写异常;若匹配失败,则可以认为待评价代码文本中不存在预设编写异常。可选的,还可以预先设定判定待评价代码文本中各语句所包含的字符与预设编写异常数据库中各预设编写异常对应字符不同的匹配规则,并根据该匹配规则,将待评价代码文本中各语句所包含的字符与预设编写异常数据库各对应字符进行匹配。相应的,若匹配成功,则可以认为待评价代码文本中不存在预设编写异常;若匹配失败,则可以认为待评价代码文本中存在预设编写异常。
可以理解的是,通过预设异常正则表达式或者预设标准正则表达式,对待评价代码文本中各语句所包含的字符与预设编写异常数据库进行匹配,均能够确定该待评价代码文本中各语句所存在的预设编写异常,从而提供了两种不同的预设编写异常的确定方式以供选择,进而丰富了预设编写异常的确定机制,有效提高了预设编写异常确定的灵活性。
S330、若所述待评价代码文本中不存在解析异常,则对所述待评价代码文本进行编译,以确定所述基础代码文本中是否存在编译异常。
具体地,若确定待评价代码文本中存在解析异常,则可以终止对相应待评价代码文本的评价;若确定待评价代码文本中不存在解析异常,则可以继续对该待评价代码文本执行编译操作。相应的,通过对该待评价代码文本进行编译,以根据编译的结果,确定相应基础代码文本中是否存在编译异常。
在一个可选实施例中,若待评价代码文本中存在预置代码文本异常和/或预设编写异常,则可以确定所述待评价代码文本中存在解析异常;若所述待评价代码文本中未出现预置代码文本异常或预设编写异常,则可以确定所述待评价代码文本中不存在解析异常。
具体地,若待评价代码文本中存在预置代码文本异常和预设编写异常中的至少一种,则可以确定该待评价代码文本中存在解析异常;若待评价代码文本中未出现预置代码文本异常和预设编写异常中的任意一种,则可以确定该待评价代码文本中不存在解析异常。
可以理解的是,通过待评价代码文本中可能出现的至少一种解析异常的类型,来对应判定该待评价代码文本中是否存在解析异常,极大程度上丰富了解析异常的确定机制,从而使得针对解析异常的确定方式更为全面,有助于提高解析异常确定的可靠性。
S340、若所述基础代码文本中不存在编译异常,则运行所述待评价代码文本。
S350、根据所述验证代码文本,对所述基础代码文本的原始输出结果进行验证。
本发明实施例通过对待评价代码文本进行静态解析,以检测所述待评价代码文本中是否存在解析异常,并在待评价代码文本中不存在解析异常的情况下,再选择对所述待评价代码文本进行编译,使得在对待评价代码文本进行评价时,能够将相应待评价代码文本中是否存在解析异常的因素考虑在内,避免了因直接对待评价代码文本进行编译而忽略掉可能存在的解析异常的情况发生,从而有效提高了对待评价代码文本进行评价时的全面性,进而有助于增强所得到的评价结果的可靠性。
实施例四
图4为本发明实施例四提供的一种代码评价方法的结构示意图,本实施例可适用于对待评价代码文本进行正确性评价的情况,该装置可以采用软件和/或硬件的形式来实现,可配置于电子设备中。参考图4所示,该装置包括:
待评价代码文本获取模块410,用于获取待评价代码文本;其中,所述待评价代码文本包括基础代码文本和对所述基础代码文本进行验证的验证代码文本。
编译异常确定模块420,用于对所述待评价代码文本进行编译,以确定所述基础代码文本中是否存在编译异常。
待评价代码文本运行模块430,用于若所述基础代码文本中不存在编译异常,则运行所述待评价代码文本。
原始输出结果验证模块440,用于根据所述验证代码文本,对所述基础代码文本的原始输出结果进行验证。
本发明实施例中所获取的待评价代码文本中包括基础代码文本和可对基础代码文本进行验证的验证代码文本,相应的,在该基础代码文本中不存在编译异常时,可运行相应待评价代码文本,从而使得在对该待评价代码文本进行评价时,能够基于该待评价代码文本中本身所包含的验证代码对相应基础代码文本的原始输出结果进行验证,以实现对该待评价代码文本中是否存在逻辑错误的判断,进而有效提高了对该待评价代码文本进行评价的全面性和相应评价结果的可靠性。
可选的,原始输出结果验证模块440,可以包括:
目标输出结果确定单元,用于将获取到的基础代码文本的原始输出结果输入至所述验证代码文本的目标输出函数中,得到目标输出结果;其中,所述目标输出函数通过对基础代码文本中的输出函数进行重写得到;
原始输出结果验证单元,用于根据所述目标输出结果,验证所述基础代码文本的原始输出结果是否正确。
可选的,所述验证代码文本可以包括前置验证代码文本和后置验证代码文本;相应的,目标输出结果确定单元,可以包括:
目标输出函数配置子单元,用于通过运行所述前置验证代码文本,配置所述目标输出函数;
目标输出函数调用子单元,用于通过运行所述后置验证代码文本,获取所述基础代码文本的原始输出结果,并调用所述目标输出函数;
目标输出结果获取子单元,用于将所述原始输出结果作为所述目标输出函数的输入,得到目标输出结果。
可选的,编译异常确定模块420,可以包括:
解析异常检测单元,用于对所述待评价代码文本进行静态解析,以检测所述待评价代码文本中是否存在解析异常;
解析异常处理单元,用于若所述待评价代码文本中不存在解析异常,则选择对所述待评价代码文本进行编译。
可选的,所述待评价代码文本包括预置代码文本;所述预置代码文本为构建基础代码文本的框架的固定代码;所述解析异常包括所述预置代码文本的文本异常;相应的,解析异常检测单元,可以包括:
字符匹配子单元,用于将所述待评价代码文本与所述预置代码文本进行字符匹配;
文本异常确定子单元,用于根据匹配结果,确定所述待评价代码文本是否存在文本异常。
可选的,解析异常检测单元,还可以包括:
文本异常通知子单元,用于若所述待评价代码文本中存在文本异常,则发出所述文本异常的通知消息,以提示操作者不可对所述预置代码文本进行修改。
可选的,所述解析异常可以包括预设编写异常;相应的,解析异常检测模块,可以包括:
预设编写异常匹配单元,用于根据预先设定的正则表达式,将所述待评价代码文本与预先建立的预设编写异常数据库进行匹配;
预设编写异常确定单元,用于根据匹配结果,确定所述待评价代码文本中是否存在预设编写异常。
可选的,预设编写异常确定单元,可以包括:
预设编写异常第一确定子单元,用于若检测到所述待评价代码文本中包含符合预设异常正则表达式的语句,则确定相应语句存在预设编写异常;
和/或,
预设编写异常第二确定子单元,用于若检测到所述待评价代码文本中包含不符合预设标准正则表达式的语句,则确定相应语句存在预设编写异常。
本发明实施例所提供的代码评价装置可以执行本发明任一实施例所提供的代码评价方法,具备执行各代码评价方法相应的功能模块和有益效果。本发明实施例中未详尽描述的内容可以参考本发明任意一种代码评价方法实施例中的描述。
实施例五
图5示出了可以用来实施本发明的实施例的电子设备10的结构框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图5所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
电子设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许电子设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如代码评价方法。
在一些实施例中,代码评价方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的代码评价方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行代码评价方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种代码评价方法,其特征在于,包括:
获取待评价代码文本;其中,所述待评价代码文本包括基础代码文本和对所述基础代码文本进行验证的验证代码文本;
对所述待评价代码文本进行编译,以确定所述基础代码文本中是否存在编译异常;
若所述基础代码文本中不存在编译异常,则运行所述待评价代码文本;
根据所述验证代码文本,对所述基础代码文本的原始输出结果进行验证。
2.根据权利要求1所述的方法,其特征在于,所述根据所述验证代码文本,对所述基础代码文本的原始输出结果进行验证,包括:
将获取到的基础代码文本的原始输出结果输入至所述验证代码文本的目标输出函数中,得到目标输出结果;其中,所述目标输出函数通过对基础代码文本中的输出函数进行重写得到;
根据所述目标输出结果,验证所述基础代码文本的原始输出结果是否正确。
3.根据权利要求2所述的方法,其特征在于,所述验证代码文本包括前置验证代码文本和后置验证代码文本;
相应的,所述将获取到的基础代码文本的原始输出结果输入至所述验证代码文本的目标输出函数中,得到目标输出结果,包括:
通过运行所述前置验证代码文本,配置所述目标输出函数;
通过运行所述后置验证代码文本,获取所述基础代码文本的原始输出结果,并调用所述目标输出函数;
将所述原始输出结果作为所述目标输出函数的输入,得到目标输出结果。
4.根据权利要求1所述的方法,其特征在于,所述对所述待评价代码文本进行编译,包括:
对所述待评价代码文本进行静态解析,以检测所述待评价代码文本中是否存在解析异常;
若所述待评价代码文本中不存在解析异常,则对所述待评价代码文本进行编译。
5.根据权利要求4所述的方法,其特征在于,所述待评价代码文本包括预置代码文本;所述预置代码文本为构建基础代码文本的框架的固定代码;
所述解析异常包括所述预置代码文本的文本异常;相应的,对所述待评价代码文本进行静态解析,以检测所述待评价代码文本中是否存在解析异常,包括:
将所述待评价代码文本与所述预置代码文本进行字符匹配;
根据匹配结果,确定所述待评价代码文本是否存在文本异常。
6.根据权利要求4所述的方法,其特征在于,所述解析异常包括预设编写异常;
相应的,对所述待评价代码文本进行静态解析,以检测所述待评价代码文本中是否存在解析异常,包括:
根据预先设定的正则表达式,将所述待评价代码文本与预先建立的预设编写异常数据库进行匹配;
根据匹配结果,确定所述待评价代码文本中是否存在预设编写异常。
7.根据权利要求6所述的方法,其特征在于,所述根据匹配结果,判定所述待评价代码文本中是否存在预设编写异常,包括:
若检测到所述待评价代码文本中包含符合预设异常正则表达式的语句,则确定相应语句存在预设编写异常;
和/或,
若检测到所述待评价代码文本中包含不符合预设标准正则表达式的语句,则确定相应语句存在预设编写异常。
8.一种代码评价装置,其特征在于,包括:
待评价代码文本获取模块,用于获取待评价代码文本;其中,所述待评价代码文本包括基础代码文本和对所述基础代码文本进行验证的验证代码文本;
编译异常确定模块,用于对所述待评价代码文本进行编译,以确定所述基础代码文本中是否存在编译异常;
待评价代码文本运行模块,用于若所述基础代码文本中不存在编译异常,则运行所述待评价代码文本;
原始输出结果验证模块,用于根据所述验证代码文本,对所述基础代码文本的原始输出结果进行验证。
9.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的代码评价方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-7中任一项所述的代码评价方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210660634.4A CN115080054A (zh) | 2022-06-13 | 2022-06-13 | 代码评价方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210660634.4A CN115080054A (zh) | 2022-06-13 | 2022-06-13 | 代码评价方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115080054A true CN115080054A (zh) | 2022-09-20 |
Family
ID=83252363
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210660634.4A Pending CN115080054A (zh) | 2022-06-13 | 2022-06-13 | 代码评价方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115080054A (zh) |
-
2022
- 2022-06-13 CN CN202210660634.4A patent/CN115080054A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111090641A (zh) | 数据处理方法及装置、电子设备、存储介质 | |
CN109783356A (zh) | 一种自动化测试方法及终端 | |
CN113627168B (zh) | 一种元器件封装冲突的检查方法、装置、介质及设备 | |
CN113360144B (zh) | 软件开发的辅助处理方法、设备、存储介质及程序产品 | |
CN111881054A (zh) | 用户界面自动化测试方法、系统、设备及存储介质 | |
CN112988578A (zh) | 一种自动化测试方法和装置 | |
CN112149828A (zh) | 基于深度学习框架的算子精度检测方法和装置 | |
CN110162729B (zh) | 建立浏览器指纹以及识别浏览器类型的方法、装置 | |
CN110286912B (zh) | 代码检测方法、装置及电子设备 | |
CN115080054A (zh) | 代码评价方法、装置、设备及存储介质 | |
CN115509602A (zh) | 项目管理方法、装置、设备及存储介质 | |
CN109284483A (zh) | 文本处理方法、装置、存储介质及电子设备 | |
CN115309706A (zh) | 多语言配置文件的更新方法、装置、设备、介质及产品 | |
CN114580391A (zh) | 中文错误检测模型训练方法、装置、设备及存储介质 | |
CN113672512A (zh) | 代码检查规则生成方法、代码检查方法、装置、介质 | |
CN110991147B (zh) | 一种字体检测方法、装置、电子设备及存储介质 | |
CN110633204B (zh) | 一种程序缺陷检测方法及装置 | |
CN114116688A (zh) | 数据处理与数据质检方法、装置及可读存储介质 | |
CN116483377B (zh) | 一种代码检测方法、装置、电子设备及存储介质 | |
CN113485688B (zh) | 代码补全方法、装置、存储介质与电子设备 | |
CN115982059B (zh) | Shell脚本检查工具的实现方法 | |
CN111611153B (zh) | 一种用户界面过度绘制的检测方法和装置 | |
CN115878127A (zh) | python解释器的输入信号确定方法、装置、设备及介质 | |
CN106814943A (zh) | 一种计算机与安卓设备的交互方法及系统 | |
CN111078538A (zh) | 基于jmh的规则自动化测试的方法 |
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 |