CN110874216B - 一种完备代码生成方法、装置、设备和存储介质 - Google Patents

一种完备代码生成方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN110874216B
CN110874216B CN201811009550.4A CN201811009550A CN110874216B CN 110874216 B CN110874216 B CN 110874216B CN 201811009550 A CN201811009550 A CN 201811009550A CN 110874216 B CN110874216 B CN 110874216B
Authority
CN
China
Prior art keywords
code
target
source file
complete
standard template
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
CN201811009550.4A
Other languages
English (en)
Other versions
CN110874216A (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.)
Guangzhou Huya Information Technology Co Ltd
Original Assignee
Guangzhou Huya Information 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 Guangzhou Huya Information Technology Co Ltd filed Critical Guangzhou Huya Information Technology Co Ltd
Priority to CN201811009550.4A priority Critical patent/CN110874216B/zh
Publication of CN110874216A publication Critical patent/CN110874216A/zh
Application granted granted Critical
Publication of CN110874216B publication Critical patent/CN110874216B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • 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)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本发明实施例公开了一种完备代码生成方法、装置、设备和存储介质。该方法通过对代码源文件进行识别处理,如果确定在所述代码源文件中识别出目标标签,则获取与所述目标标签匹配的标准模板代码;根据所述标准模板代码,生成与所述目标标签对应的目标添加代码;根据所述目标标签在所述代码源文件的位置,确定所述目标添加代码在所述代码源文件中的添加位置,并在所述添加位置处加入所述目标添加代码;将识别处理结束后得到的新的代码源文件中的代码作为完备代码,解决动态权限申请中代码实现过程繁琐的问题,实现简便的复现代码,且代码具有简洁性和可维护性。

Description

一种完备代码生成方法、装置、设备和存储介质
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种完备代码生成方法、装置、设备和存储介质。
背景技术
随着计算机技术的发展,单个计算机程序的代码量越来越多,导致代码不够精简,不便于开发和维护。例如,在手机应用中,需要编写代码完成动态权限的申请,具体的权限至少包括摄像头权限、麦克风权限、通讯录访问权限和照片访问权限等。由于权限的种类繁多,每种权限的申请都需要技术人员进行代码实现,过程比较繁琐,代码也不够简洁,不便于维护。
发明内容
本发明提供一种完备代码生成方法、装置、设备和存储介质,以实现简便的复现代码,且代码具有简洁性和可维护性。
第一方面,本发明实施例提供了一种完备代码生成方法,该方法包括:
对代码源文件进行识别处理,如果确定在所述代码源文件中识别出目标标签,则获取与所述目标标签匹配的标准模板代码;
根据所述标准模板代码,生成与所述目标标签对应的目标添加代码;
根据所述目标标签在所述代码源文件的位置,确定所述目标添加代码在所述代码源文件中的添加位置,并在所述添加位置处加入所述目标添加代码;
将识别处理结束后得到的新的代码源文件中的代码作为完备代码。
进一步的,根据所述标准模板代码,生成与所述目标标签对应的目标添加代码,包括:
如果在所述目标标签中解析出设定传入参数的键值对信息,则根据所述键值对信息构造传入参数,并将所述传入参数加入所述标准模板代码中,生成所述目标添加代码;
如果未在所述目标标签中解析出设定传入参数的键值对信息,则使用预设标准参数作为传入参数,并将所述传入参数加入所述标准模板代码中,生成所述目标添加代码。
进一步的,根据所述键值对信息构造传入参数,并将所述传入参数加入所述标准模板代码中,生成所述目标添加代码,包括:
获取所述键值对信息中的键值信息作为传入参数;
根据所述键值对信息中的键名在所述标准模板代码中进行匹配,确定所述传入参数对应的所述标准模板代码的内部参数;
根据所述传入参数设置所述内部参数,生成所述目标添加代码。
进一步的,所述目标标签为页面的权限申请标签,所述标准模板代码用于实现申请动态权限的标准功能。
进一步的,所述标准模板代码用于操作字节码。
进一步的,根据所述目标标签在所述代码源文件的位置,确定所述目标添加代码在所述代码源文件中的添加位置,包括:
将所述目标标签在所述代码源文件的位置的下一行,确定为所述目标添加代码在所述代码源文件中的添加位置。
进一步的,在对代码源文件进行识别处理之前,还包括:
确定检测到对所述代码源文件的编译指令;
在将识别结束后得到的新的代码源文件中的代码作为完备代码之后,还包括:
对所述完备代码进行编译处理,得到与所述完备代码对应的编译结果。
第二方面,本发明实施例还提供了一种完备代码生成装置,该装置包括:
目标标签识别模块,用于对代码源文件进行识别处理,如果确定在所述代码源文件中识别出目标标签,则获取与所述目标标签匹配的标准模板代码;
目标添加代码生成模块,用于根据所述标准模板代码,生成与所述目标标签对应的目标添加代码;
添加位置确定模块,用于根据所述目标标签在所述代码源文件的位置,确定所述目标添加代码在所述代码源文件中的添加位置,并在所述添加位置处加入所述目标添加代码;
完备代码获取模块,用于将识别处理结束后得到的新的代码源文件中的代码作为完备代码。
第三方面,本发明实施例还提供了一种完备代码生成设备,该设备包括:存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面中任一所述的完备代码生成方法。
第四方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面提供的任一所述的完备代码生成方法。
本发明实施例通过对代码源文件进行识别处理,如果确定在所述代码源文件中识别出目标标签,则获取与所述目标标签匹配的标准模板代码;根据所述标准模板代码,生成与所述目标标签对应的目标添加代码;根据所述目标标签在所述代码源文件的位置,确定所述目标添加代码在所述代码源文件中的添加位置,并在所述添加位置处加入所述目标添加代码;将识别处理结束后得到的新的代码源文件中的代码作为完备代码,解决动态权限申请中代码实现过程繁琐的问题,实现简便的复现代码,且代码具有简洁性和可维护性。
附图说明
图1为本发明实施例一提供的一种完备代码生成方法的流程图;
图2为本发明实施例二提供的一种完备代码生成方法的流程图;
图3为本发明实施例二提供的一种根据键值对信息生成目标添加代码的方法的流程图;
图4为本发明实施例三提供的一种完备代码生成装置的结构示意图;
图5为本发明实施例四提供的一种完备代码生成设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种完备代码生成方法的流程图,本实施例可适用于功能模块代码自动生成的情况,可以由完备代码生成设备来执行。该完备代码生成设备可以通过软件和/或硬件的方式实现,该完备代码生成设备是电脑,手机,平板,交互智能平板等。在一实施例中,完备代码生成设备中安装有代码编辑器或编译器。在本实施例中,以电脑为完备代码生成设备,且安装有编译器为例进行描述。本实施例对该功能模块实现的功能不做限定,本实施例以动态权限申请进行详细说明。
本实施例中,动态权限至少包括摄像头权限、麦克风权限、位置获取权限、通讯录访问权限和照片访问权限等。在应用程序需要申请动态权限时,向用户提供动态权限申请界面与用户进行交互。示例性的,该动态权限申请界面可显示有正在进行申请的动态权限的类型,并提供用户选择是否同意该动态权限申请的接口(如同意按钮)。当用户同意该动态权限的申请,应用程序获取动态权限。
本实施例以该应用程序可以是直播软件为例进行说明,直播软件包括主播客户端和观众客户端两种。具体的,主播客户端用于录制主播的直播视频,并将该直播视频通过直播平台发送给观众客户端进行播放。
在一实施例中,主播用户在使用安装在移动终端的直播软件进行直播时,直播软件需要获取该移动终端的摄像头权限和麦克风权限,才能使用移动终端上的摄像头和麦克风进行直播视频的录制。同样的,观众客户端还可以向用户申请位置的动态权限,通过获取用户的位置信息,便于精准推动直播视频。
该申请动态权限的功能需要通过在应用程序的代码源文件中写入动态权限相关的代码进行实现。需要注意的是,若针对每一种动态权限的申请都需要技术人员写出对应的动态权限申请的代码,会增加应用开发的负担,不利于提高应用开发的效率。为了解决这个问题,具体的,可以通过本发明实施例提供的完备代码生成方法实现将动态权限相关的代码写入应用程序的代码源文件中。该方法具体包括如下步骤:
S110、对代码源文件进行识别处理,如果确定在所述代码源文件中识别出目标标签,则获取与所述目标标签匹配的标准模板代码。
本实施例中,代码源文件为应用程序的功能实现代码,用于实现应用程序的业务逻辑。通过对代码源文件的编译可以得到应用程序的可执行文件,运行该可执行文件,即可实现应用程序的安装或使用。
本实施例中,目标标签为位于代码源文件中的一段注解代码(如动态权限功能对应的目标标签可以设置为@ActivityPermission)。以代码源文件为Java计算机语言为例进行说明,注解代码可以使用Java注解。Java注解又称Java标注,用于对Java语言中的类、方法、变量、参数和包等进行标注,且可以定义该注解的保存方式。本实施例对目标标签的保存方式不作限定,该保存方式可以是仅保存在代码中、编译入执行文件中或者运行时也可以通过反射访问。
进一步的,通过解析该注解代码可以用于编写文档、代码分析或编译检查。编写文档是通过代码里标识的元数据生成文档(即生成文档doc文档);代码分析是通过代码里标识的元数据对代码进行分析(即可以通过使用反射获取代码信息并进一步分析)。编译检查是通过代码里标识的元数据让编译器能够实现基本的编译检查。
而本实施例中,目标标签除了可以用编写文档、代码分析或编译检查外,还可以进行标准模板代码的匹配。
一般的,应用程序的开发使用功能模块化设计,方便进行维护和扩展。本实施例中的标准模板代码为实现应用程序功能模块的代码模板(或称之为代码片段)。本实施例中以标准模板代码对应动态权限的申请为例进行说明,但不限于标准模板代码可以用于实现其他功能,如直播间软件中进行网络连接的网络管理模块,又如进行直播界面显示更新的界面管理模块等。
进一步的,本实施例对代码源文件识别处理的具体实现方法不作限定,可以是遍历代码源文件,并使用字段匹配的方式对目标标签进行识别。在一实施例中,可以使用注释处理工具(Annotation Processing Tool,APT)进行目标标签的识别。
在一实施例中,本实施例对目标标签和标准模板代码如何进行匹配不作限定,可以是在标准模板代码中建立与目标标签的匹配关系;也可以是通过表格、配置文件或数据库对标准模板代码和目标标签的匹配关系进行存储。
S120、根据所述标准模板代码,生成与所述目标标签对应的目标添加代码。
本实施例中,目标添加代码为最终添加到代码源文件中的代码片段,该目标添加代码根据标准模板代码和目标标签生成。
需要说明的是,本实施例对标准模板代码是否需要设置内部参数不作限定。若标准模板代码未设置有内部参数,则将标准模板代码作为与目标标签对应的目标添加代码;若标准模板代码设置有内部参数,则需要根据目标标签设置内部参数后,才能生成目标添加代码。
S130、根据所述目标标签在所述代码源文件的位置,确定所述目标添加代码在所述代码源文件中的添加位置,并在所述添加位置处加入所述目标添加代码。
本实施例中,添加位置为目标添加代码将写入的位置。本实施例对该添加位置的确定不作限定,可以是在目标标签在代码源文件的位置后写入,且目标标签在代码源文件的位置与目标添加代码使用空白字符隔开,其中,空白字符可以是空格、换页、换行、回车、水平制表符和垂直制表符等。
S140、将识别处理结束后得到的新的代码源文件中的代码作为完备代码。
本实施例中,识别处理结束后得到的新的代码源文件(即完备代码)为加入了目标添加代码的代码源文件。
进一步的,对该完备代码进行编译可以得到完备代码对应的可执行文件,如该可执行文件对应的是主播客户端,则可以通过对该可执行文件进行安装或运行后,实现主播客户端的功能。
本实施例将对完备代码生成方法的工作流程进行举例详细说明。本实施例以主播客户端软件中的动态权限请求为例进行详细说明。使用APT工具对主播客户端软件的代码源文件进行目标标签的识别搜索。动态权限请求一般在主播客户端主界面的代码源文件中实现,可以缩小搜索的范围。之后根据识别出的目标标签(如动态权限功能对应的目标标签可以设置为@ActivityPermission),获取匹配的标准模板代码。可选的,标准模板代码无需设置内部参数,则将标准模板代码作为与目标标签对应的目标添加代码,之后,将目标添加代码添加到目标标签在代码源文件的位置之后,并用回车隔开,从而生成完备代码。
本发明实施例通过对代码源文件进行识别处理,如果确定在所述代码源文件中识别出目标标签,则获取与所述目标标签匹配的标准模板代码;根据所述标准模板代码,生成与所述目标标签对应的目标添加代码;根据所述目标标签在所述代码源文件的位置,确定所述目标添加代码在所述代码源文件中的添加位置,并在所述添加位置处加入所述目标添加代码;将识别处理结束后得到的新的代码源文件中的代码作为完备代码,解决动态权限申请中代码实现过程繁琐的问题,实现简便的复现代码,且代码具有简洁性和可维护性。
实施例二
图2为本发明实施例二提供的一种完备代码生成方法的流程图,本实施例在上述实施例的基础进一步细化,本实施例中以在编译器中进行代码源文件的编辑为例进行说明,编译器可以通过集成有APT工具对目标标签进行搜索。参照图2,该方法具体包括如下步骤S210-S260:
S210、确定检测到对所述代码源文件的编译指令。
本实施中,编译指令为编译器对代码源文件进行编译的触发指令,可以通过检测用户点击编译器上设置的编译按钮进行触发,也可以通过检测对应编译指令的快捷键输入进行触发。
本实施例对完备代码的生成时间不作限定,可以是在确定检测到对所述代码源文件的编译指令之后生成;也可以是在检测到目标标签写入即生成。
本实施例以在确定检测到对所述代码源文件的编译指令之后生成完备代码为例进行说明。
S220、对代码源文件进行识别处理,如果确定在所述代码源文件中识别出目标标签,则获取与所述目标标签匹配的标准模板代码。
S230、根据所述标准模板代码,生成与所述目标标签对应的目标添加代码。
需要说明的是,本实施例对标准模板代码是否需要设置内部参数不作限定。若标准模板代码未设置有内部参数,则将标准模板代码作为与目标标签对应的目标添加代码;若标准模板代码设置有内部参数,则需要根据目标标签设置内部参数后生成目标添加代码。其中,内部参数设置于标准模板代码,内部参数设置为未被赋值或者根据预设标准参数进行赋值,并且可以根据传入参数重新赋值。
本实施例将对标准模板代码设置有内部参数进行详细说明。本实施例对根据目标标签设置标准模板代码中的内部参数的具体实现方式不作限定,通过以下举例进行详细说明。
在一实施例中,如果在所述目标标签中解析出设定传入参数的键值对信息,则根据所述键值对信息构造传入参数,并将所述传入参数加入所述标准模板代码中,生成所述目标添加代码。
本实施例对根据所述键值对信息构造传入参数,并将所述传入参数加入所述标准模板代码中,生成所述目标添加代码的具体实现方式不作限定。
示例性的,图3为本发明实施例二提供的一种根据键值对信息生成目标添加代码的方法的流程图。参照图3,根据所述键值对信息构造传入参数,并将所述传入参数加入所述标准模板代码中,生成所述目标添加代码,具体包括步骤S231-S233:
S231、获取所述键值对信息中的键值信息作为传入参数。
本实施例中,键值对信息用于保存设定传入参数的值。键值对信息中的键名为传入参数的名字,键值为传入参数的值。传入参数用于对应设置标准模板代码的内部参数,以构成可以完成功能的代码片段。
S232、根据所述键值对信息中的键名在所述标准模板代码中进行匹配,确定所述传入参数的对应的所述标准模板代码的内部参数。
在一实施例中,在使用传入参数设置内部参数的过程中,可以预先设置内部参数与传入参数的对应关系。在获取传入参数后,在标准模板代码中匹配与该传入参数有对应关系的内部参数。
S233、根据所述传入参数设置所述内部参数,生成所述目标添加代码。
在一实施例中,根据传入参数对内部参数进行赋值,或进行预处理后再赋值给内部参数,所述预处理可以是格式转换。
示例性的,如该代码片段用于实现在显示屏中显示用户输入的字符,那么用户输入的字符为传入参数,该代码片段中的内部参数为需要被显示的字符,则根据传入参数设置内部参数就是将用户输入的字符作为需要被显示的字符。并进一步,该代码片段中设置又显示该需要被显示的字符的方法(或者说步骤)。
在一实施例中,所述标准模板代码用于操作字节码。
本实施例中,字节码可以是Java源代码文件经过编译后产生的可执行文件,可以被Java虚拟机直接读取并执行。标准模板代码可以设置为直接操作字节码,该操作至少包括对字节码中各种对象的增、删和改,有利于在运行时更改程序功能,从而使得目标源代码的实现更加灵活。
在一实施例中,如果未在所述目标标签中解析出设定传入参数的键值对信息,则使用预设标准参数作为传入参数,并将所述传入参数加入所述标准模板代码中,生成所述目标添加代码。
本实施例中,预设标准参数作为传入参数即为默认参数的情况。
S240、将所述目标标签在所述代码源文件的位置的下一行,确定为所述目标添加代码在所述代码源文件中的添加位置。
本实施例中,将所述目标标签在所述代码源文件的位置的下一行,即可以在目标标签在所述代码源文件的位置和目标添加代码在之间用回车隔开。
S250、将识别处理结束后得到的新的代码源文件中的代码作为完备代码。
S260、对所述完备代码进行编译处理,得到与所述完备代码对应的编译结果。
本实施例中,对该完备代码进行编译处理可以得到完备代码对应的可执行文件,如该执行文件对应的是主播客户端,则可以通过对该执行文件进行安装或运行后,实现主播客户端的功能。
本实施例将对完备代码生成方法的工作流程进行举例详细说明。本实施例以代码源文件为实现主播客户端软件中的动态权限请求,即以所述目标标签为页面的权限申请标签,所述传入参数为所述页面的管理模块,所述标准模板代码用于实现申请动态权限的标准功能为例进行说明。一般的,申请动态权限是在页面的管理模块中进行,所以需要将页面的管理模块作为传入参数,指定具体的页面作为申请动态权限的主体。
进一步的,在编译器中进行代码源文件的编辑,其编译器可通过集成有APT工具对目标标签进行搜索。
本实施例中,在确定检测到用户点击编译器上设置的编译按钮触发编译指令后,使用集成的APT工具对主播客户端软件的代码源文件进行目标标签(如页面的权限申请标签)的识别搜索。动态权限请求一般在主播客户端主界面的代码源文件中实现,可以缩小搜索的范围。之后根据识别出的页面的权限申请标签(如页面的权限申请标签可以设置为@ActivityPermission(Activity HomeActivity)),获取键值对信息中的键值信息(如Activity HomeActivity,其中,Activity为键名,HomeActivity为键值,该键值HomeActivity对应页面的管理模块)作为传入参数,根据键名Activity在标准模板代码中进行匹配,找到对应的内部参数,该内部参数指定了申请动态权限的主体。之后,将键值HomeActivity赋值给该内部参数,生成目标添加代码。并进一步,在该标准模板代码中设置有根据页面的管理模块HomeActivity进行申请动态权限的具体方法(或者说步骤)。将目标添加代码添加到页面的权限申请标签(如页面的权限申请标签可以设置为@ActivityPermission(Activity HomeActivity))的下一行,得到完备代码。之后,对该完备代码进行编译处理可以得到对应的主播客户端的可执行文件,则可以通过对该执行文件进行安装或运行后,实现主播客户端的功能。
本发明实施例通过确定检测到对所述代码源文件的编译指令,对代码源文件进行识别处理,如果确定在所述代码源文件中识别出目标标签,则获取与所述目标标签匹配的标准模板代码,根据所述标准模板代码,生成与所述目标标签对应的目标添加代码,将所述目标标签在所述代码源文件的位置的下一行,确定为所述目标添加代码在所述代码源文件中的添加位置,将识别处理结束后得到的新的代码源文件中的代码作为完备代码,对所述完备代码进行编译处理,得到与所述完备代码对应的编译结果,解决动态权限申请中代码实现过程繁琐的问题,实现在编译器中进行可视化的、简便的复现代码,且代码具有简洁性和可维护性。并进一步的,通过根据解析目标标签中的传入参数对标准模板代码中的内部参数进行设置,使得标准模板代码可以被自定义设置,具有灵活性。另外,标准模板代码可用于操作字节码,有利于在运行时更改程序功能,从而使得目标源代码的实现更加灵活。
实施例三
图4为本发明实施例三提供的一种完备代码生成装置的结构示意图。本实施例可适用于功能模块代码自动生成的情况,具体的该功能模块可以用于动态权限申请。参考图4,该完备代码生成装置,具体包括:目标标签识别模块310、目标添加代码生成模块320、添加位置确定模块330和完备代码获取模块340。
目标标签识别模块310,用于对代码源文件进行识别处理,如果确定在所述代码源文件中识别出目标标签,则获取与所述目标标签匹配的标准模板代码。
目标添加代码生成模块320,用于根据所述标准模板代码,生成与所述目标标签对应的目标添加代码。
添加位置确定模块330,用于根据所述目标标签在所述代码源文件的位置,确定所述目标添加代码在所述代码源文件中的添加位置,并在所述添加位置处加入所述目标添加代码。
完备代码获取模块340,用于将识别处理结束后得到的新的代码源文件中的代码作为完备代码。
本发明实施例通过对代码源文件进行识别处理,如果确定在所述代码源文件中识别出目标标签,则获取与所述目标标签匹配的标准模板代码;根据所述标准模板代码,生成与所述目标标签对应的目标添加代码;根据所述目标标签在所述代码源文件的位置,确定所述目标添加代码在所述代码源文件中的添加位置,并在所述添加位置处加入所述目标添加代码;将识别处理结束后得到的新的代码源文件中的代码作为完备代码,解决动态权限申请中代码实现过程繁琐的问题,实现简便的复现代码,且代码具有简洁性和可维护性。
在上述实施例的基础上,目标添加代码生成模块320包括:
第一目标添加代码生成单元,用于如果在所述目标标签中解析出设定传入参数的键值对信息,则根据所述键值对信息构造传入参数,并将所述传入参数加入所述标准模板代码中,生成所述目标添加代码。
第二目标添加代码生成单元,用于如果未在所述目标标签中解析出设定传入参数的键值对信息,则使用预设标准参数作为传入参数,并将所述传入参数加入所述标准模板代码中,生成所述目标添加代码。
在上述实施例的基础上,第一目标添加代码生成单元包括:
传入参数获取子单元,用于获取所述键值对信息中的键值信息作为传入参数。
传入参数匹配子单元,用于根据所述键值对信息中的键名在所述标准模板代码中进行匹配,确定所述传入参数对应的所述标准模板代码的内部参数。
目标添加代码生成子单元,用于根据所述传入参数设置所述内部参数,生成所述目标添加代码。
在上述实施例的基础上,所述目标标签为页面的权限申请标签,所述标准模板代码用于实现申请动态权限的标准功能。
在上述实施例的基础上,所述标准模板代码用于操作字节码。
在上述实施例的基础上,添加位置确定模块330包括:
添加位置确定单元,用于将所述目标标签在所述代码源文件的位置的下一行,确定为所述目标添加代码在所述代码源文件中的添加位置。
在上述实施例的基础上,该装置还包括:
编译指令检测模块,用于确定检测到对所述代码源文件的编译指令;
在上述实施例的基础上,该装置还包括:
编译模块,用于在将识别结束后得到的新的代码源文件中的代码作为完备代码之后,对所述完备代码进行编译处理,得到与所述完备代码对应的编译结果。
上述产品可执行本发明任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
实施例四
图5为本发明实施例四提供的一种完备代码生成设备的结构示意图,参考图5,该完备代码生成设备包括:处理器40、存储器41、输入装置42以及输出装置43。该完备代码生成设备中处理器40的数量可以是一个或者多个,图5中以一个处理器40为例。该完备代码生成设备中存储器41的数量可以是一个或者多个,图5中以一个存储器41为例。该完备代码生成设备的处理器40、存储器41、输入装置42以及输出装置43可以通过总线或者其他方式连接,图5中以通过总线连接为例。实施例中,完备代码生成设备可以是电脑,手机,平板或交互智能平板等。实施例中,以完备代码生成设备为手机为例,进行描述。
存储器41作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明任意实施例所述的完备代码生成方法对应的程序指令/模块(例如,完备代码生成装置中的目标标签识别模块310、目标添加代码生成模块320、添加位置确定模块330和完备代码获取模块340)。存储器41可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器41可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器41可进一步包括相对于处理器40远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置42可用于接收输入的数字或者字符信息,以及产生与完备代码生成设备的用户设置以及功能控制有关的键信号输入,还可以是用于获取图像的摄像头以及获取音频数据的拾音设备。输出装置43可以包括扬声器等音频设备。需要说明的是,输入装置42和输出装置43的具体组成可以根据实际情况设定。
处理器40通过运行存储在存储器41中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的完备代码生成方法。
上述产品可执行本发明任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
实施例五
本发明实施例五还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种完备代码生成方法,包括:
对代码源文件进行识别处理,如果确定在所述代码源文件中识别出目标标签,则获取与所述目标标签匹配的标准模板代码;
根据所述标准模板代码,生成与所述目标标签对应的目标添加代码;
根据所述目标标签在所述代码源文件的位置,确定所述目标添加代码在所述代码源文件中的添加位置,并在所述添加位置处加入所述目标添加代码;
将识别处理结束后得到的新的代码源文件中的代码作为完备代码。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的完备代码生成方法操作,还可以执行本发明任意实施例所提供的完备代码生成方法中的相关操作,且具备相应的功能和有益效果。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是机器人,个人计算机,服务器,或者网络设备等)执行本发明任意实施例所述的完备代码生成方法。
值得注意的是,上述完备代码生成装置中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (9)

1.一种完备代码生成方法,其特征在于,包括:
对代码源文件进行识别处理,如果确定在所述代码源文件中识别出目标标签,则获取与所述目标标签匹配的标准模板代码;
其中,所述目标标签为页面的权限申请标签,所述标准模板代码用于实现申请动态权限的标准功能;
根据所述标准模板代码,生成与所述目标标签对应的目标添加代码;
根据所述目标标签在所述代码源文件的位置,确定所述目标添加代码在所述代码源文件中的添加位置,并在所述添加位置处加入所述目标添加代码;
将识别处理结束后得到的新的代码源文件中的代码作为完备代码。
2.根据权利要求1所述的方法,其特征在于,根据所述标准模板代码,生成与所述目标标签对应的目标添加代码,包括:
如果在所述目标标签中解析出设定传入参数的键值对信息,则根据所述键值对信息构造传入参数,并将所述传入参数加入所述标准模板代码中,生成所述目标添加代码;
如果未在所述目标标签中解析出设定传入参数的键值对信息,则使用预设标准参数作为传入参数,并将所述传入参数加入所述标准模板代码中,生成所述目标添加代码。
3.根据权利要求2所述的方法,其特征在于,根据所述键值对信息构造传入参数,并将所述传入参数加入所述标准模板代码中,生成所述目标添加代码,包括:
获取所述键值对信息中的键值信息作为传入参数;
根据所述键值对信息中的键名在所述标准模板代码中进行匹配,确定所述传入参数对应的所述标准模板代码的内部参数;
根据所述传入参数设置所述内部参数,生成所述目标添加代码。
4.根据权利要求1-3任一项所述的方法,其特征在于:所述标准模板代码用于操作字节码。
5.根据权利要求1所述的方法,其特征在于,根据所述目标标签在所述代码源文件的位置,确定所述目标添加代码在所述代码源文件中的添加位置,包括:
将所述目标标签在所述代码源文件的位置的下一行,确定为所述目标添加代码在所述代码源文件中的添加位置。
6.根据权利要求1所述的方法,其特征在于,在对代码源文件进行识别处理之前,还包括:
确定检测到对所述代码源文件的编译指令;
在将识别结束后得到的新的代码源文件中的代码作为完备代码之后,还包括:
对所述完备代码进行编译处理,得到与所述完备代码对应的编译结果。
7.一种完备代码生成装置,其特征在于,包括:
目标标签识别模块,用于对代码源文件进行识别处理,如果确定在所述代码源文件中识别出目标标签,则获取与所述目标标签匹配的标准模板代码;
其中,所述目标标签为页面的权限申请标签,所述标准模板代码用于实现申请动态权限的标准功能;
目标添加代码生成模块,用于根据所述标准模板代码,生成与所述目标标签对应的目标添加代码;
添加位置确定模块,用于根据所述目标标签在所述代码源文件的位置,确定所述目标添加代码在所述代码源文件中的添加位置,并在所述添加位置处加入所述目标添加代码;
完备代码获取模块,用于将识别处理结束后得到的新的代码源文件中的代码作为完备代码。
8.一种完备代码生成设备,其特征在于,包括:存储器以及一个或多个处理器;
所述存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的完备代码生成方法。
9.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-6中任一所述的完备代码生成方法。
CN201811009550.4A 2018-08-31 2018-08-31 一种完备代码生成方法、装置、设备和存储介质 Active CN110874216B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811009550.4A CN110874216B (zh) 2018-08-31 2018-08-31 一种完备代码生成方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811009550.4A CN110874216B (zh) 2018-08-31 2018-08-31 一种完备代码生成方法、装置、设备和存储介质

Publications (2)

Publication Number Publication Date
CN110874216A CN110874216A (zh) 2020-03-10
CN110874216B true CN110874216B (zh) 2023-07-28

Family

ID=69715580

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811009550.4A Active CN110874216B (zh) 2018-08-31 2018-08-31 一种完备代码生成方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN110874216B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111782261B (zh) * 2020-06-29 2024-05-28 百度在线网络技术(北京)有限公司 软件配置方法、装置、电子设备以及存储介质
CN112068895B (zh) * 2020-08-10 2023-12-19 深圳市鼎盛光电有限公司 代码配置方法、装置、视频播放设备及存储介质
CN114969688A (zh) * 2021-02-26 2022-08-30 北京字跳网络技术有限公司 一种信息处理方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1573693A (zh) * 2003-06-18 2005-02-02 微软公司 用于创建、管理和使用代码段的系统和方法
US6968541B1 (en) * 2000-10-04 2005-11-22 International Business Machines Corporation Apparatus and method for template instantiation with a cross compiler
CN101794240A (zh) * 2010-01-04 2010-08-04 中兴通讯股份有限公司 一种聚合数据内容的方法和系统
CN102298552A (zh) * 2011-09-19 2011-12-28 南京大学 基于代码查询进行源代码插桩的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7500224B2 (en) * 2002-11-01 2009-03-03 Microsoft Corporation Code blueprints

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6968541B1 (en) * 2000-10-04 2005-11-22 International Business Machines Corporation Apparatus and method for template instantiation with a cross compiler
CN1573693A (zh) * 2003-06-18 2005-02-02 微软公司 用于创建、管理和使用代码段的系统和方法
CN101794240A (zh) * 2010-01-04 2010-08-04 中兴通讯股份有限公司 一种聚合数据内容的方法和系统
CN102298552A (zh) * 2011-09-19 2011-12-28 南京大学 基于代码查询进行源代码插桩的方法

Also Published As

Publication number Publication date
CN110874216A (zh) 2020-03-10

Similar Documents

Publication Publication Date Title
CN109542399B (zh) 软件开发方法、装置、终端设备及计算机可读存储介质
CN109918055B (zh) 一种应用程序的生成方法及设备
CN110874216B (zh) 一种完备代码生成方法、装置、设备和存储介质
CN110956269B (zh) 数据模型的生成方法、装置、设备以及计算机存储介质
CN110955428A (zh) 一种页面显示方法、装置、电子设备及介质
CN108536745B (zh) 基于Shell的数据表提取方法、终端、设备及存储介质
CN109597621B (zh) 封装Dagger的方法、装置、终端设备及存储介质
CN110321504B (zh) 一种页面处理方法及装置
CN111797351A (zh) 页面数据管理方法、装置、电子设备及介质
CN111796809A (zh) 接口文档生成方法、装置、电子设备及介质
WO2019228095A1 (zh) 手柄与第三方应用程序进行适配的方法、装置及存储介质
CN112398809B (zh) 协议规则转换方法、装置、计算机设备和存储介质
CN111324352A (zh) 一种应用页面的代码生成方法及相关设备
WO2022099868A1 (zh) 智能笔书写行为特征分析方法、装置及电子设备
CN113204345A (zh) 页面生成方法、装置、电子设备及存储介质
US20240103928A1 (en) Information processing method and apparatus for animation resource, device, medium and product
CN111177113A (zh) 数据迁移方法、装置、计算机设备和存储介质
CN112817657A (zh) 一种应用程序启动项加载方法、装置、系统及存储介质
CN111666201A (zh) 回归测试方法、装置、介质及电子设备
CN107797996B (zh) 一种词条翻译方法及装置
CN116820635A (zh) 一种文档块分享方法、装置、系统及存储介质
CN108255967B (zh) 存储过程的调用方法、装置、存储介质及终端
CN110688145A (zh) Android MVP代码自动生成方法、装置、介质、电子设备
CN113419711A (zh) 页面引导方法、装置、电子设备及存储介质
WO2022104999A1 (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