CN109359055B - 一种数据测试的方法和设备 - Google Patents

一种数据测试的方法和设备 Download PDF

Info

Publication number
CN109359055B
CN109359055B CN201811555582.4A CN201811555582A CN109359055B CN 109359055 B CN109359055 B CN 109359055B CN 201811555582 A CN201811555582 A CN 201811555582A CN 109359055 B CN109359055 B CN 109359055B
Authority
CN
China
Prior art keywords
language
code
structural
information defined
structural body
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
CN201811555582.4A
Other languages
English (en)
Other versions
CN109359055A (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.)
Kyland Technology Co Ltd
Original Assignee
Kyland Technology 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 Kyland Technology Co Ltd filed Critical Kyland Technology Co Ltd
Priority to CN201811555582.4A priority Critical patent/CN109359055B/zh
Publication of CN109359055A publication Critical patent/CN109359055A/zh
Application granted granted Critical
Publication of CN109359055B publication Critical patent/CN109359055B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/51Source to source

Abstract

本发明公开了一种数据测试的方法和设备,用以解决现有技术中在进行数据测试时,工作效率低的问题。本发明将接收到的C语言定义的结构体成员信息转换成Go语言结构体代码;将所述Go语言结构体代码生成执行程序;运行所述执行程序,根据运行结果显示结构体成员的相关信息。由于将C语言定义的结构体成员信息转换成GO语言结构体代码,根据转换生成的GO语言结构体代码生成执行程序,运行根据GO语言结构体代码生成的执行程序,显示结构体成员的相关信息,在此过程中不需要编写代码,直接运行程序得到C语言的结构体成员的相关信息,提高工作效率。

Description

一种数据测试的方法和设备
技术领域
本发明涉及嵌入式系统领域,特别涉及一种数据测试的方法和设备。
背景技术
对于C/C++开发的软件,经常见到将结构体保存为二进制流,并通过二进制流在不同系统或软件模块之间传递结构化的数据信息。
目前,C/C++语言,以其占用资源少,执行效率高等优点,被广泛使用在嵌入式系统内。主要应用在很多可靠性要求高的场景,比如:无人守职的物联网硬件、工业控制软件内核、无人机控制系统软件等。对于这些可靠性要求高的场景,需要对C/C++语言进行单元测试。
传统测试有如下两种方式:
方式一:通过人肉眼观察二进制输出结果,一般是使用WinHex转换为十六进制显示,用户无法直观根据显示结果确定C/C++语言中的结构体成员,进而需要通过显示的十六进制进行处理确定结构体成员,浪费时间,工作效率低。
方式二:通过C语言编码采用printf函数逐个输出结构体成员,需要编写大量C语言代码,工作效率低。
综上,现有技术中在进行数据测试时,工作效率较低。
发明内容
本发明提供一种数据测试的方法和设备,用以解决现有技术中在进行数据测试时,工作效率低的问题。
第一方面,本发明实施例提供一种数据测试的方法,该方法包括:
将接收到的C语言定义的结构体成员信息转换成Go语言结构体代码;
将所述Go语言结构体代码生成执行程序;
运行所述执行程序,根据运行结果显示结构体成员的相关信息。
上述方法,将C语言定义的结构体成员信息转换成GO语言结构体代码,根据转换生成的GO语言结构体代码生成执行程序,运行根据GO语言结构体代码生成的执行程序,运行后显示结构体成员的相关信息,在此过程中不需要编写代码,直接运行程序就可得到C语言的结构体成员的相关信息,提高工作效率。
在一种可能的实现方式中,所述将接收到的C语言定义的结构体成员信息转换成Go语言结构体代码时,根据二进制流的对应关系,按照接收到的GO预定文件格式将C语言定义的结构体成员信息转换成Go语言结构体代码;
所述将所述Go语言结构体代码生成执行程序时,通过所述Go编译器对所述Go语言结构体代码进行编译,生成所述执行程序。
上述方法,根据将C语言定义的结构体信息转换成GO语言结构体代码,并根据GO语言结构体代码生成执行程序的具体过程,可以准确的确定执行文件。
在一种可能的实现方式中,通过下列方式确定所述C语言定义的结构体成员信息:
对所述C语言定义的结构体成员信息对应的C语言源文件进行词法分析,识别所述C语言源文件中的变量名;
根据所述变量名进行语法分析,确定C语言源文件中的语句和表达式;
根据所述C语言源文件中的语句和表达式生成语法树;
根据所述语法树中的节点确定所述C语言定义的结构体成员信息。
上述方法,对接收到的C语言源代码进行词法分析、语法分析、遍历整个语法树,确定C语言定义的结构体成员信息,此过程可以确定出C语言源代码中所有的C语言定义的结构体成员信息,保证确定的C语言结构体定义的成员信息比较完整。
在一种可能的实现方式中,所述根据运行结果显示结构体成员的相关信息时,根据运行结果显示结构体成员的相关信息对应的二进制结构体文本内容。
上述方法,直观的显示出二进制文本对应的结构体成员及结构体成员对应的取值,提高了工作效率。
在一种可能的实现方式中,所述运行所述执行程序,根据运行结果显示结构体成员的相关信息之后,通过代码编写接口获取校验检测代码;
运行所述校验检测代码,以检测显示的结构体成员的相关信息是否准确。
上述方法,通过代码编写接口获取校验检测代码,用于检测运行执行文件后显示的结构体成员的相关信息是否准确,可以保证C/C++结构体保存为二进制流内容的完整性和准确性。
第二方面,本发明实施例还提供一种数据测试的设备,该设备包括:至少一个处理单元及至少一个存储单元,其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行下列过程:
将接收到的C语言定义的结构体成员信息转换成Go语言结构体代码;
将所述Go语言结构体代码生成执行程序;
运行所述执行程序,根据运行结果显示结构体成员的相关信息。
第三方面,本发明实施例提供另一种数据测试的设备,该设备包括:转换模块,生成模块,运行模块;
转换模块:用于将接收到的C语言定义的结构体成员信息转换成Go语言结构体代码;
生成模块:用于将所述Go语言结构体代码生成执行程序;
运行模块:用于运行所述执行程序,根据运行结果显示结构体成员的相关信息。
第四方面,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中包括程序代码,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
第五方面,本发明还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
另外,第二方面至第五方面中任一种实现方式所带来的技术效果可参见第一方面中不同实现方式所带来的技术效果,此处不再赘述。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据测试的方法流程图;
图2为本发明实施例提供的一种数据测试的整体方法流程图;
图3为本发明实施例提供的一种数据测试的设备结构图;
图4为本发明实施例提供的另一种数据测试的设备结构图。
具体实施方式
本发明实施例描述的架构以及业务场景是为了更加清楚的说明本发明实施例的技术方案,并不构成对于本发明实施例提供的技术方案的限定,本领域普通技术人员可知,随着新业务场景的出现,本发明实施例提供的技术方案对于类似的技术问题,同样适用。
目前C/C++语言被广泛用于嵌入式系统内,尤其是可靠性要求高的场所,比如:无人守职的物联网硬件、工业控制软件内核、无人机控制系统软件等;
由于需要较高的可靠性,因此需要对C/C++语言进行单元测试,传统的测试方式为:通过C语言编码采用printf函数逐个输出结构体成员,需要编写大量C语言代码,工作效率低。
因此本发明提供一种数据测试的方法,主要用于对嵌入式系统中结构体数据进行测试,本发明将C语言定义的结构体信息转换成GO语言结构体代码,并将转换生成的GO语言结构体代码编译成执行程序,并运行生成的执行程序,即可得到结构体成员的相关信息,不需要编写代码,提高工作效率。
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
如图1所示,为本发明的一种数据测试的方法流程图,具体包括如下步骤:
步骤100,将接收到的C语言定义的结构体成员信息转换成Go语言结构体代码;
步骤110,将所述Go语言结构体代码生成执行程序;
步骤120,运行所述执行程序,根据运行结果显示结构体成员的相关信息。
在本发明实施例中,将C语言定义的结构体成员信息转换成GO语言结构体代码,根据转换生成的GO语言结构体代码生成执行程序,运行根据GO语言结构体代码生成的执行程序,运行后显示结构体成员的相关信息,在此过程中不需要编写代码,直接运行程序就可得到C语言的结构体成员的相关信息,提高工作效率。
在进行数据测试之前,还需要定义头文件,头文件主要对各个被调用函数给出一个描述,且用户程序要按照头文件中的接口声明来调用相关函数或变量。
其中,C++/C程序的头文件以".h"为后缀,假设在嵌入式开发过程中定义了:DwFileTable.h和fixedString.h两个头文件,其中DwFileTable结构体用于定义上位机发送来的数据结构。
需要说明的是,头文件中的内容是由用户自身定义的,即用户将需要解析的C语言源文件发在对应的".h"头文件。
当接收到用户输入的.h C语言头文件和一个GO转换信息文件后,解析用户输入的.h C语言头文件中C语言定义的结构体成员信息,并将解析出的C语言定义的结构体成员信息根据二进制流的对应关系,按照接收到的GO预定文件中的GO语言结构体,将C语言定义的结构体成员信息转换生成二进制兼容的GO语言结构体代码。
其中,所述按照接收到的GO预定文件中的GO语言结构体,将C语言定义的结构体成员信息转换生成二进制兼容的GO语言结构体代码,主要是根据GO预定文件中设置的GO结构体命名,将C语言定义的结构体成员信息转换成Go语言结构体代码。
需要说明的是,在将C语言定义的结构体成员信息转换成GO语言结构体代码时,可以不按照GO预订文件中的GO语言结构体对C语言定义的结构体成员信息进行转换,此时将确定的所有C语言定义的结构体成员信息都进行转换。
可选的,通过下列方式确定所述C语言定义的结构体成员信息:
对所述C语言定义的结构体成员信息对应的C语言源文件进行词法分析,识别所述C语言源文件中的变量名;
根据所述变量名进行语法分析,确定C语言源文件中的语句和表达式;
根据所述C语言源文件中的语句和表达式生成语法树;
根据所述语法树中的节点确定所述C语言定义的结构体成员信息。
具体的,在确定接收到用户输入的.h C语言头文件后,首先通过C编译器对.h C语言头文件中的C语源代码进行词法分析,识别出C语言源代码中的变量名,变量名主要为关键字、标示符、各种符号(包括逗号、中括号、大括号、分号等);
在进行词法分析后,进一步的根据确定的变量名对.h C语言头文件中的C语源代码进行语法分析,分析出.h C语言头文件中的C语源代码中的语句和表达式;
其中,所述语句包括以下形式的结构体声明语句:
typedef struct{
数据类型member1;
数据类型member2;
}结构体标识符;
经过语法分析生成语法树并保存所述语法树。
遍历整个语法树,在确定所述语法树的树节点时即遇到结构体声明语句节点时,向树节点内的子节点进行遍历,确定子节点包含的C语言定义的结构体成员信息。
在实施中,对接收到的C语言源代码进行词法分析、语法分析、遍历整个语法树,确定语法树对应的C语言结构体定义预定文件,并遍历节点树内的子节点确定C语言定义的结构体成员信息,此过程可以准确的确定出C语言源代码中所有的C语言定义的结构体成员信息,保证确定的C语言结构体定义的成员信息比较完整。
在遍历语法树的过程,在确定所述语法树的树节点时,即遇到结构体声明语句节点时,将该节点定义的C语言结构体定义源码输入到GO预定文件缓冲区内;并继续向所述树节点内的子节点进行遍历,确定所述子节点包含的C语言结构体成员信息,并将所述树节点内子节点包含的C语言结构体成员信息输入GO预定文件缓冲区内;
在GO预定文件缓冲区内存储的内容为转换后的Go语言结构体代码;
在转换过程中主要根据二进制流的对应关系,按照接收到的GO预定文件格式将C语言定义的结构体成员信息转换成Go语言结构体代码;
如表1所示,为C数据类型和GO数据类型对照表。
Figure BDA0001911792500000071
Figure BDA0001911792500000081
表1C数据类型和GO数据类型对照表
将GO预定文件缓冲区的内容,即转换生成的GO语言结构体代码保存到GO预定文件里。
进一步的,通过Go编译器对所述Go语言结构体代码进行编译,生成所述执行程序。
运行所述执行程序,根据运行结果显示结构体成员的相关信息时,主要根据运行结果显示结构体成员的相关信息对应的二进制结构体文本内容。
其中,所述结构体成员的相关信息主要为结构体成员和结构体成员对应的取值。
由于GO编译器中存在二进制转换工具,因此在运行所述执行文件时,执行文件的显示结果为:结构体成员的相关信息对应的二进制结构体文本内容,可以直接打印出人可阅读的结构体成员的取值。
比如,运行所述执行程序后可以看到执行结果为:&{abc 3 9}。
这是二进制文件的结构体内容,三个成员的值分别为:
File_name为abc;
Offset为3;
Length为9。
在实施中,可以直观的显示出二进制文本对应的结构体成员及结构体成员对应的取值,不需要人工进一步读取,提高了工作效率。
需要说明的是,在生成所述执行程序的同时还生成了校验接口模板GO代码,所述校验接口模板GO代码用于判断显示结构是否正确。
可选的,所述运行所述执行程序,根据运行结果显示结构体成员的相关信息之后,还包括:
通过代码编写接口获取校验检测代码;
运行所述校验检测代码,以检测显示的结构体成员的相关信息是否准确。
在想测试人员展示结构体成员的相关信息后,向测试人员展示代码编写接口(校验接口模板GO代码编写接口),并向测试人员展示有效校验接口模板GO代码,测试人员基于校验接口GO代码在代码编写接口内编写针对所述执行文件的有效性校验检测代码。
具体的,测试人员在自动生成的模板代码基础上,针对每个结构体,编写检测代码实现检测用的回调函数,用于测试GO结构成员的有效性。
检测函数可以是类似于下述的GO语言函数:
Func(name string,v interface{})bool;
上述函数为由测试人员实现的回调函数,其中参数name为结构体示例成员全名称;参数v是传入结构体的值,是interface{}类型,可以通过GO语言类型断言转为其真实类型,从而获取成员值来参与有效性判断。
在实施中,通过代码编写接口获取校验检测代码,用于检测运行执行文件后显示的结构体成员的相关信息是否准确,可以保证C/C++结构体保存为二进制流内容的完整性和准确性。
需要说明的是,在本发明实施例中,可以将转换后的GO语言结构体代码和测试人员编译的检验检测代码一起输入到GO编译器中,由GO编译器编译生成可运行的执行文件,此时在运行执行文件的同时就可以确定C/C++保存为二进制流的内容是否完整准确,不需要先确定C/C++保存为二进制流的内容,在确定内容是否完整准确。
如图2所示,为本发明实施例提供的一种数据测试的整体方法流程图,包括如下步骤:
步骤200,确定用户输入的.h C语言头文件和GO转换信息文件;
步骤210,对.h C语言头文件中的C语言源码文件进行词法分析、语法分析、遍历语法树,确定C语言源码文件中C语言定义的结构体成员信息;
步骤220,将所述C语言定义的结构体成员信息转换成GO语言结构体代码;
步骤230,对转换后的结构体代码进行编译生成执行文件及校验接口模板GO代码编写接口;
步骤240,运行所述执行文件,生成结构体成员信息对应的二进制结构体文本内容,并显示;
步骤250,通过校验接口模板GO代码编写接口接收校验检测代码;
步骤260,将所述校验检测代码及所述执行文件一起执行,确定所述执行文件的显示结果是否正确。
在一些可能的实施方式中,本发明实施例提供的数据测试的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序代码在计算机设备上运行时,程序代码用于使计算机设备执行本说明书中描述的根据本发明各种示例性实施方式的数据测试的方法中的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
根据本发明的实施方式的用于数据转发控制的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在服务器设备上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被信息传输、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由周期网络动作系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明处理的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算设备,或者,可以连接到外部计算设备。
本发明实施例针对数据测试的方法还提供一种计算设备可读存储介质,即断电后内容不丢失。该存储介质中存储软件程序,包括程序代码,当程序代码在计算设备上运行时,该软件程序在被一个或多个处理器读取并执行时可实现本发明实施例上面任何一种数据测试时的方案。
基于同一发明构思,本发明实施例中还提供了一种数据测试的设备,由于该设备对应的是本发明实施例数据测试的方法对应的设备,并且该设备解决问题的原理与该方法相似,因此该设备的实施可以参见方法的实施,重复之处不再赘述。
如图3所示,为本发明实施例提供的一种数据测试的设备结构图,该设备具体包括:至少一个处理单元300及至少一个存储单元301,其中,所述存储单元301存储有程序代码,当所述程序代码被所述处理单元300执行时,使得所述处理单元300执行下列过程:
将接收到的C语言定义的结构体成员信息转换成Go语言结构体代码;
将所述Go语言结构体代码生成执行程序;
运行所述执行程序,根据运行结果显示结构体成员的相关信息。
可选的,所述处理单元300具体用于:
根据二进制流的对应关系,按照接收到的GO预定文件格式将C语言定义的结构体成员信息转换成Go语言结构体代码;
通过所述Go编译器对所述Go语言结构体代码进行编译,生成所述执行程序。
可选的,通过下列方式确定所述C语言定义的结构体成员信息:
对所述C语言定义的结构体成员信息对应的C语言源文件进行词法分析,识别所述C语言源文件中的变量名;
根据所述变量名进行语法分析,确定C语言源文件中的语句和表达式;
根据所述C语言源文件中的语句和表达式生成语法树;
根据所述语法树中的节点确定所述C语言定义的结构体成员信息。
可选的,所述处理单元300具体用于:
根据运行结果显示结构体成员的相关信息对应的二进制结构体文本内容。
可选的,所述处理单元300还用于:
通过代码编写接口获取校验检测代码;
运行所述校验检测代码,以检测显示的结构体成员的相关信息是否准确。
基于同一发明构思,本发明实施例还提供另一种数据测试的设备,具体的如图4所示,为本发明实施例提供的另一种数据测试的设备结构图,具体包括:转换模块400,生成模块410,运行模块420;
所述转换模块400:用于将接收到的C语言定义的结构体成员信息转换成Go语言结构体代码;
所述生成模块410:用于将所述Go语言结构体代码生成执行程序;
所述运行模块420:用于运行所述执行程序,根据运行结果显示结构体成员的相关信息。
以上参照示出根据本发明实施例的方法、装置(系统)和/或计算机程序产品的框图和/或流程图描述本发明。应理解,可以通过计算机程序指令来实现框图和/或流程图示图的一个块以及框图和/或流程图示图的块的组合。可以将这些计算机程序指令提供给通用计算机、专用计算机的处理器和/或其它可编程数据处理装置,以产生机器,使得经由计算机处理器和/或其它可编程数据处理装置执行的指令创建用于实现框图和/或流程图块中所指定的功能/动作的方法。
相应地,还可以用硬件和/或软件(包括固件、驻留软件、微码等)来实施本发明。更进一步地,本发明可以采取计算机可使用或计算机可读存储介质上的计算机程序产品的形式,其具有在介质中实现的计算机可使用或计算机可读程序代码,以由指令执行系统来使用或结合指令执行系统而使用。在本发明上下文中,计算机可使用或计算机可读介质可以是任意介质,其可以包含、存储、通信、传输、或传送程序,以由指令执行系统、装置或设备使用,或结合指令执行系统、装置或设备使用。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (6)

1.一种数据测试的方法,其特征在于,该方法包括:
将接收到的C语言定义的结构体成员信息转换成Go语言结构体代码;
将所述Go语言结构体代码生成执行程序;并生成校验接口模板GO代码;
运行所述执行程序,根据运行结果显示结构体成员的相关信息;
通过代码编写接口获取校验检测代码;其中,所述校验检测代码是基于所述校验接口模板GO代码在所述代码编写接口生成的;
运行所述校验检测代码,以检测显示的结构体成员的相关信息是否准确;
其中,根据运行结果显示结构体成员的相关信息,包括:
根据运行结果显示结构体成员的相关信息对应的二进制结构体文本内容;其中,所述二进制结构体文本内容包括二进制文本对应的结构体成员及结构体成员对应的取值。
2.如权利要求1所述的方法,其特征在于,所述将接收到的C语言定义的结构体成员信息转换成Go语言结构体代码,包括:
根据二进制流的对应关系,按照接收到的GO预定文件格式将C语言定义的结构体成员信息转换成Go语言结构体代码;
所述将所述Go语言结构体代码生成执行程序,包括:
通过Go编译器对所述Go语言结构体代码进行编译,生成所述执行程序。
3.如权利要求2所述的方法,其特征在于,通过下列方式确定所述C语言定义的结构体成员信息:
对所述C语言定义的结构体成员信息对应的C语言源文件进行词法分析,识别所述C语言源文件中的变量名;
根据所述变量名进行语法分析,确定C语言源文件中的语句和表达式;
根据所述C语言源文件中的语句和表达式生成语法树;
根据所述语法树中的节点确定所述C语言定义的结构体成员信息。
4.一种数据测试的设备,其特征在于,该设备包括:至少一个处理单元及至少一个存储单元,其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行下列过程:
将接收到的C语言定义的结构体成员信息转换成Go语言结构体代码;
将所述Go语言结构体代码生成执行程序;并生成校验接口模板GO代码;
运行所述执行程序,根据运行结果显示结构体成员的相关信息;
所述处理单元还用于:
通过代码编写接口获取校验检测代码;其中,所述校验检测代码是基于所述校验接口模板GO代码在所述代码编写接口生成的;
运行所述校验检测代码,以检测显示的结构体成员的相关信息是否准确;
所述处理单元具体用于:
根据运行结果显示结构体成员的相关信息对应的二进制结构体文本内容;
其中,所述二进制结构体文本内容包括二进制文本对应的结构体成员及结构体成员对应的取值。
5.如权利要求4所述的设备,其特征在于,所述处理单元具体用于:
根据二进制流的对应关系,按照接收到的GO预定文件格式将C语言定义的结构体成员信息转换成Go语言结构体代码;
通过Go编译器对所述Go语言结构体代码进行编译,生成所述执行程序。
6.如权利要求4所述的设备,其特征在于,通过下列方式确定所述C语言定义的结构体成员信息:
对所述C语言定义的结构体成员信息对应的C语言源文件进行词法分析,识别所述C语言源文件中的变量名;
根据所述变量名进行语法分析,确定C语言源文件中的语句和表达式;
根据所述C语言源文件中的语句和表达式生成语法树;
根据所述语法树中的节点确定所述C语言定义的结构体成员信息。
CN201811555582.4A 2018-12-19 2018-12-19 一种数据测试的方法和设备 Active CN109359055B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811555582.4A CN109359055B (zh) 2018-12-19 2018-12-19 一种数据测试的方法和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811555582.4A CN109359055B (zh) 2018-12-19 2018-12-19 一种数据测试的方法和设备

Publications (2)

Publication Number Publication Date
CN109359055A CN109359055A (zh) 2019-02-19
CN109359055B true CN109359055B (zh) 2022-04-15

Family

ID=65329120

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811555582.4A Active CN109359055B (zh) 2018-12-19 2018-12-19 一种数据测试的方法和设备

Country Status (1)

Country Link
CN (1) CN109359055B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111158690B (zh) * 2020-01-02 2023-11-17 北京东土科技股份有限公司 桌面应用框架、构建方法、桌面应用运行方法及存储介质
CN113590489A (zh) * 2021-08-03 2021-11-02 杭州默安科技有限公司 一种基于Golang语言的IAST安全测试方法和系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106569835A (zh) * 2016-11-14 2017-04-19 济南浪潮高新科技投资发展有限公司 一种基于go语言控制反转组件的实现方法
CN108123820A (zh) * 2016-11-29 2018-06-05 北京神州泰岳软件股份有限公司 一种网络设备信息采集方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106569835A (zh) * 2016-11-14 2017-04-19 济南浪潮高新科技投资发展有限公司 一种基于go语言控制反转组件的实现方法
CN108123820A (zh) * 2016-11-29 2018-06-05 北京神州泰岳软件股份有限公司 一种网络设备信息采集方法和装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
《将c语言的结构体定义变成对应的golang语言的结构体定义,并将golang语言结构体变量的指针传递给c语言,cast C struct to Go struct》;welhzh;《https://studygolang.com/articles/13089》;20180602;网页全文 *
《将c语言的结构体定义变成对应的golang语言的结构体定义,并将golang语言结构体变量的指针传递给c语言,cast C struct to Go struct》;微信公众号-共鸣圈;《https://www.cnblogs.com/welhzh/p/9108603.html》;20180529;第1-6页 *
《将c语言的结构体定义变成对应的golang语言的结构体定义,并将golang语言结构体变量的指针传递给c语言,cast C struct to Go struct》;楼里打扫;《https://www.bbsmax.com/A/kvJ3Gy0QJg/》;20180529;网页全文 *

Also Published As

Publication number Publication date
CN109359055A (zh) 2019-02-19

Similar Documents

Publication Publication Date Title
US8601453B2 (en) COBOL to bytecode translation
US8806452B2 (en) Transformation of computer programs and eliminating errors
US20070050704A1 (en) XML compiler that will generate an application specific XML parser
US20110289484A1 (en) Method and System for Script Processing for Web-Based Applications
US10360004B2 (en) Using dynamic information to refine control flow graphs
US20070113221A1 (en) XML compiler that generates an application specific XML parser at runtime and consumes multiple schemas
CN108595171B (zh) 对象的模型生成方法、装置、设备及存储介质
CN110059006B (zh) 代码审计方法及装置
CN108595334B (zh) 一种计算Java程序动态切片的方法、装置及可读存储介质
CN109359055B (zh) 一种数据测试的方法和设备
KR102546424B1 (ko) 학습용 데이터 생성 장치, 소스 코드 오류 분석 장치 및 방법
CN115145575A (zh) 一种高级语言的解析方法、设备和计算机可读存储介质
US8819645B2 (en) Application analysis device
US11604774B2 (en) Method and apparatus of converting schema in deep learning framework, and computer storage medium
CN114036055A (zh) 一种xmind测试用例与jmeter脚本互转的系统
CN113448874A (zh) 一种单元测试脚本的生成方法及装置
US20140149970A1 (en) Optimising a compilation parser for parsing computer program code in arbitrary applications
US11650802B2 (en) Idiomatic source code generation
CN116069633B (zh) 代码的检验方法、装置、电子设备及存储介质
CN116126347B (zh) 一种低代码应用程序的文件编译系统和方法
CN114265582A (zh) 一种领域特定语言设计方法、装置、设备及存储介质
CN112286784B (zh) 一种测试用例生成方法、装置、服务器及存储介质
Poornima et al. Lexical analysis using JFLEX tool
Putra et al. CNT: Semi-Automatic Translation from CWL to Nextflow for Genomic Workflows
CN116932073A (zh) 一种基于Clang的AUTOSAR符合性检测方法及装置

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
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20190219

Assignee: Beijing Shuili Intelligent Building Technology Co.,Ltd.

Assignor: KYLAND TECHNOLOGY Co.,Ltd.

Contract record no.: X2022990000047

Denomination of invention: A method and equipment for data testing

License type: Common License

Record date: 20220121

EE01 Entry into force of recordation of patent licensing contract
GR01 Patent grant
GR01 Patent grant