CN117093490A - 代码的处理方法、装置、计算机设备及存储介质 - Google Patents

代码的处理方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN117093490A
CN117093490A CN202311073175.0A CN202311073175A CN117093490A CN 117093490 A CN117093490 A CN 117093490A CN 202311073175 A CN202311073175 A CN 202311073175A CN 117093490 A CN117093490 A CN 117093490A
Authority
CN
China
Prior art keywords
register
code
database table
target
information
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
Application number
CN202311073175.0A
Other languages
English (en)
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.)
Gree Electric Appliances Inc of Zhuhai
Zhuhai Zero Boundary Integrated Circuit Co Ltd
Original Assignee
Gree Electric Appliances Inc of Zhuhai
Zhuhai Zero Boundary Integrated Circuit 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 Gree Electric Appliances Inc of Zhuhai, Zhuhai Zero Boundary Integrated Circuit Co Ltd filed Critical Gree Electric Appliances Inc of Zhuhai
Priority to CN202311073175.0A priority Critical patent/CN117093490A/zh
Publication of CN117093490A publication Critical patent/CN117093490A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • 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)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明实施例涉及一种代码处理方法、装置、计算机设备及存储介质,所述方法包括:从目标代码中获取寄存器的第一寄存器信息;从所述寄存器的描述文件中获取所述寄存器的第二寄存器信息;根据所述第一寄存器信息和所述第二寄存器信息生成目标数据库表;根据所述目标数据库表生成所述寄存器对应的变量定义文本;根据所述变量定义文本和所述目标代码生成被测代码。由此,可以实现在原软件代码中添加变量定义文本,以变量定义文本的操作替换原软件代码中的寄存器操作,生成被测代码,能不依托硬件直接完成软件代码的白盒测试,能明确区分软件代码缺陷、硬件设备缺陷,无需进行硬件设备相关配置。

Description

代码的处理方法、装置、计算机设备及存储介质
技术领域
本发明实施例涉及代码处理技术领域,尤其涉及一种代码的处理方法、装置、计算机设备及存储介质。
背景技术
白盒测试需要设计输出,运行被测单元,验证输出结果。在嵌入式软件白盒测试过程中,软件代码往往需要操作硬件设备,而硬件设备的启动流程较为繁琐,影响设备运行的因素较多。
导致在测试时不能直接的区分软件代码缺陷、硬件设备缺陷,而且在测试代码设计需要进行太多测试之外的行为,增加了测试工作量。因此,如何在不使用硬件的情况下进行软件测试成为现在亟待解决的问题。
发明内容
鉴于此,为解决上述不使用硬件进行软件测试的技术问题,本发明实施例提供一种代码的处理方法、装置、计算机设备及存储介质。
第一方面,本发明实施例提供一种代码的处理方法,包括:
从目标代码中获取寄存器的第一寄存器信息,所述第一寄存器信息表征所述目标代码中的寄存器的属性信息;
从所述寄存器的描述文件中获取所述寄存器的第二寄存器信息,所述第二寄存器信息表征所述描述文件中的寄存器的属性信息;
根据所述第一寄存器信息和所述第二寄存器信息生成目标数据库表;
根据所述目标数据库表生成所述寄存器对应的变量定义文本,所述变量定义文本用于代替所述目标代码中的寄存器操作;
根据所述变量定义文本和所述目标代码生成被测代码。
在一个可能的实施方式中,所述从目标代码中获取寄存器的第一寄存器信息,包括:
根据正则表达式从所述目标代码的获取所述寄存器的第一名称、行数和数据操作表达式作为所述第一寄存器信息;
所述从所述寄存器的描述文件中获取所述寄存器的第二寄存器信息,包括:
根据正则表达式从所述寄存器的描述文件中获取寄存器的第二名称、第二读写属性、寄存器大小和默认值作为所述第二寄存器信息。
在一个可能的实施方式中,所述根据所述第一寄存器信息和所述第二寄存器信息生成目标数据库表,包括:
根据所述第一寄存器信息生成第一数据库表,根据所述第二寄存器信息生成第二数据库表;
当所述第一名称和所述第二名称一致时,判断所述数据操作表达式与所述第二读写属性是否匹配,以及判断所述数据操作表达式与所述寄存器大小是否匹配;
当所述数据操作表达式与所述第二读写属性匹配,且所述数据操作表达式与所述寄存器大小匹配时,根据所述第一数据库表和所述第二数据库表生成所述目标数据库表。
在一个可能的实施方式中,所述判断所述数据操作表达式与所述第二读写属性是否匹配,以及判断所述数据操作表达式与所述寄存器大小是否匹配,包括:
确定所述数据操作表达式对应的第一读写属性;
当所述第一读写属性与所述第二读写属性一致时,确定所述数据操作表达式与所述第二读写属性匹配;
当所述数据操作表达式中有记录数据的操作时,确定所述数据操作表达式中记录的数据的数据量;
当所述数据量小于或等于所述寄存器大小时,确定为所述数据操作表达式与所述寄存器大小匹配。
在一个可能的实施方式中,所述方法还包括:
当所述第一数据库表和所述第二数据库表匹配失败时,接收针对所述第一数据库表或所述第二数据库表的目标操作,所述失败的情况包括以下之一:所述第一名称和所述第二名称不一致,或,所述第一读写操作与所述第二读写属性不一致,或,所述数据量大于所述寄存器大小;
根据所述目标操作修改所述第一数据库表中的第一寄存器信息,或,根据所述目标操作修改所述第二数据库表中的第二寄存器信息。
在一个可能的实施方式中,根据所述目标数据库表生成所述寄存器对应的变量定义文本,包括:
从所述目标数据库表中获取所述寄存器的名称、寄存器大小和默认值;
根据所述名称、寄存器大小和默认值按照预设格式生成所述变量定义文本;
所述根据所述变量定义文本和所述目标代码生成被测代码,包括:
从所述目标代码中读取目标子代码;
在所述目标子代码中的目标位置写入所述变量定义文本,得到所述被测代码。
在一个可能的实施方式中,在所述根据所述变量定义文本和所述目标代码生成被测代码之后,所述方法还包括:
对所述被测代码进行编译,得到变编译后的所述被测代码;
利用编译后的所述被测代码进行白盒测试,得到测试结果。
第二方面,本发明实施例提供一种代码处理装置,包括:
获取模块,用于从目标代码中获取寄存器的第一寄存器信息;
所述获取模块,还用于从所述寄存器的描述文件中获取所述寄存器的第二寄存器信息;
生成模块,用于根据所述第一寄存器信息和所述第二寄存器信息生成目标数据库表;
所述生成模块,还用于根据所述目标数据库表生成所述寄存器对应的变量定义文本;
所述生成模块,还用于根据所述变量定义文本和所述目标代码生成被测代码。
第三方面,本发明实施例提供一种计算机设备,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的代码生成程序,以实现上述第一方面中任一项所述的代码处理方法。
第四方面,本发明实施例提供一种存储介质,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述第一方面中任一项所述的代码处理方法。
本发明实施例提供的代码处理方案,通过从目标代码中获取寄存器的第一寄存器信息;从所述寄存器的描述文件中获取所述寄存器的第二寄存器信息;根据所述第一寄存器信息和所述第二寄存器信息生成目标数据库表;根据所述目标数据库表生成所述寄存器对应的变量定义文本;根据所述变量定义文本和所述目标代码生成被测代码。由此,可以实现在原软件代码中添加变量定义文本,以变量定义文本的操作替换原软件代码中的寄存器操作,生成被测代码,能不依托硬件直接完成软件代码的白盒测试,代码中无需配置硬件的相关操作,当出现缺陷时可以确定是软件代码发生问题,能明确区分软件代码缺陷、硬件设备缺陷,无需进行硬件设备相关配置。
附图说明
图1为本发明实施例提供的一种代码处理方法的流程示意图;
图2为本发明实施例提供的另一种代码处理方法的流程示意图;
图3为本发明实施例提供的一种代码处理装置的结构示意图;
图4为本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为便于对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。
图1为本发明实施例提供的一种代码处理方法的流程示意图,如图1所示,该方法具体包括:
S11、从目标代码中获取寄存器的第一寄存器信息。
本发明实施例提供的代码处理方法,应用于计算机设备,所述计算机设备可以包括但不限于:台式计算机、服务器、平板电脑等,具体通过在目标代码中涉及寄存器操作时,根据寄存器信息生成变量定义文本,并将目标代码中寄存器的操作替换为变量定义文本,由此生成被测代码。
在本实施例中,目标代码为开发人员预先开发的代码,也即,当前需要进行白盒测试对象,目标代码中包含涉及寄存器及寄存器操作相关的软件代码。第一寄存器信息为从目标代码中识别匹配出的有关寄存器的信息,可以表征寄存器具备的功能,可以理解为寄存器是某种设备,目标代码中的第一寄存器信息表征怎么用该设备、用该设备来做什么。具体的,逐行读取目标代码的代码内容,从每行内容中匹配出寄存器名称、寄存器的数据操作表达式,目标代码的行数作为第一寄存器信息,匹配方法可以包括但不限于利用正则表达式匹配或者调用其他已有的库函数对目标代码进行识别、记录,由此获取第一寄存器信息。
S12、从所述寄存器的描述文件中获取所述寄存器的第二寄存器信息。
在本实施例中,描述文件用于描述寄存器的属性和功能,第二寄存器信息为厂家提供的芯片的描述文件中有关寄存器的信息。具体的,逐行读取芯片的描述文件(芯片支持包中包含,有特定的格式),使用正则表达式按照描述文件的格式规则,获取寄存器名称、读写属性、寄存器大小和默认值作为第二寄存器信息。
S13、根据所述第一寄存器信息和所述第二寄存器信息生成目标数据库表。
在本实施例中,获取第一寄存器信息后将其存储至第一数据库表中,获取第二寄存器信息后将其存储至第二数据库表中,依次读取第一数据表、第二数据库表,将目标代码的行数、寄存器名称、数据操作表达式、读写属性、寄存器大小和默认值,并将第一数据库表和第二数据库表中的第一寄存器信息和第二寄存器信息进行匹配,匹配成功后将第一寄存器信息和第二寄存器信息关联记录到目标数据库表中。其中,匹配方法可以包括但不限于:判断寄存器名称是否相同,数据操作表达式中的读写属性与描述文件中的读写属性是否一致,处理的数据量是否小于寄存器大小等。
S14、根据所述目标数据库表生成所述寄存器对应的变量定义文本。
在本实施例中,从目标数据库表中读取寄存器名称、寄存器大小、默认值等,将其按当前目标代码所用的编程语言的语法,通过预设的字符串拼接,形成变量定义文本(例如,unsigned int变量名称/寄存器名称=默认值)。目的是在软目标代码中定义寄存器对应的变量,每个寄存器都定义相应的变量。变量定义文本可以代替目标代码中的寄存器操作。
S15、根据所述变量定义文本和所述目标代码生成被测代码。
在本实施例中,将目标代码中涉及寄存器的操作替换为变量定义文本,得到被测代码,具体的,打开目标代码文本,逐行读取其中的内容写入到被测代码文本,在被测代码文本的特定位置写入变量定义文本。从目标数据库中读取目标代码、寄存器名称、数据操作表达式等,逐行读取目标代码文本中的内容,按行号将相应行的数据操作表达式中的寄存器名称替换为变量名称,插入到被测代码文本中,直至目标代码文本中的内容全部写入到被测代码文本,得到最终的被测代码,被测代码为白盒测试中实际被测试的软件代码。
进一步的,对被测代码进行编译验证。调用编译器对被测代码文本进行编译,确认编译通过后,将被测代码作为白盒测试的测试对象进行白盒测试,通过其中变量值的变化判断单元测试结果。
本发明实施例提供的代码处理方法,通过从目标代码中获取寄存器的第一寄存器信息;从所述寄存器的描述文件中获取所述寄存器的第二寄存器信息;根据所述第一寄存器信息和所述第二寄存器信息生成目标数据库表;根据所述目标数据库表生成所述寄存器对应的变量定义文本;根据所述变量定义文本和所述目标代码生成被测代码。由此,可以实现在原软件代码中添加变量定义文本,以变量定义文本的操作替换原软件代码中的寄存器操作,生成被测代码,能不依托硬件直接完成软件代码的白盒测试,能明确区分软件代码缺陷、硬件设备缺陷,无需进行硬件设备相关配置。
图2为本发明实施例提供的另一种代码处理方法的流程示意图,如图2所示,该方法具体包括:
S21、根据正则表达式从所述目标代码的获取所述寄存器的第一名称、行数和数据操作表达式作为所述第一寄存器信息;根据正则表达式从所述寄存器的描述文件中获取寄存器的第二名称、第二读写属性、寄存器大小和默认值作为所述第二寄存器信息。
在本实施例中,计算机设备中设置有匹配模块,匹配模块用于根据预先设定的匹配规则获取第一寄存器信息和第二寄存器信息,具体的,目标代码为原软件代码,也即开发人员开发的需要进行白盒测试的代码,预先设定匹配规则A,匹配规则A是用来从目标代码中提取第一寄存器信息,第一寄存器信息用于后续对目标代码的内容进行修改。匹配规则A为项目开发约定的规则,例如已大写字母命名且名称中包含_REG_。匹配规则A用代码实现,代码流程为:逐行读取目标代码的内容,使用正则表达式从每行内容中匹配出寄存器名称作为第一名称、寄存器的数据操作表达式和行数,将第一名称、数据操作表达式和行数作为第一寄存器信息。
进一步的,设定匹配规则B,匹配规则B是用来从芯片描述文件中提取第二寄存器信息,用于后续对目标代码的内容进行修改。匹配规则B为芯片厂约定的规则,例如,寄存器名称使用<name>xx</name>标签、默认值使用<resetValue>xx</resetValue>标签、大小使用<size>xx</size>标签等,匹配规则B用代码实现,代码流程为:逐行读取芯片描述文件(芯片支持包中包含,有特定的格式),使用正则表达式按照描述文件的格式规则,获取寄存器的名称作为第二名称、寄存器的读写属性作为第二读写属性、寄存器的大小、默认值等,将第二名称、第二读写属性、寄存器大小和默认值作为第二寄存器信息。
S22、根据所述第一寄存器信息生成第一数据库表,根据所述第二寄存器信息生成第二数据库表;当所述第一名称和所述第二名称一致时,判断所述数据操作表达式与所述第二读写属性是否匹配,以及判断所述数据操作表达式与所述寄存器大小是否匹配。
在本实施例中,创建第一数据库表和第二数据库表,将目标代码的行数、寄存器的第一名称、以及数据操作表达式记录到第一数据库表中,将寄存器的第二名称、读写属性、寄存器大小、默认值记录到第二数据库表中。
进一步的,通常情况下第一数据库表中的内容应该与第二数据库表中的内容匹配(例如,第一名称与第二名称一致),先判断第一寄存器信息与第二寄存器信息是否匹配,若不匹配需要输出异常结果,并修改异常结果中出现错误的内容。
设定匹配规则C,用于判断第一数据库表与第二数据库表中寄存器名称是否相同、判断数据操作表达式中的读写属性与寄存器的第二读写属性是否一致,以及判断数据操作表达式操作的数据量与寄存器大小是否匹配等。匹配规则C用代码实现,代码流程为:比对寄存器名称在第一数据库表和第二数据库表中是否存在且一致,比对相同寄存器的读写属性与数据操作表达式是否匹配,比对相同寄存器的大小与数据操作表达式是否匹配。输出匹配结果,并在出现异常结果时,对导致出现异常结果的内容进行修改。
具体的,首先判断第一名称与第二名称是否一致,若一致则进一步判断操作表达式与第二读写属性是否匹配,确定操作表达式对应的第一读写属性;当第一读写属性与第二读写属性一致时,确定数据操作表达式与第二读写属性匹配,否则不匹配,说明读写属性错误,需要重新确认寄存器的读写属性后,将读写属性进行修改(例如第二读写属性为只读的寄存器,在数据操作表达式中的第一读写属性就只能是读取、不能是赋值,如果第一读写属性是读写,那么可以第二读写属性可以是读写操作)。
当数据操作表达式与第二读写属性匹配时,进一步判断数据操作表达式与寄存器大小是否匹配,当数据操作表达式表征有记录数据的操作时,记录数据就会有大小,数据的大小不超出寄存器大小,获取该数据的数据量,当数据量小于或等于寄存器大小时,确定数据操作表达式与寄存器大小匹配,否则不匹配,说明获取的寄存器大小错误或数据操作表达式中处理的数据量错误,需要重新核对后对寄存器大小或数据操作表达式进行修改,以使数据操作表达式和寄存器大小匹配。
在一个可能的实施方式中,当第一数据库表和第二数据库表匹配失败时,接收针对第一数据库表或第二数据库表的目标操作,失败的情况包括以下之一:第一名称和第二名称不一致,或,第一读写操作与第二读写属性不一致,或,数据量大于寄存器大小;根据目标操作修改第一数据库表中的第一寄存器信息,或,根据目标操作修改第二数据库表中的第二寄存器信息。
具体的,在匹配过程中出现以下情况可能是异常结果导致匹配失败,1、寄存器的第一名称在第二数据库表中不存在,或第一名称与第二名称不一致;2、数据操作表达式对寄存器进行了赋值操作,但是该寄存器在第二数据库表中的第二读写属性为只读属性;3、数据操作表达式产生的数据量的大小超出了第二数据库表中的寄存器大小。出现异常后的处理方法可以是接收目标操作,目标操作可以是修改第一寄存器信息或修改第二寄存器信息。有bug测试fail,核查确认是目标代码的问题、还是描述文件的问题并进行修改,以使第一数据库表和第二数据库表匹配,以保证后续操作的正确性。
S23、当所述数据操作表达式与所述第二读写属性匹配,且所述数据操作表达式与所述寄存器大小匹配时,根据所述第一数据库表和所述第二数据库表生成所述目标数据库表。
在本实施例中,当第一数据库表第二数据库表匹配后无异常时,需要将两个表进行关联,设定匹配规则D,用于从第一数据库表和第二数据库表中读取数据写入目标数据库表,匹配规则D用代码实现,代码流程为:当第一名称与第二名称一致,数据操作表达式与第二读写属性匹配,且数据操作表达式与寄存器大小匹配时,读取第一数据库表和第二数据库表,将目标代码的行数、寄存器的第一名称、数据操作表达式、第二名称、第二属性、寄存器的大小、默认值记录到目标数据库表中。
S24、从所述目标数据库表中获取所述寄存器的名称、寄存器大小和默认值;根据所述名称、寄存器大小和默认值按照预设格式生成所述变量定义文本。
在本实施例中,计算机设备中还设置有处理模块,用于变量定义文本以及根据变量定义文本生成被测代码。首先需要对目标数据库表中的信息进行文本拼接,代码流程为:从目标数据库表中读取寄存器的第一名称或第二名称、寄存器大小、默认值等,将其按当前代码所用编程语言的语法的预设格式,通过字符串拼接形成变量定义的文本(例如unsigned int变量名称/寄存器名称=默认值)。这一步的目的是因为软件中使用到的变量需要先定义,所以在软件代码中定义寄存器对应的变量,每个寄存器都定义相应的变量。
S25、从所述目标代码中读取目标子代码;在所述目标子代码中的目标位置写入所述变量定义文本,得到所述被测代码。
在本实施例中,生成变量定义文本后,对目标代码中涉及寄存器操作的部分进行文本替换,代码流程为:打开目标代码文本,逐行读取其中的内容写入到被测代码文本中,在被测代码文本的特定位置(该位置为预先设置,通过行数和寄存器名称确定,在特定行数进行字符匹配)写入文本拼接产生的变量定义文本。从目标数据库表中读取目标代码、寄存器名称、数据操作表达式,逐行读取目标代码文本中的内容,按行号将相应行的数据操作表达式中的中的寄存器名称替换为变量名称,自动插桩,插入到被测代码文本,直至目标代码文本中的内容全部写入到被测代码文本中,得到最终的被测代码。
S26、对所述被测代码进行编译,得到变编译后的所述被测代码;利用编译后的所述被测代码进行白盒测试,得到测试结果。
在本实施例中,得到被测代码后,进行编译验证。调用编译器对被测代码文本进行编译,确认编译通过。再将被测软件代码作为白盒测试的测试对象,通过其中变量值的变化判断单元测试结果。
本发明实施例提供的代码处理方法,通过根据正则表达式从目标代码的获取寄存器的第一名称、行数和数据操作表达式作为第一寄存器信息;根据正则表达式从寄存器的描述文件中获取寄存器的第二名称、第二读写属性、寄存器大小和默认值作为第二寄存器信息;根据第一寄存器信息生成第一数据库表,根据第二寄存器信息生成第二数据库表;当第一名称和第二名称一致时,判断数据操作表达式与第二读写属性是否匹配,以及判断数据操作表达式与寄存器大小是否匹配。当数据操作表达式与第二读写属性匹配,且数据操作表达式与寄存器大小匹配时,根据第一数据库表和第二数据库表生成目标数据库表。从目标数据库表中获取寄存器的名称、寄存器大小和默认值;根据名称、寄存器大小和默认值按照预设格式生成变量定义文本。从目标代码中读取目标子代码;在目标子代码中的目标位置写入变量定义文本,得到被测代码。对被测代码进行编译,得到变编译后的被测代码;利用编译后的被测代码进行白盒测试,得到测试结果。由此可以完成将原软件代码转化为被测软件代码的过程,利用变量定义文本替代寄存器操作,能不依托硬件直接完成软件代码的白盒测试,代码中无需配置硬件的相关操作,当出现缺陷时可以确定是软件代码发生问题,由此能明确区分软件代码缺陷、硬件设备缺陷,无需进行硬件设备相关配置。
图3为本发明实施例提供的一种代码处理装置的结构示意图,如图3所示,该装置具体包括:
获取模块31,用于从目标代码中获取寄存器的第一寄存器信息,所述第一寄存器信息表征所述目标代码中的寄存器的属性信息;
所述获取模块31,还用于从所述寄存器的描述文件中获取所述寄存器的第二寄存器信息,所述第二寄存器信息表征所述描述文件中的寄存器的属性信息;
生成模块32,用于根据所述第一寄存器信息和所述第二寄存器信息生成目标数据库表;
所述生成模块32,还用于根据所述目标数据库表生成所述寄存器对应的变量定义文本,所述变量定义文本用于代替所述目标代码中的寄存器操作;
所述生成模块32,还用于根据所述变量定义文本和所述目标代码生成被测代码
在一个可能的实施方式中,所述获取模块,具体用于根据正则表达式从所述目标代码的获取所述寄存器的第一名称、行数和数据操作表达式作为所述第一寄存器信息;
根据正则表达式从所述寄存器的描述文件中获取寄存器的第二名称、第二读写属性、寄存器大小和默认值作为所述第二寄存器信息。
在一个可能的实施方式中,所述生成模块,具体用于根据所述第一寄存器信息生成第一数据库表,根据所述第二寄存器信息生成第二数据库表;
判断模块33,用于当所述第一名称和所述第二名称一致时,判断所述数据操作表达式与所述第二读写属性是否匹配,以及判断所述数据操作表达式与所述寄存器大小是否匹配;
所述生成模块,具体用于当所述数据操作表达式与所述第二读写属性匹配,且所述数据操作表达式与所述寄存器大小匹配时,根据所述第一数据库表和所述第二数据库表生成所述目标数据库表。
在一个可能的实施方式中,确定模块34,用于确定所述数据操作表达式对应的第一读写属性;
当所述第一读写属性与所述第二读写属性一致时,确定所述数据操作表达式与所述第二读写属性匹配;
当所述数据操作表达式中有记录数据的操作时,确定所述数据操作表达式中记录的数据的数据量;
当所述数据量小于或等于所述寄存器大小时,确定为所述数据操作表达式与所述寄存器大小匹配。
在一个可能的实施方式中,接收模块35,用于当所述第一数据库表和所述第二数据库表匹配失败时,接收针对所述第一数据库表或所述第二数据库表的目标操作,所述失败的情况包括以下之一:所述第一名称和所述第二名称不一致,或,所述第一读写操作与所述第二读写属性不一致,或,所述数据量大于所述寄存器大小;
修改模块36,用于根据所述目标操作修改所述第一数据库表中的第一寄存器信息,或,根据所述目标操作修改所述第二数据库表中的第二寄存器信息。
在一个可能的实施方式中,所述获取模块,具体用于从所述目标数据库表中获取所述寄存器的名称、寄存器大小和默认值;
所述生成模块,具体用于根据所述名称、寄存器大小和默认值按照预设格式生成所述变量定义文本;
从所述目标代码中读取目标子代码;
在所述目标子代码中的目标位置写入所述变量定义文本,得到所述被测代码。
在一个可能的实施方式中,编译模块37,用于对所述被测代码进行编译,得到变编译后的所述被测代码;
利用编译后的所述被测代码进行白盒测试,得到测试结果。
本发明实施例提供的代码处理装置可以是如图3中所示的代码处理装置,可执行如图1-2中代码处理方法的所有步骤,进而实现图1-2所示代码处理方法的技术效果,具体请参照图1-2相关描述,为简洁描述,在此不作赘述。
图4为本发明实施例提供的一种计算机设备的结构示意图,图4所示的计算机设备400包括:至少一个处理器401、存储器402、至少一个网络接口404和其他用户接口403。电子设备400中的各个组件通过总线系统405耦合在一起。可理解,总线系统405用于实现这些组件之间的连接通信。总线系统405除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图4中将各种总线都标为总线系统405。
其中,用户接口403可以包括显示器、键盘或者点击设备(例如,鼠标,轨迹球(trackball)、触感板或者触摸屏等。
可以理解,本发明实施例中的存储器402可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DRRAM)。本文描述的存储器402旨在包括但不限于这些和任意其它适合类型的存储器。
在一些实施方式中,存储器402存储了如下的元素,可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作系统4021和应用程序4022。
其中,操作系统4021,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序4022,包含各种应用程序,例如媒体播放器(Media Player)、浏览器(Browser)等,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序4022中。
在本发明实施例中,通过调用存储器402存储的程序或指令,具体的,可以是应用程序4022中存储的程序或指令,处理器401用于执行各方法实施例所提供的方法步骤,例如包括:
从目标代码中获取寄存器的第一寄存器信息,所述第一寄存器信息表征所述目标代码中的寄存器的属性信息;
从所述寄存器的描述文件中获取所述寄存器的第二寄存器信息,所述第二寄存器信息表征所述描述文件中的寄存器的属性信息;
根据所述第一寄存器信息和所述第二寄存器信息生成目标数据库表;
根据所述目标数据库表生成所述寄存器对应的变量定义文本,所述变量定义文本用于代替所述目标代码中的寄存器操作;
根据所述变量定义文本和所述目标代码生成被测代码。
在一个可能的实施方式中,根据正则表达式从所述目标代码的获取所述寄存器的第一名称、行数和数据操作表达式作为所述第一寄存器信息;
所述从所述寄存器的描述文件中获取所述寄存器的第二寄存器信息,包括:
根据正则表达式从所述寄存器的描述文件中获取寄存器的第二名称、第二读写属性、寄存器大小和默认值作为所述第二寄存器信息。
在一个可能的实施方式中,根据所述第一寄存器信息生成第一数据库表,根据所述第二寄存器信息生成第二数据库表;
当所述第一名称和所述第二名称一致时,判断所述数据操作表达式与所述第二读写属性是否匹配,以及判断所述数据操作表达式与所述寄存器大小是否匹配;
当所述数据操作表达式与所述第二读写属性匹配,且所述数据操作表达式与所述寄存器大小匹配时,根据所述第一数据库表和所述第二数据库表生成所述目标数据库表。
在一个可能的实施方式中,确定所述数据操作表达式对应的第一读写属性;
当所述第一读写属性与所述第二读写属性一致时,确定所述数据操作表达式与所述第二读写属性匹配;
当所述数据操作表达式中有记录数据的操作时,确定所述数据操作表达式中记录的数据的数据量;
当所述数据量小于或等于所述寄存器大小时,确定为所述数据操作表达式与所述寄存器大小匹配。
在一个可能的实施方式中,当所述第一数据库表和所述第二数据库表匹配失败时,接收针对所述第一数据库表或所述第二数据库表的目标操作,所述失败的情况包括以下之一:所述第一名称和所述第二名称不一致,或,所述第一读写操作与所述第二读写属性不一致,或,所述数据量大于所述寄存器大小;
根据所述目标操作修改所述第一数据库表中的第一寄存器信息,或,根据所述目标操作修改所述第二数据库表中的第二寄存器信息。
在一个可能的实施方式中,从所述目标数据库表中获取所述寄存器的名称、寄存器大小和默认值;
根据所述名称、寄存器大小和默认值按照预设格式生成所述变量定义文本;
所述根据所述变量定义文本和所述目标代码生成被测代码,包括:
从所述目标代码中读取目标子代码;
在所述目标子代码中的目标位置写入所述变量定义文本,得到所述被测代码。
在一个可能的实施方式中,对所述被测代码进行编译,得到变编译后的所述被测代码;
利用编译后的所述被测代码进行白盒测试,得到测试结果。
上述本发明实施例揭示的方法可以应用于处理器401中,或者由处理器401实现。处理器401可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器401中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器401可以是通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器402,处理器401读取存储器402中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecific Integrated Circuits,ASIC)、数字信号处理器(Digital Signal Processing,DSP)、数字信号处理设备(DSPDevice,DSPD)、可编程逻辑设备(Programmable LogicDevice,PLD)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
本实施例提供的计算机设备可以是如图4中所示的计算机设备,可执行如图1-2中代码处理方法的所有步骤,进而实现图1-2所示代码处理方法的技术效果,具体请参照图1-2相关描述,为简洁描述,在此不作赘述。
本发明实施例还提供了一种存储介质(计算机可读存储介质)。这里的存储介质存储有一个或者多个程序。其中,存储介质可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘;存储器还可以包括上述种类的存储器的组合。
当存储介质中一个或者多个程序可被一个或者多个处理器执行,以实现上述在设备侧执行的代码处理方法。
所述处理器用于执行存储器中存储的代码处理程序,以实现以下在设备侧执行的代码处理方法的步骤:
从目标代码中获取寄存器的第一寄存器信息,所述第一寄存器信息表征所述目标代码中的寄存器的属性信息;
从所述寄存器的描述文件中获取所述寄存器的第二寄存器信息,所述第二寄存器信息表征所述描述文件中的寄存器的属性信息;
根据所述第一寄存器信息和所述第二寄存器信息生成目标数据库表;
根据所述目标数据库表生成所述寄存器对应的变量定义文本,所述变量定义文本用于代替所述目标代码中的寄存器操作;
根据所述变量定义文本和所述目标代码生成被测代码。
在一个可能的实施方式中,根据正则表达式从所述目标代码的获取所述寄存器的第一名称、行数和数据操作表达式作为所述第一寄存器信息;
所述从所述寄存器的描述文件中获取所述寄存器的第二寄存器信息,包括:
根据正则表达式从所述寄存器的描述文件中获取寄存器的第二名称、第二读写属性、寄存器大小和默认值作为所述第二寄存器信息。
在一个可能的实施方式中,根据所述第一寄存器信息生成第一数据库表,根据所述第二寄存器信息生成第二数据库表;
当所述第一名称和所述第二名称一致时,判断所述数据操作表达式与所述第二读写属性是否匹配,以及判断所述数据操作表达式与所述寄存器大小是否匹配;
当所述数据操作表达式与所述第二读写属性匹配,且所述数据操作表达式与所述寄存器大小匹配时,根据所述第一数据库表和所述第二数据库表生成所述目标数据库表。
在一个可能的实施方式中,确定所述数据操作表达式对应的第一读写属性;
当所述第一读写属性与所述第二读写属性一致时,确定所述数据操作表达式与所述第二读写属性匹配;
当所述数据操作表达式中有记录数据的操作时,确定所述数据操作表达式中记录的数据的数据量;
当所述数据量小于或等于所述寄存器大小时,确定为所述数据操作表达式与所述寄存器大小匹配。
在一个可能的实施方式中,当所述第一数据库表和所述第二数据库表匹配失败时,接收针对所述第一数据库表或所述第二数据库表的目标操作,所述失败的情况包括以下之一:所述第一名称和所述第二名称不一致,或,所述第一读写操作与所述第二读写属性不一致,或,所述数据量大于所述寄存器大小;
根据所述目标操作修改所述第一数据库表中的第一寄存器信息,或,根据所述目标操作修改所述第二数据库表中的第二寄存器信息。
在一个可能的实施方式中,从所述目标数据库表中获取所述寄存器的名称、寄存器大小和默认值;
根据所述名称、寄存器大小和默认值按照预设格式生成所述变量定义文本;
所述根据所述变量定义文本和所述目标代码生成被测代码,包括:
从所述目标代码中读取目标子代码;
在所述目标子代码中的目标位置写入所述变量定义文本,得到所述被测代码。
在一个可能的实施方式中,对所述被测代码进行编译,得到变编译后的所述被测代码;
利用编译后的所述被测代码进行白盒测试,得到测试结果。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种代码的处理方法,其特征在于,包括:
从目标代码中获取寄存器的第一寄存器信息,所述第一寄存器信息表征所述目标代码中的寄存器的属性信息;
从所述寄存器的描述文件中获取所述寄存器的第二寄存器信息,所述第二寄存器信息表征所述描述文件中的寄存器的属性信息;
根据所述第一寄存器信息和所述第二寄存器信息生成目标数据库表;
根据所述目标数据库表生成所述寄存器对应的变量定义文本,所述变量定义文本用于代替所述目标代码中的寄存器操作;
根据所述变量定义文本和所述目标代码生成被测代码。
2.根据权利要求1所述的方法,其特征在于,所述从目标代码中获取寄存器的第一寄存器信息,包括:
根据正则表达式从所述目标代码的获取所述寄存器的第一名称、行数和数据操作表达式作为所述第一寄存器信息;
所述从所述寄存器的描述文件中获取所述寄存器的第二寄存器信息,包括:
根据正则表达式从所述寄存器的描述文件中获取寄存器的第二名称、第二读写属性、寄存器大小和默认值作为所述第二寄存器信息。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一寄存器信息和所述第二寄存器信息生成目标数据库表,包括:
根据所述第一寄存器信息生成第一数据库表,根据所述第二寄存器信息生成第二数据库表;
当所述第一名称和所述第二名称一致时,判断所述数据操作表达式与所述第二读写属性是否匹配,以及判断所述数据操作表达式与所述寄存器大小是否匹配;
当所述数据操作表达式与所述第二读写属性匹配,且所述数据操作表达式与所述寄存器大小匹配时,根据所述第一数据库表和所述第二数据库表生成所述目标数据库表。
4.根据权利要求3所述的方法,其特征在于,所述判断所述数据操作表达式与所述第二读写属性是否匹配,以及判断所述数据操作表达式与所述寄存器大小是否匹配,包括:
确定所述数据操作表达式对应的第一读写属性;
当所述第一读写属性与所述第二读写属性一致时,确定所述数据操作表达式与所述第二读写属性匹配;
当所述数据操作表达式中有记录数据的操作时,确定所述数据操作表达式中记录的数据的数据量;
当所述数据量小于或等于所述寄存器大小时,确定为所述数据操作表达式与所述寄存器大小匹配。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当所述第一数据库表和所述第二数据库表匹配失败时,接收针对所述第一数据库表或所述第二数据库表的目标操作,所述失败的情况包括以下之一:所述第一名称和所述第二名称不一致,或,所述第一读写操作与所述第二读写属性不一致,或,所述数据量大于所述寄存器大小;
根据所述目标操作修改所述第一数据库表中的第一寄存器信息,或,根据所述目标操作修改所述第二数据库表中的第二寄存器信息。
6.根据权利要求5所述的方法,其特征在于,根据所述目标数据库表生成所述寄存器对应的变量定义文本,包括:
从所述目标数据库表中获取所述寄存器的名称、寄存器大小和默认值;
根据所述名称、寄存器大小和默认值按照预设格式生成所述变量定义文本;
所述根据所述变量定义文本和所述目标代码生成被测代码,包括:
从所述目标代码中读取目标子代码;
在所述目标子代码中的目标位置写入所述变量定义文本,得到所述被测代码。
7.根据权利要求1所述的方法,其特征在于,在所述根据所述变量定义文本和所述目标代码生成被测代码之后,所述方法还包括:
对所述被测代码进行编译,得到变编译后的所述被测代码;
利用编译后的所述被测代码进行白盒测试,得到测试结果。
8.一种代码处理装置,其特征在于,包括:
获取模块,用于从目标代码中获取寄存器的第一寄存器信息,所述第一寄存器信息表征所述目标代码中的寄存器的属性信息;
所述获取模块,还用于从所述寄存器的描述文件中获取所述寄存器的第二寄存器信息,所述第二寄存器信息表征所述描述文件中的寄存器的属性信息;
生成模块,用于根据所述第一寄存器信息和所述第二寄存器信息生成目标数据库表;
所述生成模块,还用于根据所述目标数据库表生成所述寄存器对应的变量定义文本,所述变量定义文本用于代替所述目标代码中的寄存器操作;
所述生成模块,还用于根据所述变量定义文本和所述目标代码生成被测代码。
9.一种计算机设备,其特征在于,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的代码生成程序,以实现权利要求1~7中任一项所述的代码处理方法。
10.一种存储介质,其特征在于,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求1~7中任一项所述的代码处理方法。
CN202311073175.0A 2023-08-23 2023-08-23 代码的处理方法、装置、计算机设备及存储介质 Pending CN117093490A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311073175.0A CN117093490A (zh) 2023-08-23 2023-08-23 代码的处理方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311073175.0A CN117093490A (zh) 2023-08-23 2023-08-23 代码的处理方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN117093490A true CN117093490A (zh) 2023-11-21

Family

ID=88774633

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311073175.0A Pending CN117093490A (zh) 2023-08-23 2023-08-23 代码的处理方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN117093490A (zh)

Similar Documents

Publication Publication Date Title
US7673292B2 (en) Auto conversion of tests between different functional testing tools
CN101339534B (zh) 一种软件测试的方法及装置
CN111209206B (zh) 一种软件产品的自动测试方法及系统
CN110018954B (zh) 代码质量检测、代码检测质量的评估方法、装置及设备
CN112328305B (zh) 一种眼图测试方法、装置、电子设备及可读存储介质
US20050137844A1 (en) Method for generating a language-independent regression test script
JP2012150535A (ja) プログラム検証方法及び検証プログラム
CN111552475A (zh) 一种半导体存储器老化测试的Workload测试文件编译方法、测试方法及系统
CN114924737A (zh) 一种电池管理系统源代码集成测试方法、测试装置及电子设备
CN113742215A (zh) 一种自动配置和调用测试工具进行测试分析的方法及系统
CN110765008B (zh) 一种数据处理方法及装置
CN111078529B (zh) 客户端写入模块测试方法、装置、电子设备
CN116431467A (zh) 页面测试方法、装置、设备及介质
CN117093490A (zh) 代码的处理方法、装置、计算机设备及存储介质
CN112463633B (zh) 一种片上存储器的地址译码校验方法、装置、设备及介质
KR101534493B1 (ko) 구조 변환에 기초한 소스코드 보안 약점 탐지 장치 및 방법
JP2005174045A (ja) ソースプログラム変換装置、ソースプログラム変換方法、ソースプログラム変換プログラム、および、プログラム記録媒体
TW201327211A (zh) 代碼智慧生成系統及方法
CN112148581A (zh) 代码规范检查方法、装置、系统及存储介质
CN113377586B (zh) 一种服务器自动化检测方法、装置及存储介质
CN112035367B (zh) 一种大数据平台工作流正确性的校验方法及系统
JP3745968B2 (ja) 試験システム及び試験方法及び試験プログラム及び試験プログラムを記録した計算機で読み取り可能な記録媒体
CN112527657B (zh) 单元测试中自动插桩的方法及设备
CN111427731A (zh) 一种自动化拆分码流及验证码流的测试方法和系统
CN115344472A (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