CN112181429B - 信息处理方法、装置以及电子设备 - Google Patents

信息处理方法、装置以及电子设备 Download PDF

Info

Publication number
CN112181429B
CN112181429B CN202011038814.6A CN202011038814A CN112181429B CN 112181429 B CN112181429 B CN 112181429B CN 202011038814 A CN202011038814 A CN 202011038814A CN 112181429 B CN112181429 B CN 112181429B
Authority
CN
China
Prior art keywords
code
static library
target
information
name
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
CN202011038814.6A
Other languages
English (en)
Other versions
CN112181429A (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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202011038814.6A priority Critical patent/CN112181429B/zh
Publication of CN112181429A publication Critical patent/CN112181429A/zh
Application granted granted Critical
Publication of CN112181429B publication Critical patent/CN112181429B/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/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/425Lexical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • 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)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了信息处理方法、装置以及电子设备,涉及软件开发技术领域。具体实现方案为:获取小程序的代码文件和所述小程序依赖的静态库的静态库信息;若所述代码文件的目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件,其中,所述处理包括替换、删除或注释。由于上述过程中的匹配和处理过程由电子设备完成,可以快速解除代码文件与静态库之间的依赖,相比于人工检索,提高了处理效率,降低了人工成本。

Description

信息处理方法、装置以及电子设备
技术领域
本公开涉及计算机技术领域中的软件开发技术,尤其涉及一种信息处理方法、装置以及电子设备。
背景技术
在项目开发过程中,会经常使用到静态库,当项目中集成了静态库后,代码会直接引用静态库的常量、类、类实例变量跟方法等,项目与静态库之间的依赖关系较强。
发明内容
本公开提供了一种信息处理方法、装置以及电子设备。
根据本公开的第一方面,提供了一种信息处理方法,包括:
获取小程序的代码文件和所述小程序依赖的静态库的静态库信息;
若所述代码文件的目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件,
其中,所述处理包括替换、删除或注释,所述目标代码为所述代码文件中的一行或多行代码。
根据本公开的第二方面,提供了一种信息处理方法,包括:
获取模块,用于获取小程序的代码文件和所述小程序依赖的静态库的静态库信息;
处理模块,用于若所述代码文件的目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件,
其中,所述处理包括替换、删除或注释,所述目标代码为所述代码文件中的一行或多行代码。
根据本公开的第三方面,提供了一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行第一方面任一项所述的方法。
根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行第一方面任一项所述的方法。
根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据第一方面任一项所述的方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本申请的限定。其中:
图1是本申请实施例提供的信息处理方法的流程图;
图2是本申请实施例提供的信息处理装置的结构图;
图3是用来实现本申请实施例的信息处理方法的电子设备的框图。
具体实施方式
以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
参见图1,图1是本申请实施例提供的信息处理方法的流程图,如图1所示,本实施例提供一种信息处理方法,应用于电子设备,包括以下步骤:
步骤101、获取小程序的代码文件和所述小程序依赖的静态库的静态库信息。
静态库信息可以包括静态库的类的类名、头文件的头文件名、协议名、函数名、宏定义的宏名和静态常量的常量名中的一个或多个等。可以利用脚本来列出静态库所有类的类名,以及类的方法变量名、协议名、静态变量名、头文件名、宏名等,并将获取的静态库信息缓存到一个依赖库文件中。
小程序的代码文件可理解为小程序的实现代码文件,该代码文件采用编程语言实现,小程序的代码文件可为一个或多个,具体根据实际情况确定。若小程序的代码文件有多个,则分别对多个代码文件中的每一个代码文件应用本申请中的信息处理方法,来去除代码文件对静态库的依赖。
步骤102、若所述代码文件的目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件,其中,所述处理包括替换、删除或注释,所述目标代码为所述代码文件中的一行或多行代码。
目标代码包括所述静态库信息可理解为,目标代码包括静态库信息中的一项或多项信息,例如,目标代码可包括静态库的类的类名、头文件的头文件名、协议名、函数名、宏定义的宏名和静态常量的常量名中的一项或多项信息。代码文件包括多行代码,在本申请中,可以对代码文件进行逐行遍历,依次确定每行代码或者连续多行代码是否与静态库信息匹配,也就是说,确定目标代码中的部分或全部代码是与静态库信息匹配,若匹配,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件。
在本申请中,处理可以包括替换、删除或者注释,以解除目标代码与静态库之间的依赖。目标代码可以为代码文件中的一行代码或者连续多行代码。
电子设备可以为手机、平板电脑、膝上型电脑、个人数字助理、移动上网装置或可穿戴式设备等。
本实施例中,获取小程序的代码文件和所述小程序依赖的静态库的静态库信息;若所述代码文件的目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件,其中,所述处理包括替换、删除或注释,所述目标代码为所述代码文件中的一行或多行代码,其中,所述处理包括替换、删除或注释,所述目标代码为所述代码文件中的一行或多行代码。由于上述过程中的匹配和处理过程由电子设备完成,可以快速解除代码文件与静态库之间的依赖,相比于人工检索,提高了处理效率,降低了人工成本。
在本申请一个实施例中,步骤102,若所述代码文件的目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件,包括:
对目标代码进行词法分析和语法分析,获得分析结果;
若根据所述分析结果确定所述目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件。
目标代码为代码文件中的一行代码或连续多行代码。本实施例中,在对目标代码进行分析时,模拟编译过程,对目标代码进行词法分析和语法分析,获得分析结果。再将分析结果与静态库信息进行匹配,若根据所述分析结果确定所述目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件。
本实施例中,通过对目标代码进行词法分析和语法分析,获得分析结果,再将分析结果与静态库信息进行匹配,若根据所述分析结果确定所述目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件。通过模拟编译过程,对目标代码进行词法分析和语法分析,获得分析结果,然后将分析结果与静态库信息进行匹配,可以快速确定目标代码是否有包括静态库信息,可以快速解除代码文件与静态库之间的依赖,相比于人工检索,提高了处理效率,降低了人工成本。
在本申请一个实施例中,若根据所述分析结果确定所述目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件,包括:
在所述分析结果为所述目标代码包括继承类或者属性定义类的情况下,若根据所述分析结果确定的第一类名为所述静态库信息中的类名,则将所述目标代码中的第一类名替换为目标基类的类名,获得与所述静态库解除依赖关系的新的代码文件;
其中,所述目标基类的类名为编写所述代码文件所采用的编程语言的基类的类名。
对代码文件中的继承类或者属性定义类进行处理。若分析结果确定目标代码包括继承类或者属性定义类,且分析结果还包括第一类名,即继承类的类名或者属性定义类的类名,则将第一类名与静态库信息匹配;若第一类名包括在静态库信息中,说明该继承类的类名或者属性定义类的类名为静态库的继承类的类名或者属性定义类的类名,需要对目标代码中的继承类的类名或者属性定义类的类名进行处理,即将所述目标代码中的第一类名替换为目标基类的类名,目标基类的类名为编写所述代码文件所采用的编程语言的基类的类名,以实现目标代码与静态库的继承类或者属性定义类的解耦。
例如,对于目标代码:@interface S*****View:EJJavaScriptView
其中,“@interface”标识类接口层关键字,“EJJavaScriptView”为静态库中的类名;
解耦方式:@interface S*****View:NSObject,即将静态库中的类名“EJJavaScriptView”替换为“NSObject”,“NSObject”为编写所述代码文件所采用的编程语言的基类的类名。
对目标代码进行词法分析和语法分析,获知类接口层关键字@interface,根据空格对该行进行切分,识别类名、继承类,如果继承类是静态库中的类,则替换成NSObject。
又例如,目标代码:@property(nonatomic,strong)S****Inner*inner;
解耦方式:@property(nonatomic,strong)id基类inner;
@property关键字为类实例变量,若在property中进行属性定义的类为静态库中的类,则将该类替换成id(即NSObject)。
本实施例中,在所述分析结果为所述目标代码包括继承类或者属性定义类的情况下,若根据所述分析结果确定的第一类名为所述静态库信息中的类名,则将所述目标代码中的第一类名替换为目标基类的类名,获得与所述静态库解除依赖关系的新的代码文件,可以快速解除代码文件对静态库的继承类或者属性定义类的依赖,相比于人工检索,提高了处理效率,降低了人工成本。
在本申请一个实施例中,若根据所述分析结果确定所述目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件,包括:
在所述分析结果为所述目标代码包括头文件、函数声明、宏定义或者静态常量的情况下,若根据所述分析结果确定的所述头文件的头文件名、所述函数声明的函数名、所述宏定义的宏名或者所述静态常量的常量名为所述静态库信息中的信息,则对所述目标代码所在的行进行注释,获得与所述静态库解除依赖关系的新的代码文件。
本实施例中,本实施例对代码文件中的头文件、函数声明、宏定义或者静态常量进行处理。在所述分析结果确定所述目标代码包括头文件、函数声明、宏定义或者静态常量,且分析结果还包括所述头文件的头文件名、所述函数声明的函数名、所述宏定义的宏名或者所述静态常量的常量名,则将头文件的头文件名、所述函数声明的函数名、所述宏定义的宏名或者所述静态常量的常量名与所述静态库信息匹配,若匹配,则说明目标代码包括静态库信息中的头文件名、函数声明的函数名、宏定义的宏名或者静态常量的常量名,需要对目标代码中的头文件名、函数声明的函数名、宏定义的宏名或者静态常量的常量名进行处理,即将目标代码所在的行进行注释,以实现目标代码与静态库的头文件、函数、宏定义或者静态常量解耦。
例如:目标代码包括静态库的头文件,
目标代码为:#import<Ejecta/Ejecta.h>
解耦方式为:将包括静态库的头文件的目标代码注释,如下所示:
//#import<Ejecta/Ejecta.h>
在对目标代码进行读取时,读取import关键字,如果包含“#import<Ejecta”,则说明目标代码包括指定删除的静态库头文件,为该行添加“//”进行注释。
又例如,目标代码(本例中目标代码包括多行):
-(id)initWithScriptView:(EJJavaScriptView*)scriptViewcallback:(JSObjectRef)callback;
解耦方式://-(id)initWithScriptView:(EJJavaScriptView*)scriptView//callback:(JSObjectRef)callback;
行以+或者-开头的为函数,由于函数可能包括多行,所以如果在函数中,需要有isInHFunc函数标记,直到函数包含“;”截止。具体实现时,保存一份不注释的函数申明hFuncStr,保持一份注释掉的函数申明hFuncAnnoStr。函数中如果包含静态库中的类,则把注释掉的函数申明写入代码文件中,以实现对代码文件中目标代码的注释。
本实施例中,在所述分析结果为所述目标代码包括头文件、函数声明、宏定义或者静态常量的情况下,若根据所述分析结果确定的所述头文件的头文件名、所述函数声明的函数名、所述宏定义的宏名或者所述静态常量的常量名为所述静态库信息中的信息,则对所述目标代码所在的行进行注释,获得与所述静态库解除依赖关系的新的代码文件,可以快速解除代码文件对静态库的头文件、函数、宏定义或者静态常量的依赖,相比于人工检索,提高了处理效率,降低了人工成本。
在本申请一个实施例中,若根据所述分析结果确定所述目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件,包括:
在所述分析结果为所述目标代码包括函数体,所述函数体的参数包括所述静态库信息中的第一目标信息的情况下,对所述目标代码的所述函数体进行注释,获得与所述静态库解除依赖关系的新的代码文件;
或者,
在所述分析结果为所述目标代码包括函数体,所述函数体包括所述静态库信息中的第二目标信息,且所述第二目标信息不属于所述函数体的参数的情况下,则对所述函数体中的所述第二目标信息进行注释,获得与所述静态库解除依赖关系的新的代码文件。
本实施例对代码文件中的函数体进行分析,函数体可包括多行代码。本实施例包括两种情况:第一种情况下,所述分析结果包括函数体,且函数体的参数包括第一目标信息,第一目标信息可以为静态库的类的类名、函数名、宏名或者静态常量的常量名,若函数体包括第一目标信息,则对所述目标代码的所述函数体整体进行注释,获得与所述静态库解除依赖关系的新的代码文件,可以快速解除代码文件的函数体对静态库的依赖,提高处理效率。
例如,类实现层的函数体
解耦方式:函数体的参数包括静态库信息中的第一目标信息,则整个函数体都注释掉。
函数开始标记、函数声明、函数体、函数结尾(函数左右{}数量一致时,算函数结尾)。如果函数体注释掉,函数有返回值的需要增加return,此时需要有个映射关系,比如返回基础类,则return nil,如果是bool变量,则返回return false。
第二种情况下,分析结果包括函数体,且函数体包括所述静态库信息中的第二目标信息,且所述第二目标信息不属于所述函数体的参数,第二目标信息可以为静态库的类的类名、函数名、宏名或者静态常量的常量名,也就是说,函数体中包括第二目标信息,但是第二目标信息不属于函数体的参数时,可以将函数体中的第二目标信息进行注释,快速解除代码文件的函数体对静态库的依赖,提高处理效率。
在本申请一个实施例中,所述若根据所述分析结果确定所述目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件,包括:
在所述分析结果为所述目标代码包括多个协议名的情况下,若所述静态库信息包括所述多个协议名中的部分协议名,则将所述目标代码中的所述部分协议名删除,获得与所述静态库解除依赖关系的新的代码文件;
或者,
在所述分析结果包括至少一个协议名的情况下,若所述静态库信息包括所述至少一个协议名的所有协议名,则将所述目标代码中的所述至少一个协议名删除,且删除用于标记所述至少一个协议名的符号,获得与所述静态库解除依赖关系的新的代码文件。
例如,目标代码为:
@interface S**FileSystem:NSObject<EJFileManagerDelegate>
上述中EJFileManagerDelegate为静态库包括的协议;
解耦方式:@interface S**FileSystem:NSObject
即,将EJFileManagerDelegate和“<>”符号一同删除;
对目标代码进行词法分析和语法分析,解析到“<>”符号中的信息,获得协议名,如果“<>”符号中的每个协议名都是静态库中的协议名,则删除这多个协议名,并且删除“<>”符号。如果“<>”符号中包括的协议名,并不都是静态库中的协议名,则删除属于静态库的协议名,保留不属于静态库的协议名。
在本实施例中,若目标代码包括的多个协议名中,只有一部分包括在静态库信息中,则将目标代码中包括在静态库信息中的协议名删除,保留未包括在静态库信息中的协议名;若目标代码包括的一个或多个协议名均包括在静态库信息中,则将目标代码包括的所有协议名删除,并且删除用于标记至少一个协议名的符号。通过上述方法将目标代码中的协议名与静态库解耦,快速解除代码文件对静态库的依赖,提高处理效率。
本申请提供的上述信息处理方法,可以辅助处理小程序的代码文件与静态库之间的解耦。在进行小程序版本开源时,可以高效的产出精简版(去除游戏静态库等版本),提高了处理效率。宿主程序可选择性的接入小程序精简版,精简版SDK的数据量要小于小程序全版本的数据量。
小程序开源用到了很多基础类库、包括小游戏引擎库、UBC等。开源宿主有包体积考虑或其他个性化需求时,会选择性的使用部分类库。此时用静态库解耦工具即可快速移出小程序的部分静态库依赖,如游戏引擎依赖,可直接提供给开源宿主去除游戏引擎依赖的版本。
参见图2,图2是本申请实施例提供的信息处理装置的结构图,如图2所示,本实施例提供一种信息处理装置200,包括:
获取模块201,用于获取小程序的代码文件和所述小程序依赖的静态库的静态库信息;
处理模块202,用于若所述代码文件的目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件,
其中,所述处理包括替换、删除或注释。进一步的,所述目标代码为所述代码文件中的一行或多行代码。
在本申请一个实施例中,所述处理模块202,包括:
第一获取子模块,用于对目标代码进行词法分析和语法分析,获得分析结果;
第一处理子模块,用于若根据所述分析结果确定所述目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件。
在本申请一个实施例中,所述第一处理子模块,用于:
在所述分析结果为所述目标代码包括继承类或者属性定义类的情况下,若根据所述分析结果确定的第一类名为所述静态库信息中的类名,则将所述目标代码中的第一类名替换为目标基类的类名,获得与所述静态库解除依赖关系的新的代码文件;
其中,所述目标基类的类名为编写所述代码文件所采用的编程语言的基类的类名。
在本申请一个实施例中,所述第一处理子模块,用于:
在所述分析结果为所述目标代码包括头文件、函数声明、宏定义或者静态常量的情况下,若根据所述分析结果确定的所述头文件的头文件名、所述函数声明的函数名、所述宏定义的宏名或者所述静态常量的常量名为所述静态库信息中的信息,则对所述目标代码所在的行进行注释,获得与所述静态库解除依赖关系的新的代码文件。
在本申请一个实施例中,所述第一处理子模块,用于:
在所述分析结果为所述目标代码包括函数体,所述函数体的参数包括所述静态库信息中的第一目标信息的情况下,对所述目标代码的所述函数体进行注释,获得与所述静态库解除依赖关系的新的代码文件;
或者,
在所述分析结果为所述目标代码包括函数体,所述函数体包括所述静态库信息中的第二目标信息,且所述第二目标信息不属于所述函数体的参数的情况下,则对所述函数体中的所述第二目标信息进行注释,获得与所述静态库解除依赖关系的新的代码文件。
在本申请一个实施例中,所述第一处理子模块,用于:
在所述分析结果为所述目标代码包括多个协议名的情况下,若所述静态库信息包括所述多个协议名中的部分协议名,则将所述目标代码中的所述部分协议名删除,获得与所述静态库解除依赖关系的新的代码文件;
或者,
在所述分析结果包括至少一个协议名的情况下,若所述静态库信息包括所述至少一个协议名的所有协议名,则将所述目标代码中的所述至少一个协议名删除,且删除用于标记所述至少一个协议名的符号,获得与所述静态库解除依赖关系的新的代码文件。
信息处理装置200能够实现图1所示的方法实施例中电子设备实现的各个过程,为避免重复,这里不再赘述。
本申请实施例的信息处理装置200,获取小程序的代码文件和所述小程序依赖的静态库的静态库信息;若所述代码文件的目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件,其中,所述处理包括替换、删除或注释,所述目标代码为所述代码文件中的一行或多行代码,其中,所述处理包括替换、删除或注释,所述目标代码为所述代码文件中的一行或多行代码。由于上述过程中的匹配和处理过程由电子设备完成,可以快速解除代码文件与静态库之间的依赖,相比于人工检索,提高了处理效率,降低了人工成本。
根据本申请的实施例,本申请还提供了一种电子设备,一种计算机程序产品和一种可读存储介质。
如图3所示,是根据本申请实施例的信息处理的方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
如图3所示,该电子设备包括:一个或多个处理器501、存储器502,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图3中以一个处理器501为例。
存储器502即为本申请所提供的非瞬时计算机可读存储介质。其中,所述存储器存储有可由至少一个处理器执行的指令,以使所述至少一个处理器执行本申请所提供的信息处理的方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的信息处理的方法。
存储器502作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的信息处理的方法对应的程序指令/模块(例如,附图2所示的获取模块201和处理模块202)。处理器501通过运行存储在存储器502中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的信息处理的方法。
存储器502可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据信息处理的电子设备的使用所创建的数据等。此外,存储器502可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器502可选包括相对于处理器501远程设置的存储器,这些远程存储器可以通过网络连接至信息处理的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
信息处理的方法的电子设备还可以包括:输入装置503和输出装置504。处理器501、存储器502、输入装置503和输出装置504可以通过总线或者其他方式连接,图3中以通过总线连接为例。
输入装置503可接收输入的数字或字符信息,以及产生与信息处理的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置504可以包括显示设备、辅助照明装置(例如,LED)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(LCD)、发光二极管(LED)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。
此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用ASIC(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(PLD)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
根据本申请实施例的技术方案,通过获取训练样本,所述训练样本包括第一文档的文档分类,所述第一文档支持的多个文档格式以及所述第一文档的历史下载信息;利用所述训练样本对基础网络模型进行训练,获取目标网络模型,所述目标网络模型用于对文档的文档格式的推荐顺序进行预测。可通过目标网络模型为用户提供文档的文档格式的推荐顺序,便于用户方便快捷的获得所需要的文档格式的文档,提高所需文档格式的文档的获取效率。
获取小程序的代码文件和所述小程序依赖的静态库的静态库信息;若所述代码文件的目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件,其中,所述处理包括替换、删除或注释,所述目标代码为所述代码文件中的一行或多行代码,其中,所述处理包括替换、删除或注释,所述目标代码为所述代码文件中的一行或多行代码。由于上述过程中的匹配和处理过程由电子设备完成,可以快速解除代码文件与静态库之间的依赖,相比于人工检索,提高了处理效率,降低了人工成本。
通过对目标代码进行词法分析和语法分析,获得分析结果,再将分析结果与静态库信息进行匹配,若根据所述分析结果确定所述目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件。通过模拟编译过程,对目标代码进行词法分析和语法分析,获得分析结果,然后将分析结果与静态库信息进行匹配,可以快速确定目标代码是否有包括静态库信息,可以快速解除代码文件与静态库之间的依赖,相比于人工检索,提高了处理效率,降低了人工成本。
在所述分析结果为所述目标代码包括继承类或者属性定义类的情况下,若根据所述分析结果确定的第一类名为所述静态库信息中的类名,则将所述目标代码中的第一类名替换为目标基类的类名,获得与所述静态库解除依赖关系的新的代码文件,可以快速解除代码文件对静态库的继承类或者属性定义类的依赖,相比于人工检索,提高了处理效率,降低了人工成本。
在所述分析结果为所述目标代码包括头文件、函数声明、宏定义或者静态常量的情况下,若根据所述分析结果确定的所述头文件的头文件名、所述函数声明的函数名、所述宏定义的宏名或者所述静态常量的常量名为所述静态库信息中的信息,则对所述目标代码所在的行进行注释,获得与所述静态库解除依赖关系的新的代码文件,可以快速解除代码文件对静态库的头文件、函数、宏定义或者静态常量的依赖,相比于人工检索,提高了处理效率,降低了人工成本。
若函数体包括第一目标信息,则对所述目标代码的所述函数体整体进行注释,获得与所述静态库解除依赖关系的新的代码文件,可以快速解除代码文件的函数体对静态库的依赖,提高处理效率;若函数体包括第二目标信息,但是第二目标信息不属于函数体的参数时,可以将函数体中的第二目标信息进行注释,快速解除代码文件的函数体对静态库的依赖,提高处理效率。
若目标代码包括的多个协议名中,只有一部分包括在静态库信息中,则将目标代码中包括在静态库信息中的协议名删除,保留未包括在静态库信息中的协议名;若目标代码包括的一个或多个协议名均包括在静态库信息中,则将目标代码包括的所有协议名删除,并且删除用于标记至少一个协议名的符号。通过上述方法将目标代码中的协议名与静态库解耦,快速解除代码文件对静态库的依赖,提高处理效率。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

Claims (6)

1.一种信息处理方法,包括:
获取小程序的代码文件和所述小程序依赖的静态库的静态库信息;
若所述代码文件的目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件;
其中,所述处理包括替换、删除和注释;
其中,若所述代码文件的目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件,包括:
对目标代码进行词法分析和语法分析,获得分析结果;
若根据所述分析结果确定所述目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件;
在所述分析结果为所述目标代码包括继承类或者属性定义类的情况下,若根据所述分析结果确定的第一类名为所述静态库信息中的类名,则将所述目标代码中的第一类名替换为目标基类的类名,获得与所述静态库解除依赖关系的新的代码文件;
其中,所述目标基类的类名为编写所述代码文件所采用的编程语言的基类的类名;
在所述分析结果为所述目标代码包括头文件、函数声明、宏定义或者静态常量的情况下,若根据所述分析结果确定的所述头文件的头文件名、所述函数声明的函数名、所述宏定义的宏名或者所述静态常量的常量名为所述静态库信息中的信息,则对所述目标代码所在的行进行注释,获得与所述静态库解除依赖关系的新的代码文件;
在所述分析结果为所述目标代码包括多个协议名的情况下,若所述静态库信息包括所述多个协议名中的部分协议名,则将所述目标代码中的所述部分协议名删除,获得与所述静态库解除依赖关系的新的代码文件;
或者,
在所述分析结果包括至少一个协议名的情况下,若所述静态库信息包括所述至少一个协议名的所有协议名,则将所述目标代码中的所述至少一个协议名删除,且删除用于标记所述至少一个协议名的符号,获得与所述静态库解除依赖关系的新的代码文件。
2.根据权利要求1所述的方法,其中,若根据所述分析结果确定所述目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件,包括:
在所述分析结果为所述目标代码包括函数体,所述函数体的参数包括所述静态库信息中的第一目标信息的情况下,对所述目标代码的所述函数体进行注释,获得与所述静态库解除依赖关系的新的代码文件;
或者,
在所述分析结果为所述目标代码包括函数体,所述函数体包括所述静态库信息中的第二目标信息,且所述第二目标信息不属于所述函数体的参数的情况下,则对所述函数体中的所述第二目标信息进行注释,获得与所述静态库解除依赖关系的新的代码文件。
3.一种信息处理装置,包括:
获取模块,用于获取小程序的代码文件和所述小程序依赖的静态库的静态库信息;
处理模块,用于若所述代码文件的目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件;
其中,所述处理包括替换、删除和注释;
其中,所述处理模块,包括:
第一获取子模块,用于对目标代码进行词法分析和语法分析,获得分析结果;
第一处理子模块,用于若根据所述分析结果确定所述目标代码包括所述静态库信息,则对所述代码文件中的所述目标代码进行处理,获得与所述静态库解除依赖关系的新的代码文件;
其中,所述第一处理子模块,用于:
在所述分析结果为所述目标代码包括继承类或者属性定义类的情况下,若根据所述分析结果确定的第一类名为所述静态库信息中的类名,则将所述目标代码中的第一类名替换为目标基类的类名,获得与所述静态库解除依赖关系的新的代码文件;
其中,所述目标基类的类名为编写所述代码文件所采用的编程语言的基类的类名;
其中,所述第一处理子模块,用于:
在所述分析结果为所述目标代码包括头文件、函数声明、宏定义或者静态常量的情况下,若根据所述分析结果确定的所述头文件的头文件名、所述函数声明的函数名、所述宏定义的宏名或者所述静态常量的常量名为所述静态库信息中的信息,则对所述目标代码所在的行进行注释,获得与所述静态库解除依赖关系的新的代码文件;
其中,所述第一处理子模块,用于:
在所述分析结果为所述目标代码包括多个协议名的情况下,若所述静态库信息包括所述多个协议名中的部分协议名,则将所述目标代码中的所述部分协议名删除,获得与所述静态库解除依赖关系的新的代码文件;
或者,
在所述分析结果包括至少一个协议名的情况下,若所述静态库信息包括所述至少一个协议名的所有协议名,则将所述目标代码中的所述至少一个协议名删除,且删除用于标记所述至少一个协议名的符号,获得与所述静态库解除依赖关系的新的代码文件。
4.根据权利要求3所述的装置,其中,所述第一处理子模块,用于:
在所述分析结果为所述目标代码包括函数体,所述函数体的参数包括所述静态库信息中的第一目标信息的情况下,对所述目标代码的所述函数体进行注释,获得与所述静态库解除依赖关系的新的代码文件;
或者,
在所述分析结果为所述目标代码包括函数体,所述函数体包括所述静态库信息中的第二目标信息,且所述第二目标信息不属于所述函数体的参数的情况下,则对所述函数体中的所述第二目标信息进行注释,获得与所述静态库解除依赖关系的新的代码文件。
5. 一种电子设备,其中,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-2中任一项所述的方法。
6.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行权利要求1-2中任一项所述的方法。
CN202011038814.6A 2020-09-28 2020-09-28 信息处理方法、装置以及电子设备 Active CN112181429B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011038814.6A CN112181429B (zh) 2020-09-28 2020-09-28 信息处理方法、装置以及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011038814.6A CN112181429B (zh) 2020-09-28 2020-09-28 信息处理方法、装置以及电子设备

Publications (2)

Publication Number Publication Date
CN112181429A CN112181429A (zh) 2021-01-05
CN112181429B true CN112181429B (zh) 2023-10-20

Family

ID=73945192

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011038814.6A Active CN112181429B (zh) 2020-09-28 2020-09-28 信息处理方法、装置以及电子设备

Country Status (1)

Country Link
CN (1) CN112181429B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112925552B (zh) * 2021-02-26 2023-07-28 北京百度网讯科技有限公司 代码处理方法、装置、设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8677314B1 (en) * 2011-08-18 2014-03-18 Google Inc. Modifying a source code file to reduce dependencies included therein
CN106777299A (zh) * 2016-12-30 2017-05-31 深圳市彬讯科技有限公司 运用管理工具与静态数据仓库的项目依赖关系解决方法
CN107608677A (zh) * 2017-09-05 2018-01-19 腾讯科技(深圳)有限公司 一种编译处理方法、装置及电子设备
CN107832059A (zh) * 2017-11-21 2018-03-23 广州视源电子科技股份有限公司 一种基于Makefile的代码静态分析方法和装置
CN108614707A (zh) * 2018-04-27 2018-10-02 深圳市腾讯网络信息技术有限公司 静态代码检查方法、装置、存储介质和计算机设备
CN110377523A (zh) * 2019-07-24 2019-10-25 网易(杭州)网络有限公司 程序调试方法及装置、电子设备和存储介质
CN110532029A (zh) * 2019-09-04 2019-12-03 深圳前海微众银行股份有限公司 小程序生成方法、装置、设备及计算机可读存储介质
CN111045683A (zh) * 2019-12-13 2020-04-21 深圳前海微众银行股份有限公司 小程序代码编译方法、装置、设备及介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8201157B2 (en) * 2006-05-24 2012-06-12 Oracle International Corporation Dependency checking and management of source code, generated source code files, and library files

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8677314B1 (en) * 2011-08-18 2014-03-18 Google Inc. Modifying a source code file to reduce dependencies included therein
CN106777299A (zh) * 2016-12-30 2017-05-31 深圳市彬讯科技有限公司 运用管理工具与静态数据仓库的项目依赖关系解决方法
CN107608677A (zh) * 2017-09-05 2018-01-19 腾讯科技(深圳)有限公司 一种编译处理方法、装置及电子设备
CN107832059A (zh) * 2017-11-21 2018-03-23 广州视源电子科技股份有限公司 一种基于Makefile的代码静态分析方法和装置
CN108614707A (zh) * 2018-04-27 2018-10-02 深圳市腾讯网络信息技术有限公司 静态代码检查方法、装置、存储介质和计算机设备
CN110377523A (zh) * 2019-07-24 2019-10-25 网易(杭州)网络有限公司 程序调试方法及装置、电子设备和存储介质
CN110532029A (zh) * 2019-09-04 2019-12-03 深圳前海微众银行股份有限公司 小程序生成方法、装置、设备及计算机可读存储介质
CN111045683A (zh) * 2019-12-13 2020-04-21 深圳前海微众银行股份有限公司 小程序代码编译方法、装置、设备及介质

Also Published As

Publication number Publication date
CN112181429A (zh) 2021-01-05

Similar Documents

Publication Publication Date Title
CN109542399B (zh) 软件开发方法、装置、终端设备及计算机可读存储介质
US20160357519A1 (en) Natural Language Engine for Coding and Debugging
EP3859562A2 (en) Method, apparatus, electronic device, storage medium and computer program product for generating information
CN107402746B (zh) 一种自动生成代码文件的方法及装置
US9311077B2 (en) Identification of code changes using language syntax and changeset data
US9201761B1 (en) Debugging data format conversion
CN111611468B (zh) 页面交互方法、装置和电子设备
US11301366B2 (en) Test automation systems and methods using logical identifiers
JP2019523942A (ja) Cpu利用およびコードリファクタリングのためのクエリオプティマイザー
CN114153459A (zh) 接口文档生成方法及装置
CN116028028A (zh) 请求函数生成方法、装置、设备及存储介质
CN112181429B (zh) 信息处理方法、装置以及电子设备
US9563635B2 (en) Automated recognition of patterns in a log file having unknown grammar
CN112328749B (zh) 知识要素提取方法、装置、电子设备、介质和程序产品
US8813036B2 (en) Visual representation of a difference between Cartesian product models
CN111831320A (zh) 插件管理方法、装置、电子设备及存储介质
CN111898762B (zh) 深度学习模型目录创建
CN105279247A (zh) 表情库的生成方法及装置
Kleffmann et al. Towards recovering and maintaining trace links for model sketches across interactive displays
US11687735B2 (en) Method, apparatus, device and storage medium for outputting information
US8887136B2 (en) Context-based evaluation of equations
US20190095538A1 (en) Method and system for generating content from search results rendered by a search engine
CN114089980A (zh) 编程处理方法、装置、解释器及非易失性存储介质
JP7247593B2 (ja) 生成装置、ソフトウェアロボットシステム、生成方法及び生成プログラム
JP7208222B2 (ja) データレコード内のフォーマットを動的に定義する技術

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