CN112130837A - 一种代码处理方法、装置及存储介质 - Google Patents

一种代码处理方法、装置及存储介质 Download PDF

Info

Publication number
CN112130837A
CN112130837A CN202011021797.5A CN202011021797A CN112130837A CN 112130837 A CN112130837 A CN 112130837A CN 202011021797 A CN202011021797 A CN 202011021797A CN 112130837 A CN112130837 A CN 112130837A
Authority
CN
China
Prior art keywords
code
file
serialization
field
data file
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.)
Granted
Application number
CN202011021797.5A
Other languages
English (en)
Other versions
CN112130837B (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 CN202011021797.5A priority Critical patent/CN112130837B/zh
Publication of CN112130837A publication Critical patent/CN112130837A/zh
Application granted granted Critical
Publication of CN112130837B publication Critical patent/CN112130837B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Library & Information Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种代码处理方法、装置及存储介质,本申请实施例可以获取待处理的代码文件;对所述代码文件进行解析,以提取所述代码文件中具有注释标识的字段;将所述字段写入预设文件中,以生成描述文件;根据所述描述文件对目标源代码模板进行字段填充,以生成序列化代码;对所述序列化代码执行序列化操作,并输出数据文件。实现了对代码文件中数据结构直接序列化,使用方便并且能保持代码简洁,提高了对代码处理的便捷性,提升了开发效率。

Description

一种代码处理方法、装置及存储介质
技术领域
本申请涉及计算机技术领域,具体涉及一种代码处理方法、装置及存储介质。
背景技术
目前,在对代码进行序列化或反序列化的方案中,可以利用JavaScript对象简谱(JavaScript Object Notation,JSON)数据交换语言来实现,但是需要使用纯文本格式存储,这样会占用较大的磁盘空间,以及读取和解析速度慢。并且,无法对现有数据结构直接序列化,需要将现有结构转换成JSON对象才能序列化,使用不方便,以及无法使用继承等面向对象特性,降低了开发效率。
发明内容
本申请实施例提供一种代码处理方法、装置及存储介质,可以提高对代码处理的便捷性,以及提升开发效率。
为解决上述技术问题,本申请实施例提供以下技术方案:
本申请实施例提供了一种代码处理方法,包括:
获取待处理的代码文件;
对所述代码文件进行解析,以提取所述代码文件中具有注释标识的字段;
将所述字段写入预设文件中,以生成描述文件;
根据所述描述文件对目标源代码模板进行字段填充,以生成序列化代码;
对所述序列化代码执行序列化操作,并输出数据文件。
根据本申请的一个方面,还提供了一种代码处理装置,包括:
获取单元,用于获取待处理的代码文件;
解析单元,用于对所述代码文件进行解析,以提取所述代码文件中具有注释标识的字段;
生成单元,用于将所述字段写入预设文件中,以生成描述文件;
填充单元,用于根据所述描述文件对目标源代码模板进行字段填充,以生成序列化代码;
执行单元,用于对所述序列化代码执行序列化操作,并输出数据文件。
在一实施方式中,所述解析单元具体用于:
对所述代码文件进行解析,以提取所述代码文件中数据结构的起始标识和终止标识;
通过正则表达式对所述起始标识和终止标识之间的代码内容进行字段匹配,得到具有注释标识的字段。
在一实施方式中,所述填充单元具体用于:
识别所述目标源代码模板中待填充的位置;
遍历所述描述文件中具有注释标识的字段,以通过所述字段对所述待填充的位置进行填充,生成序列化代码。
在一实施方式中,所述执行单元具体用于:
对所述序列化代码中的每个字段进行赋值,得到赋值后的序列化代码;
获取所述序列化代码中的类名字段,根据所述类名字段查找预设子类的序列化方法;
调用所述序列化方法对所述赋值后的序列化代码执行序列化操作,并输出数据文件。
在一实施方式中,所述执行单元具体用于:
当检测到所述序列化代码中设置有表格数据结构标识时,获取表格数据文件;
调用预设的序列化方法基于所述表格数据文件,对所述序列化代码执行序列化操作,并输出数据文件。
在一实施方式中,所述代码处理装置还包括:
导出单元,用于当检测到所述序列化代码中的目标类设置有脚本标识时,将所述目标类导出给目标脚本,以使得所述目标脚本执行所述目标类的功能。
在一实施方式中,所述代码处理装置还包括:
提取单元,用于提取所述数据文件中字段的字段标识,并根据所述字段标识读取所述字段的字段内容;
调用单元,用于调用预设的反序列化方法基于所述字段内容,对所述数据文件执行反序列化操作。
在一实施方式中,所述代码处理装置还包括:
编辑界面生成单元,用于基于所述描述文件和所述数据文件,生成编辑界面;
编辑单元,用于接收在所述编辑界面内输入的编辑指令,根据所述编辑指令对所述数据文件进行编辑,得到编辑后的数据文件。
根据本申请的一个方面,还提供了一种计算机设备,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时执行本申请实施例提供的任一种代码处理方法。
根据本申请的一个方面,还提供了一种存储介质,所述存储介质用于存储计算机程序,所述计算机程序被处理器加载,以执行本申请实施例提供的任一种代码处理方法。
本申请实施例可以获取待处理的代码文件,对代码文件进行解析,以提取代码文件中具有注释标识的字段;然后可以将字段写入预设文件中,以生成描述文件,根据描述文件对目标源代码模板进行字段填充,以生成序列化代码;此时可以对序列化代码执行序列化操作,并输出数据文件。该方案可以直接基于代码文件得到的描述文件生成序列化代码,并对序列化代码执行序列化操作,无需进行对象转换等操作,以及不需要在代码文件的现有结构上添加任何代码,实现了对代码文件中数据结构直接序列化,使用方便并且能保持代码简洁,还可以支持多态,提高了对代码处理的便捷性,大大提升了开发效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的代码处理系统的场景示意图;
图2是本申请实施例提供的代码处理方法的流程示意图;
图3是本申请实施例提供的描述文件结构的示意图;
图4是本申请实施例提供的序列化格式的示意图;
图5是本申请实施例提供的基于表格数据文件进行序列化的示意图;
图6是本申请实施例提供的编辑界面生成的示意图;
图7是本申请实施例提供的编辑界面的示意图;
图8是本申请实施例提供的编辑界面的另一示意图;
图9是本申请实施例提供的编辑界面的另一示意图;
图10是本申请实施例提供的编辑界面的另一示意图;
图11是本申请实施例提供的代码处理装置的示意图;
图12是本申请实施例提供的终端的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种代码处理方法、装置及存储介质。
请参阅图1,图1为本申请实施例所提供的代码处理系统的场景示意图,该代码处理系统可以包括代码处理装置,该代码处理装置具体可以集成在终端10中,该终端10可以是手机、平板电脑、笔记本电脑、台式电脑、或者可穿戴设备等。终端10与服务器20之间可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
该服务器20可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器,但并不局限于此。
其中,终端10可以用于对待处理的代码文件进行解析,以提取代码文件中具有注释标识的字段,然后可以将字段写入预设文件中,以生成描述文件,根据描述文件对目标源代码模板进行字段填充,以生成序列化代码,并对序列化代码执行序列化操作,并输出数据文件,该数据文件可以存储在终端10本地或服务器20上,提高了对代码处理的便捷性以及提升了开发效率。终端10还可以将数据文件上传至服务器20,由服务器20存储该数据文件。当终端10需要使用该数据文件时,终端10可以从服务器20上下载该数据文件。
需要说明的是,图1所示的代码处理系统的场景示意图仅仅是一个示例,本申请实施例描述的代码处理系统以及场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着代码处理系统的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
在本实施例中,将从代码处理装置的角度进行描述,该代码处理装置具体可以集成在终端中。
请参阅图2,图2是本申请一实施例提供的代码处理方法的流程示意图。该代码处理方法可以包括:
S101、获取待处理的代码文件。
其中,待处理的代码文件可以是游戏或搜索引擎等需要用到本地数据存储的业务对应的代码。例如,可以从预先存储代码的服务器上下载待处理的代码文件。又例如,可以基于代码存储路径从本地存储区中加载待处理的代码文件。又例如,可以接收用户输入的代码输入指令,基于代码输入指令定义数据结构,以及为数据结构添加描述,从而可以生成代码文件。该数据结构可以是指面向对象编程语言的类,例如Java或C++等,以C++为例,该数据结构可以是私有类class或者公共类struct等。
为数据结构添加描述可以是,对数据结构的起始位置(即开头位置)和终止位置(即结尾位置)进行标记(即注释标识),以设置起始位置对应的起始标识和终止位置对应的终止标识,以及为数据结构的每一个字段添加描述信息(即给每一个属性添加描述)。例如,可以在数据结构的开头以注释方式添加标记///KFD(C,CNAME=中文名,…)的起始标识,以及在数据结构的结尾添加///KFD(*)的终止标识,其他注释标识可以根据实际需要进行添加。
其中,为数据结构的每一个字段添加描述信息可以是:为数据结构的每一个字段添加描述:在字段的上一行添加标记///KFD(P=1,CNAME=中文名,…),这里的“P=1”标记这是第一个字段,在后续序列化时可以用到这个值,其他标记可以根据需求自行添加。
S102、对代码文件进行解析,以提取代码文件中具有注释标识的字段。
其中,代码文件中具有注释标识的字段,即为代码文件中具有注释标识的属性。
在一实施方式中,对代码文件进行解析,以提取代码文件中具有注释标识的字段可以包括:对代码文件进行解析,以提取代码文件中数据结构的起始标识和终止标识;通过正则表达式对起始标识和终止标识之间的代码内容进行字段匹配,得到具有注释标识的字段。
为了提高对具有注释标识的字段提取的准确性,可以通过正则表达式进行匹配。具体地,在得到代码文件后,可以对代码文件进行解析,例如,可以扫描源代码目录下的代码文件找到所有含有注释标识的数据结构,例如,查找代码文件中数据结构的起始标识和终止标识,该起始标识和终止标识可以根据实际需要进行灵活设置,例如起始标识可以是“///开头”,终止标识可以是“///结尾”等。以及解析数据结构找出所有具有注释标识的字段,例如,可以通过正则表达式对起始标识和终止标识之间的代码内容进行字段匹配,匹配到所有的类以及其内容,并使用正则表达式从类的内容中解析出每一个字段(即属性),得到具有注释标识的字段。
S103、将字段写入预设文件中,以生成描述文件。
在得到具有注释标识的字段(即解析得到的字段)后,可以将字段写入预设文件中,以生成描述文件,例如,可以将将具有注释标识的字段以json格式写入预设文件,并存储作为描述文件。本实施例可以通过在已有数据结构上添加注释标识来生成代码描述文件、以及序列化和反序列化代码,不需要污染现有源代码即可实现数据的存储和读取等操作。
其中,描述文件可以是以数组形式记录所有扫描到类对应的具有注释标识的字段,例如,如图3所示,一个代码文件中可以包括多个类,例如classA、classB以及classC等,每个类的内容可以包括:
classname:对应代码文件中的类名;
classid:类的标识,该classid可以自动生成,例如,可以从1000开始,每增加一个类,classid加1;
extend:父类的类名;
tags:类的描述信息,例如类的中文名cname等,可以是以基于关键字取值key-value的形式存储;
property:类的属性列表,可以是以数组形式存储,类的属性列表中包括包括多个属性(即字段)。
其中,每个属性的内容可以包含:
id(即ID):属性标识,为前文提到的P=1,这个1就是属性id;
type:属性的类型,可以包括整型int、浮点型float、字符串类型string、布尔类型bool、枚举类型enum、字符类型class以及向量类型vector等;
name:属性名称;
otype:对象类型,当type是vector数组时会有这个字段,用于记录vector的类型;
tags:属性的描述信息。
S104、根据描述文件对目标源代码模板进行字段填充,以生成序列化代码。
其中,目标源代码模板可以根据实际需要进行灵活设置,具体内容在此处不做限定。例如,目标源代码模板可以是python的Cheetah模板库中的模板。例如,可以从本地或服务器上获取预先存储的目标源代码模板,根据描述文件对目标源代码模板进行字段填充,以生成序列化代码。
在一实施方式中,根据描述文件对目标源代码模板进行字段填充,以生成序列化代码可以包括:识别目标源代码模板中待填充的位置;遍历描述文件中具有注释标识的字段,以通过字段对待填充的位置进行填充,生成序列化代码。
为了提高序列化代码生成的可靠性和便捷性,可以基于识别目标源代码模板中待填充的位置,遍历描述文件中具有注释标识的字段(即属性),以通过字段对待填充的位置进行填充,生成序列化代码。其中,每一个数据结构序列化时,自身会当成一个MixObject类型,MixObject与Object的区别在于MixObject多一个类ID(int类型)和类名(string类型)的属性。例如,可以定义一个unsigned char*类型的缓冲buffer的数据,然后根据类型将数据写入buff。
其中,如图4所示,MixObject类型可以包括:
写入类型:OT_MIXOBJECT,int类型;
写入类ID:int类型;
写入类名:string类型;
写入Object。
Object类型可以包括:
写入父类Object;
写入属性ID:int类型;
写入属性类型:int类型;
写入属性内容:根据属性类型写入。
数组类型可以包括:
写入数组长度:int类型;
写入元素类型:int类型;
写入元素:根据元素类型写入。
String(即string)类型可以包括:
写入string长度:int类型;
写入string内容:char数组。
基础类型可以直接写入数据。
S105、对序列化代码执行序列化操作,并输出数据文件。
例如,可以提取序列化代码中字段的字段标识(例如属性ID),并根据字段标识读取字段的字段内容,调用预设的序列化方法基于字段内容对数据文件执行序列化操作。例如,可以对序列化代码进行二值化操作,并二值化数据存到数据文件(例如.data文件)。该序列化操作可以实现将数据结构中的对象转化成字节流的形式。
本实施例对于项目中已存在的数据结构的代码文件,如果想要其可以序列化,只需要给代码文件加上简单的注释标识即可生成序列化代码,可以对现有数据结构直接序列化,且不需要在现有数据结构上添加任何代码,使用方便并且能保持代码简洁;而且还支持多态序列化,不仅提升了开发效率,也使代码设计上更加清晰,另外可以自定义属性描述的特性,使其在数据编辑器等方面非常方便的控制数据的展示。
在一实施方式中,对序列化代码执行序列化操作,并输出数据文件可以包括:对序列化代码中的每个字段进行赋值,得到赋值后的序列化代码;获取序列化代码中的类名字段,根据类名字段查找预设子类的序列化方法;调用序列化方法对赋值后的序列化代码执行序列化操作,并输出数据文件。
为了提高对序列化代码执行序列化操作的可靠性和准确性,在生成序列化代码后,可以为对序列化代码中的每个字段进行赋值(即给各个属性赋值,也可以称为数据结构填充),例如,可以随机为每个字段进行赋值,或者基于用户输入数值的每个字段进行赋值等。以及,可以获取序列化代码中的类名字段,根据类名字段查找预设子类的序列化方法,在得到赋值后的序列化代码后,调用序列化方法(例如Write方法)对赋值后的序列化代码执行序列化操作,并输出数据文件。序列化方法可以包括Json序列化、FastJson序列化、Protobuff序列化、二进制序列化、以及xml序列化等。
其中,数据结构中的属性可以是一个基类的指针,基类可以使用一个type字段用于存储类名,在序列化之前将子类的type填成自己的类名,即可以按照子类的方式进行序列化,实现了支持多态序列化。
在一实施方式中,对序列化代码执行序列化操作,并输出数据文件可以包括:当检测到序列化代码中设置有表格数据结构标识时,获取表格数据文件,调用预设的序列化方法基于表格数据文件,对序列化代码执行序列化操作,并输出数据文件。
其中,表格数据结构标识和表格数据文件可以根据实际需要进行灵活设置,例如,表格数据文件可以是Excel文件,该Excel文件中可以存储有游戏等业务对应的数据。为了提高对序列化代码执行序列化操作的灵活性和便捷性,可以利用Excel文件进行序列化操作。例如,如图5所示,当需要使用表格数据文件时,可以在代码文件的数据结构中预先设置表格数据结构标识(例如KFDTag),使得生成的序列化代码中具有表格数据结构标识。在对序列化代码执行序列化操作的过程中,可以检测序列化代码中是否设置有表格数据结构标识,当检测到序列化代码中设置有表格数据结构标识时,可以基于表格数据文件的存储路径获取表格数据文件(例如Xls文件),然后可以调用预设的序列化方法基于表格数据文件,对序列化代码执行序列化操作,得到数据文件(即.data文件)。其中,表格数据文件中的数据可以采用Excel的方式编辑,或者采用KFD(kungfudata)通用编辑器进行编辑。
在一实施方式中,代码处理方法还可以包括:当检测到序列化代码中的目标类设置有脚本标识时,将目标类导出给目标脚本,以使得目标脚本执行目标类的功能。
为了提高代码处理的灵活性,目标脚本可以利用序列化代码中的目标类的功能,例如,当目标脚本需要执行目标类的功能时,可以在代码文件的数据结构中预先设置脚本标识(例如Lua标签),使得生成的序列化代码中具有脚本标识。在对序列化代码执行序列化操作的过程中,可以检测序列化代码中是否设置有脚本标识。当检测到序列化代码中的目标类设置有脚本标识时,可以将目标类导出给目标脚本,以使得目标脚本执行目标类的功能。例如,通过添加Lua标签来标记一个C++类是否需要导出给Lua,当序列化代码中具有Lua标签时,可以自动将纯C++类导出给脚本语言Lua,使得Lua可以使用C++的功能。
在一实施方式中,对序列化代码执行序列化操作,并输出数据文件之后,代码处理方法还可以包括:提取数据文件中字段的字段标识,并根据字段标识读取字段的字段内容;调用预设的反序列化方法基于字段内容,对数据文件执行反序列化操作。
为了提高反序列化操作的可靠性和准确性,在进行反序列化操作的过程中,可以提取数据文件中字段的字段标识(例如属性ID),并根据字段标识读取字段的字段内容,以及可以获取反序列化代码中的类名字段,根据类名字段查找预设子类的反序列化方法(例如Read方法),调用预设的反序列化方法基于字段内容,对数据文件执行反序列化操作。例如,数据结构中的属性可以是一个基类的指针,基类可以使用一个type字段用于存储类名,在反序列化时,可以先去读取type字段,然后根据type找到指定的子类反序列化方法进行反序列化操作,实现了支持多态反序列化。
需要说明的是,本实施例具有版本兼容性,版本兼容是指当数据结构删除或者新增属性(即字段)后,旧的反序列化代码依然能够正确读取数据。其原理在于每一个属性都有一个属性ID,先读取属性ID,再读取其中的内容,如果某一个属性ID在生成的代码中没有(新增了属性),则会跳过这个属性继续往下读取,如果是删除了属性,则在反序列化时也不会读取到删除的属性ID,自然也能正常读取到其他数据。
在一实施方式中,对序列化代码执行序列化操作,并输出数据文件之后,代码处理方法还可以包括:基于描述文件和数据文件,生成编辑界面;接收在编辑界面内输入的编辑指令,根据编辑指令对数据文件进行编辑,得到编辑后的数据文件。
为了方便对数据文件或其他文件进行编辑,可以基于具有可视化的用户界面(User Interface,UI)的编辑器对数据文件等进行编辑,提高对数据文件等编辑的便捷性。具体地,如图6所示,可以基于描述文件(例如*.kfd文件)和数据文件(.data文件)结合进行编辑器的UI呈现(即编辑界面),其中,KFD和KFDValue为数据结构中的对象。然后可以接收在编辑界面内输入的编辑指令,根据编辑指令对数据文件进行删除、修改、以及增加等操作,得到编辑后的数据文件。
例如,以游戏业务为例,游戏业务一般都会有大量的配置信息,对于这些配置信息,可以提供一个编辑器进行编辑,例如,如图7所示,可以在编辑界面内选择数据类型和数据路径等,以创建配置文件(即.data文件),然后对配置文件进行可视化编辑并保存,由于可以为属性自定义标记,因为可以给每一个属性加上中文名,在编辑器上也就能显示中文,使得编辑更加直观。
其中,属性可以根据条件显示:如图8所示,可以选择“攻击者参与冻结”等字段,当勾选了“攻击者参与冻结”这个字段后,“攻击者冻结时间增减[秒]”这个字段可以在编辑器的显示界面内显示,如图9所示,可以在“攻击者冻结时间增减[秒]”这个属性上加上一个条件显示的描述。
需要说明的是,可以对编辑器的动态扩展,例如,如图10所示,基于对数据的描述,可以实现编辑器动态扩展。在实际的游戏玩法开发中,需要进行海量的脚本扩展,编辑器可以根据这些脚本动态地渲染对应的编辑视图。可以使用KFD的数据描述能力,在编辑器中反射出数据的所有属性,显示对应的编辑视图,基于KFD不需要编译就能做到,并且利用KFD本身的扩展功能来对编辑视图进行更多灵活的控制。
本申请实施例可以获取待处理的代码文件,对代码文件进行解析,以提取代码文件中具有注释标识的字段;然后可以将字段写入预设文件中,以生成描述文件,根据描述文件对目标源代码模板进行字段填充,以生成序列化代码;此时可以对序列化代码执行序列化操作,并输出数据文件。该方案可以直接基于代码文件得到的描述文件生成序列化代码,并对序列化代码执行序列化操作,无需进行对象转换等操作,以及不需要在代码文件的现有结构上添加任何代码,实现了对代码文件中数据结构直接序列化,使用方便并且能保持代码简洁,还可以支持多态,提高了对代码处理的便捷性,大大提升了开发效率。
为便于更好的实施本申请实施例提供的代码处理方法,本申请实施例还提供一种基于上述代码处理方法的装置。其中名词的含义与上述代码处理方法中相同,具体实现细节可以参考方法实施例中的说明。
请参阅图11,图11为本申请实施例提供的代码处理装置的结构示意图,其中该代码处理装置可以包括获取单元301、解析单元302、生成单元303、填充单元304、以及执行单元305等。
其中,获取单元301,用于获取待处理的代码文件。
解析单元302,用于对代码文件进行解析,以提取代码文件中具有注释标识的字段。
生成单元303,用于将字段写入预设文件中,以生成描述文件。
填充单元304,用于根据描述文件对目标源代码模板进行字段填充,以生成序列化代码。
执行单元305,用于对序列化代码执行序列化操作,并输出数据文件。
在一实施方式中,解析单元302具体用于:对代码文件进行解析,以提取代码文件中数据结构的起始标识和终止标识;通过正则表达式对起始标识和终止标识之间的代码内容进行字段匹配,得到具有注释标识的字段。
在一实施方式中,填充单元304具体用于:识别目标源代码模板中待填充的位置;遍历描述文件中具有注释标识的字段,以通过字段对待填充的位置进行填充,生成序列化代码。
在一实施方式中,执行单元305具体用于:对序列化代码中的每个字段进行赋值,得到赋值后的序列化代码;获取序列化代码中的类名字段,根据类名字段查找预设子类的序列化方法;调用序列化方法对赋值后的序列化代码执行序列化操作,并输出数据文件。
在一实施方式中,执行单元305具体用于:当检测到序列化代码中设置有表格数据结构标识时,获取表格数据文件,调用预设的序列化方法基于表格数据文件,对序列化代码执行序列化操作,并输出数据文件。
在一实施方式中,代码处理装置还包括:
导出单元,用于当检测到序列化代码中的目标类设置有脚本标识时,将目标类导出给目标脚本,以使得目标脚本执行目标类的功能。
在一实施方式中,代码处理装置还包括:
提取单元,用于提取数据文件中字段的字段标识,并根据字段标识读取字段的字段内容;
调用单元,用于调用预设的反序列化方法基于字段内容,对数据文件执行反序列化操作。
在一实施方式中,代码处理装置还包括:
编辑界面生成单元,用于基于描述文件和数据文件,生成编辑界面;
编辑单元,用于接收在编辑界面内输入的编辑指令,根据编辑指令对数据文件进行编辑,得到编辑后的数据文件。
本申请实施例可以由获取单元301获取待处理的代码文件,由解析单元302对代码文件进行解析,以提取代码文件中具有注释标识的字段;然后可以由生成单元303将字段写入预设文件中,以生成描述文件,由填充单元304根据描述文件对目标源代码模板进行字段填充,以生成序列化代码;此时可以由执行单元305对序列化代码执行序列化操作,并输出数据文件。该方案可以直接基于代码文件得到的描述文件生成序列化代码,并对序列化代码执行序列化操作,无需进行对象转换等操作,以及不需要在代码文件的现有结构上添加任何代码,实现了对代码文件中数据结构直接序列化,使用方便并且能保持代码简洁,还可以支持多态,提高了对代码处理的便捷性,大大提升了开发效率。
本申请实施例还提供一种计算机设备,该计算机设备可以是终端,如图12所示,其示出了本申请实施例所涉及的终端的结构示意图,具体来讲:
该终端可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图12中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器401是该终端的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行终端的各种功能和处理数据,从而对终端进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
终端还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该终端还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,终端还可以包括显示单元等,在此不再赘述。具体在本实施例中,终端中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
获取待处理的代码文件,对代码文件进行解析,以提取代码文件中具有注释标识的字段,将字段写入预设文件中,以生成描述文件;根据描述文件对目标源代码模板进行字段填充,以生成序列化代码,对序列化代码执行序列化操作,并输出数据文件。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对代码处理方法的详细描述,此处不再赘述。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中各种可选实现方式中提供的方法。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种代码处理方法。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本申请实施例所提供的任一种代码处理方法中的步骤,因此,可以实现本申请实施例所提供的任一种代码处理方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
以上对本申请实施例所提供的一种代码处理方法、装置及存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种代码处理方法,其特征在于,包括:
获取待处理的代码文件;
对所述代码文件进行解析,以提取所述代码文件中具有注释标识的字段;
将所述字段写入预设文件中,以生成描述文件;
根据所述描述文件对目标源代码模板进行字段填充,以生成序列化代码;
对所述序列化代码执行序列化操作,并输出数据文件。
2.根据权利要求1所述的代码处理方法,其特征在于,所述对所述代码文件进行解析,以提取所述代码文件中具有注释标识的字段包括:
对所述代码文件进行解析,以提取所述代码文件中数据结构的起始标识和终止标识;
通过正则表达式对所述起始标识和终止标识之间的代码内容进行字段匹配,得到具有注释标识的字段。
3.根据权利要求1所述的代码处理方法,其特征在于,所述根据所述描述文件对目标源代码模板进行字段填充,以生成序列化代码包括:
识别所述目标源代码模板中待填充的位置;
遍历所述描述文件中具有注释标识的字段,以通过所述字段对所述待填充的位置进行填充,生成序列化代码。
4.根据权利要求1所述的代码处理方法,其特征在于,所述对所述序列化代码执行序列化操作,并输出数据文件包括:
对所述序列化代码中的每个字段进行赋值,得到赋值后的序列化代码;
获取所述序列化代码中的类名字段,根据所述类名字段查找预设子类的序列化方法;
调用所述序列化方法对所述赋值后的序列化代码执行序列化操作,并输出数据文件。
5.根据权利要求1所述的代码处理方法,其特征在于,所述对所述序列化代码执行序列化操作,并输出数据文件包括:
当检测到所述序列化代码中设置有表格数据结构标识时,获取表格数据文件;
调用预设的序列化方法基于所述表格数据文件,对所述序列化代码执行序列化操作,并输出数据文件。
6.根据权利要求1所述的代码处理方法,其特征在于,所述代码处理方法还包括:
当检测到所述序列化代码中的目标类设置有脚本标识时,将所述目标类导出给目标脚本,以使得所述目标脚本执行所述目标类的功能。
7.根据权利要求1至6任一项所述的代码处理方法,其特征在于,所述对所述序列化代码执行序列化操作,并输出数据文件之后,所述代码处理方法还包括:
提取所述数据文件中字段的字段标识,并根据所述字段标识读取所述字段的字段内容;
调用预设的反序列化方法基于所述字段内容,对所述数据文件执行反序列化操作。
8.根据权利要求1至6任一项所述的代码处理方法,其特征在于,所述对所述序列化代码执行序列化操作,并输出数据文件之后,所述代码处理方法还包括:
基于所述描述文件和所述数据文件,生成编辑界面;
接收在所述编辑界面内输入的编辑指令,根据所述编辑指令对所述数据文件进行编辑,得到编辑后的数据文件。
9.一种代码处理装置,其特征在于,包括:
获取单元,用于获取待处理的代码文件;
解析单元,用于对所述代码文件进行解析,以提取所述代码文件中具有注释标识的字段;
生成单元,用于将所述字段写入预设文件中,以生成描述文件;
填充单元,用于根据所述描述文件对目标源代码模板进行字段填充,以生成序列化代码;
执行单元,用于对所述序列化代码执行序列化操作,并输出数据文件。
10.一种存储介质,其特征在于,所述存储介质用于存储计算机程序,所述计算机程序被处理器加载以执行权利要求1至8任一项所述的代码处理方法。
CN202011021797.5A 2020-09-25 2020-09-25 一种代码处理方法、装置及存储介质 Active CN112130837B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011021797.5A CN112130837B (zh) 2020-09-25 2020-09-25 一种代码处理方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011021797.5A CN112130837B (zh) 2020-09-25 2020-09-25 一种代码处理方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN112130837A true CN112130837A (zh) 2020-12-25
CN112130837B CN112130837B (zh) 2022-03-08

Family

ID=73840008

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011021797.5A Active CN112130837B (zh) 2020-09-25 2020-09-25 一种代码处理方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN112130837B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112732321A (zh) * 2021-01-21 2021-04-30 恒为科技(上海)股份有限公司 一种固件修改方法、装置、计算机可读存储介质和设备
CN112818087A (zh) * 2021-02-04 2021-05-18 北京数衍科技有限公司 打印机指令头尾解析方法和装置、设备及存储介质
CN112905167A (zh) * 2021-03-11 2021-06-04 北京字节跳动网络技术有限公司 应用操作方法、装置和电子设备
CN113010157A (zh) * 2021-03-08 2021-06-22 北京达佳互联信息技术有限公司 一种代码生成方法及装置
CN113094026A (zh) * 2021-04-09 2021-07-09 中国工商银行股份有限公司 代码处理方法和装置
CN113238752A (zh) * 2021-05-17 2021-08-10 北京达佳互联信息技术有限公司 代码生成方法、装置、电子设备及存储介质
CN115129325A (zh) * 2022-06-29 2022-09-30 北京五八信息技术有限公司 一种数据处理方法、装置、电子设备及存储介质
CN115437641A (zh) * 2022-11-07 2022-12-06 北京蓝天航空科技股份有限公司 基于接口数据的代码生成方法、装置、设备及存储介质
CN117118962A (zh) * 2023-07-25 2023-11-24 领悦数字信息技术有限公司 用于跨多个云平台部署用户方法的方法和系统

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106648569A (zh) * 2015-11-02 2017-05-10 腾讯科技(深圳)有限公司 目标序列化实现方法和装置
CN107832045A (zh) * 2017-10-16 2018-03-23 北京京东尚科信息技术有限公司 跨编程语言接口转换的方法和装置
CN109491652A (zh) * 2018-09-25 2019-03-19 珠海格力电器股份有限公司 程序代码文件的生成方法和装置、电子设备
CN109542412A (zh) * 2018-10-16 2019-03-29 平安普惠企业管理有限公司 接口信息生成方法、装置、计算机设备和存储介质
CN110109423A (zh) * 2019-03-20 2019-08-09 北京中水科水电科技开发有限公司 一种基于Html5技术的实时数据的监视系统
US20200034126A1 (en) * 2017-02-08 2020-01-30 One Connect Smart Technology Co., Ltd. (Shenzhen) File generation method, device, server, and storage medium
CN110738036A (zh) * 2019-10-15 2020-01-31 北京百度网讯科技有限公司 用于生成信息的方法和装置
CN111221521A (zh) * 2019-12-31 2020-06-02 奇安信科技集团股份有限公司 日志代码的生成方法、装置、计算机系统和可读存储介质
CN111488174A (zh) * 2020-04-14 2020-08-04 苏州达家迎信息技术有限公司 应用程序接口文档的生成方法、装置、计算机设备及介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106648569A (zh) * 2015-11-02 2017-05-10 腾讯科技(深圳)有限公司 目标序列化实现方法和装置
US20200034126A1 (en) * 2017-02-08 2020-01-30 One Connect Smart Technology Co., Ltd. (Shenzhen) File generation method, device, server, and storage medium
CN107832045A (zh) * 2017-10-16 2018-03-23 北京京东尚科信息技术有限公司 跨编程语言接口转换的方法和装置
CN109491652A (zh) * 2018-09-25 2019-03-19 珠海格力电器股份有限公司 程序代码文件的生成方法和装置、电子设备
CN109542412A (zh) * 2018-10-16 2019-03-29 平安普惠企业管理有限公司 接口信息生成方法、装置、计算机设备和存储介质
CN110109423A (zh) * 2019-03-20 2019-08-09 北京中水科水电科技开发有限公司 一种基于Html5技术的实时数据的监视系统
CN110738036A (zh) * 2019-10-15 2020-01-31 北京百度网讯科技有限公司 用于生成信息的方法和装置
CN111221521A (zh) * 2019-12-31 2020-06-02 奇安信科技集团股份有限公司 日志代码的生成方法、装置、计算机系统和可读存储介质
CN111488174A (zh) * 2020-04-14 2020-08-04 苏州达家迎信息技术有限公司 应用程序接口文档的生成方法、装置、计算机设备及介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
马强等: "基于编程语言结构的通用配置代码生成方法", 《计算机工程》 *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112732321A (zh) * 2021-01-21 2021-04-30 恒为科技(上海)股份有限公司 一种固件修改方法、装置、计算机可读存储介质和设备
CN112732321B (zh) * 2021-01-21 2024-02-09 恒为科技(上海)股份有限公司 一种固件修改方法、装置、计算机可读存储介质和设备
CN112818087A (zh) * 2021-02-04 2021-05-18 北京数衍科技有限公司 打印机指令头尾解析方法和装置、设备及存储介质
CN112818087B (zh) * 2021-02-04 2024-05-28 北京数衍科技有限公司 打印机指令头尾解析方法和装置、设备及存储介质
CN113010157A (zh) * 2021-03-08 2021-06-22 北京达佳互联信息技术有限公司 一种代码生成方法及装置
CN112905167B (zh) * 2021-03-11 2023-10-27 北京字节跳动网络技术有限公司 应用操作方法、装置和电子设备
CN112905167A (zh) * 2021-03-11 2021-06-04 北京字节跳动网络技术有限公司 应用操作方法、装置和电子设备
CN113094026B (zh) * 2021-04-09 2024-02-06 中国工商银行股份有限公司 代码处理方法和装置
CN113094026A (zh) * 2021-04-09 2021-07-09 中国工商银行股份有限公司 代码处理方法和装置
CN113238752A (zh) * 2021-05-17 2021-08-10 北京达佳互联信息技术有限公司 代码生成方法、装置、电子设备及存储介质
CN115129325A (zh) * 2022-06-29 2022-09-30 北京五八信息技术有限公司 一种数据处理方法、装置、电子设备及存储介质
CN115129325B (zh) * 2022-06-29 2023-05-23 北京五八信息技术有限公司 一种数据处理方法、装置、电子设备及存储介质
CN115437641A (zh) * 2022-11-07 2022-12-06 北京蓝天航空科技股份有限公司 基于接口数据的代码生成方法、装置、设备及存储介质
CN117118962A (zh) * 2023-07-25 2023-11-24 领悦数字信息技术有限公司 用于跨多个云平台部署用户方法的方法和系统
CN117118962B (zh) * 2023-07-25 2024-03-22 领悦数字信息技术有限公司 用于跨多个云平台部署用户方法的方法和系统

Also Published As

Publication number Publication date
CN112130837B (zh) 2022-03-08

Similar Documents

Publication Publication Date Title
CN112130837B (zh) 一种代码处理方法、装置及存储介质
CN109901834B (zh) 文档页面生成方法、装置、计算机设备和存储介质
CN111045655A (zh) 一种页面渲染的方法、装置、渲染服务器和存储介质
CN110704064B (zh) 编译和执行智能合约的方法及装置
CN111740948B (zh) 数据包发布方法、动态更新方法、装置、设备及介质
CN110569250B (zh) 一种物联网网元的解析库的管理方法及装置
CN110704063A (zh) 编译和执行智能合约的方法及装置
CN106850650B (zh) 用于游戏客户端访问数据的方法及客户端游戏系统
CN112769706B (zh) 组件化路由方法及系统
CN110673837B (zh) 代码修复方法及装置、电子设备、计算机可读存储介质
CN113296786B (zh) 数据处理方法、装置、电子设备及存储介质
CN111913741B (zh) 对象拦截方法、装置、介质及电子设备
CN115509514B (zh) 一种前端数据模拟方法、装置、设备及介质
CN114138281A (zh) 软件工程的编译方法、装置、设备及介质
CN114020256A (zh) 前端页面生成方法、装置、设备及可读存储介质
CN112463256A (zh) 确定配置文件的方法、系统、电子设备及存储介质
CN111290996A (zh) 文档格式转换方法、装置、设备及可读存储介质
CN111488144B (zh) 一种数据处理方法以及设备
CN106484375B (zh) 一种指令块加载方法、软交换设备及系统
CN113791809B (zh) 应用异常处理方法、装置以及计算机可读存储介质
CN115640279A (zh) 一种数据血缘关系的构建方法和装置
CN114610364A (zh) 应用程序更新、应用程序开发方法、装置及计算机设备
CN111273913B (zh) 一种输出规范表示的应用程序接口数据的方法及装置
US9720660B2 (en) Binary interface instrumentation
CN111782212A (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