CN110990019A - 一种Java类分析方法、装置、存储介质及电子设备 - Google Patents

一种Java类分析方法、装置、存储介质及电子设备 Download PDF

Info

Publication number
CN110990019A
CN110990019A CN201911142937.1A CN201911142937A CN110990019A CN 110990019 A CN110990019 A CN 110990019A CN 201911142937 A CN201911142937 A CN 201911142937A CN 110990019 A CN110990019 A CN 110990019A
Authority
CN
China
Prior art keywords
target
code file
class
source code
data structure
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
CN201911142937.1A
Other languages
English (en)
Other versions
CN110990019B (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 Music Entertainment Technology Shenzhen Co Ltd
Original Assignee
Tencent Music Entertainment 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 Music Entertainment Technology Shenzhen Co Ltd filed Critical Tencent Music Entertainment Technology Shenzhen Co Ltd
Priority to CN201911142937.1A priority Critical patent/CN110990019B/zh
Publication of CN110990019A publication Critical patent/CN110990019A/zh
Application granted granted Critical
Publication of CN110990019B publication Critical patent/CN110990019B/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/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/48Incremental compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • 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
    • 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

Abstract

本发明实施例公开了一种Java类分析方法、装置、存储介质及电子设备。该方案确定目标Java工程,以及目标Java工程的源代码文件;分析源代码文件,确定目标Java工程的经过第一修改的目标源代码文件;对目标源代码文件进行编译,生成目标字节码文件;确定目标字节码文件的类的历史数据结构,其中,历史数据结构为目标Java工程在第二修改后生成;基于历史数据结构,对目标字节码文件进行解析,以确定目标源代码代码文件中发生变化的类,以及类中发生变化的元素,以实现对Java文件的高效编译。

Description

一种Java类分析方法、装置、存储介质及电子设备
技术领域
本发明涉及计算机技术领域,具体涉及一种Java类分析方法、装置、存储介质及电子设备。
背景技术
增量编译是Android开发中优化工程编译速度的手段之一。其核心原理在于:对于一个Java工程来说,在修改其中的某个类之后,再次编译Java文件时,只会编译这个类对应的Java文件以及少量的其他代码文件,而非目标Java工程的全部Java文件,从而达到节省编译时间的目的。
在进行增量编译的时候,需要一种分析方法来确定一个类在修改后的目标Java工程中有哪些元素发生了变化,以在保证Java文件编译正确性的同时,实现高效编译。
发明内容
本发明实施例提供一种Java类分析方法、装置、存储介质及电子设备,旨在实现对Java文件的高效编译。
本发明实施例提供一种Java类分析方法,包括:
确定目标Java工程,以及所述目标Java工程的源代码文件;
分析所述源代码文件,确定所述目标Java工程的经过第一修改的目标源代码文件;
对所述目标源代码文件进行编译,生成目标字节码文件;
确定所述目标字节码文件的类的历史数据结构,其中,所述历史数据结构为所述目标Java工程在第二修改后生成;
基于字节码分析工具,对所述目标字节码文件进行解析,确定所述目标字节码文件中类的当前数据结构;
将所述目标字节码文件中类的当前数据结构与历史数据结构进行对比,以确定所述目标源代码文件中发生变化的类,其中,若类的当前数据结构与历史数据结构的成员变量不同,则判定类发生变化;
根据所述类的当前数据结构与历史数据结构中不同的成员变量,确定所述类中发生变化的元素。
本发明实施例还提供一种Java类分析装置,包括:
获取单元,用于确定目标Java工程,以及所述目标Java工程的源代码文件;
分析单元,用于分析所述源代码文件,确定所述目标Java工程的经过第一修改的目标源代码文件;
编译单元,用于对所述目标源代码文件进行编译,生成目标字节码文件;
所述获取单元还用于:确定所述目标字节码文件的类的历史数据结构,其中,所述历史数据结构为所述目标Java工程在第二修改后生成;
所述分析单元还用于:基于字节码分析工具,对所述目标字节码文件进行解析,确定所述目标字节码文件中类的当前数据结构;
确定单元,用于将所述目标字节码文件中类的当前数据结构与历史数据结构进行对比,以确定所述目标源代码文件中发生变化的类,其中,若类的当前数据结构与历史数据结构的成员变量不同,则判定类发生变化;
以及,根据所述类的当前数据结构与历史数据结构中不同的成员变量,确定所述类中发生变化的元素。
本发明实施例还提供一种存储介质,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本发明实施例所提供的任一Java类分析方法。
本发明实施例还提供一种电子设备,所述电子设备包括存储器、处理器及存储在所述存储器上,并可在所述处理器上运行的Java类分析程序,所述Java类分析程序被所述处理器执行时实现本发明实施例所提供的任一Java类分析方法。
本发明实施例提供的Java类分析方案,确定目标Java工程,以及目标Java工程的源代码文件;分析源代码文件,以识别出目标Java工程中经过第一修改的目标源代码文件;对目标源代码文件进行编译,生成目标字节码文件;获取目标字节码文件中类的历史数据结构,其中,历史数据结构为目标Java工程在第二修改后生成;基于历史数据结构,对目标字节码文件进行解析,确定目标字节码文件的类的当前数据结构,将当前数据结构与历史述数据结构进行对比,确定发生变化的类,再根据类的当前数据结构与历史数据结构中不同的成员变量,确定类中发生变化的元素,通过上述方案实现了对修改后的目标Java工程的源代码文件中类的变化情况进行解析,确定一个类在修改后的目标Java工程中有哪些元素发生了的变化,以在保证Java文件编译正确性的同时,实现高效编译。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的Java类分析方法的第一流程示意图;
图2a是本发明实施例提供的Java类分析方法的第二流程示意图;
图2b是本发明实施例提供的Java类分析方法的应用场景示意图;
图3a是本发明实施例提供的Java类分析装置的第一种结构示意图;
图3b是本发明实施例提供的Java类分析装置的第二种结构示意图;
图3c是本发明实施例提供的Java类分析装置的第三种结构示意图;
图4是本发明实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本发明实施例提供一种Java类分析方法,该Java类分析方法的执行主体可以是本发明实施例提供的Java类分析装置,或者集成了该Java类分析装置的电子设备,其中该Java类分析装置可以采用硬件或者软件的方式实现。其中,电子设备可以是智能手机、平板电脑、掌上电脑、笔记本电脑、或者台式电脑等设备。
请参阅图1,图1是本发明实施例提供的Java类分析方法的第一流程示意图。该Java类分析方法的具体流程可以如下:
101、确定目标Java工程,以及所述目标Java工程的源代码文件。
Java是一种具有面向对象的特点的程序设计语言。可以运行于多种平台,例如Windows、MacOS、Android等系统。Java源代码是使用Java语言编写的一系列人类可读的计算机语言指令。一个Java工程可以包含多个源代码文件,每一个源代码文件以通常是以.java后缀的文本文件形式存在。
一个目标Java工程可以进行多次编译。一般首次编译为全量编译,即会对目标Java工程中的全部源代码文件进行编译。在首次编译之后,如果根据需要对目标Java工程中的部分源代码文件进行了修改,则可以只对发生了修改的源代码文件进行编译,即进行增量编译。
但是,在进行增量编译时,需要根据修改后的目标Java工程中的类的变化情况来决定对哪些类进行编译。因此,当目标Java工程源代码文件发生了修改,则需要对源代码文件进行分析,以确定出发生变化的类,以及这些类中发生变化的元素。通过本方案确认发生变化的类中发生变化的元素之后,可以用于分析将哪些源代码文件作为增量编译的对象。
其中,在Java中的类是具备某些共同特征的实体的集合,它是一种抽象的数据类型,是对所具有相同特征实体的抽象。一般使用class关键字定义在源代码文件中。类内部包含属性、方法等元素。每个属性和方法都具有名称、访问控制符、参数列表等信息。
该实施例中,用户可以基于目标Java工程修改后的源代码文件向电子设备发送代码分析请求。电子设备在接收到代码分析请求时,根据该代码分析请求确定目标Java工程,以及该目标Java工程的源代码文件。
或者,在一些实施例中,用户可以将目标Java工程修改后的源代码文件上传至电子设备,并触发分析指令,电子设备基于该分析指令,将该目标Java工程作为目标Java工程,对该目标Java工程的源代码文件进行分析。
102、分析所述源代码文件,确定所述目标Java工程的经过第一修改的目标源代码文件。
对源代码文件进行分析,例如,获取目标Java工程的全部源代码文件,并获取全部源代码文件中的lastModify值,其中,每个源代码文件都有一个lastModify值,该值表示该源代码文件最后修改时间。获取上一次修改后的源代码文件中的全部最后修改时间,作为第二最后修改时间。将本次的第一最后修改时间与第二最后修改时间逐个进行对比,若某个源代码文件的第一最后修改时间与第二最后修改时间不一致,则可以判定该源代码文件为经过第一修改的源代码文件,将其标记为目标源代码文件。其中,第一修改是指在上次编译完成后,用户对源代码文件进行的修改。
103、对所述目标源代码文件进行编译,生成目标字节码文件。
104、确定所述目标字节码文件的类的历史数据结构,其中,所述历史数据结构为所述目标Java工程在第二修改后生成。
在确定目标源代码文件之后,对该目标源代码文件进行编译。例如,基于javac编译器编译目标源代码文件,得到字节码文件。其中,字节码文件是将.java格式的源代码文件编译生成的、Java虚拟机能够识别并运行的二进制代码。一般以.class后缀的文件形式存在,也可以称为class文件。
该实施例中,当确定出的目标源代码文件有多个时,使用javac编译器逐一对每一个目标源代码文件进行编译,生成多个对应的目标字节码文件。
105、基于字节码分析工具,对所述目标字节码文件进行解析,确定所述目标字节码文件中类的当前数据结构。
在生成各个目标源代码文件对应的目标字节码文件之后,对目标字节码文件进行解析,可以得到其中的包含的类的数据结构,即得到类的各个元素,在数据结构中,将类的各个元素表示为该数据结构的成员变量。例如,对目标字节码文件使用ASM字节码分析工具进行二进制数据的解析,得到目标字节码中的每一个类的当前数据结构。其中,类的数据结构中保存了对应类的名称、访问控制符、成员变量信息、方法信息等元素。
106、将所述目标字节码文件中类的当前数据结构与历史数据结构进行对比,以确定所述目标源代码文件中发生变化的类,其中,若类的当前数据结构与历史数据结构的成员变量不同,则判定类发生变化。
107、根据所述类的当前数据结构与历史数据结构中不同的成员变量,确定所述类中发生变化的元素。
获取目标Java工程在第二修改后的目标字节码文件中类的历史数据结构。逐一对比每一个类的当前数据结构与历史数据结构,判断数据结构中的成员变量是否发生,若数据结构中的有成员变量发生变化,则说明该成员变量对应的元素发生变化,可以判定该类发生了变化。其中,第二修改是指源代码文件在上一次编译时的修改。
开发人员在修改源代码文件时,可以根据需求对类中的元素进行修改,例如,类的名称、类的访问控制符、类内部的成员变量的名称、类内部的方法的名称、类内部的方法的参数列表等等。在本申请中,对类的数据结构进行记录,在对比时,将当前数据结构与历史数据结构中的成员变量逐一对比,确定存在不同的成员变量,这些不同的成员变量对应的元素,即为发生变化的元素。
在确定出修改后的Java工程的源代码文件中发生变化的全部类,以及这些类的中发生变化的元素之后,可以将这些信息用于进一步的Java分析。例如,根据类中发生变化的元素是否为预设元素,来判断是否需要编译这个类的子依赖集(即依赖这个类的其他类)。仅在必要的时候才把子依赖集纳入编译,可以在保证编译正确性的同时,使得每次需要编译的文件数量尽可能少,进而节省编译时间。
例如:如果一个类只是某个方法的具体内部实现发生了变化,则不需要重新编译这个类的子依赖集。而如果一个类的某个public类型的常量的值被修改了,该类的子依赖集必须要重新参与编译,由于Java编译中有常量内联机制,必须重新编译这些类以更新使用最新的常量值,确保运行达到预期目的。
在其他实施例中,还可以根据识别出的发生变化的类及类中变化的元素,用于其他的Java分析场景。
在一些实施例中,在确定目标Java工程,以及所述目标Java工程的源代码文件之后,还包括:
判断所述目标Java工程是否为首次编译;
如果是首次编译,则执行分析所述源代码文件,确定所述目标Java工程的经过第一修改的目标源代码文件的步骤。
如果目标Java工程为首次编译,则获取所述源代码文件中的第一最后修改时间并存储至第一数据库;对所述源代码文件进行编译,生成字节码文件;基于字节码分析工具,对所述字节码文件进行解析,确定所述字节码文件中类的数据结构,并将所述数据结构存储至第二数据库。
其中,在对Java工程进行首次编译时,得到字节码文件中每个类的内部结构后,可以将其存储在名为ResolvedClass的数据结构中,该数据结构中保存了对应类的名称、访问控制符、成员变量信息、方法信息等元素。在存储一个Java工程所有字节码文件中类的数据结构时,可以把所有生成的ResolvedClass保存到一个名为ResolvedClassesMap的映射表中,key为class的名称,value为ResolvedClass。在一些实施例中,该名为ResolvedClass的数据结构可以存储在第二数据库中。或者,在其他实施例中,该名为ResolvedClass的数据结构可以文件格式存储在本地。
具体实施时,本申请不受所描述的各个步骤的执行顺序的限制,在不产生冲突的情况下,某些步骤还可以采用其它顺序进行或者同时进行。
由上所述,本发明实施例提出的Java类分析方法,确定目标Java工程,以及目标Java工程的源代码文件;分析源代码文件,以识别出目标Java工程中经过第一修改的目标源代码文件;对目标源代码文件进行编译,生成目标字节码文件;获取目标字节码文件中类的历史数据结构,其中,历史数据结构为目标Java工程在第二修改后生成;基于历史数据结构,对目标字节码文件进行解析,确定目标字节码文件的类的当前数据结构,将当前数据结构与历史述数据结构进行对比,确定发生变化的类,再根据类的当前数据结构与历史数据结构中不同的成员变量,确定类中发生变化的元素,通过上述方案实现了对修改后的目标Java工程的源代码文件中类的变化情况进行解析,确定一个类在修改后的目标Java工程中有哪些元素发生了的变化,以在保证Java文件编译正确性的同时,实现高效编译。
根据前面实施例所描述的方法,以下将举例作进一步详细说明。
请参阅图2a,图2a是本发明实施例提供的Java类分析方法的第二流程示意图。所述方法包括:
201、确定目标Java工程,以及所述目标Java工程的源代码文件。
请参阅图2b,图2b是本发明实施例提供的Java类分析方法的应用场景示意图。在目标Java工程进行首次编译时进行全量编译,获取Java工程的全部源代码文件(即所有*.java文件),读取所有源代码文件的lastModify值,将每一个java文件的lastModify值存储到本地磁盘的第一数据库,例如FileSnapshot数据库中。接下来,将全部的源代码文件使用javac编译器进行编译,得到所有的class文件,即字节码文件。针对全部class文件,逐个使用ASM字节码分析工具进行二进制数据的解析,得到每个class的内部结构后,存储在名为ResolvedClass的数据结构中,该数据结构中保存了对应类的名称、访问控制符、成员变量信息、方法信息等。然后,将所有生成的ResolvedClass保存到一个名为ResolvedClassesMap的映射表中,key为class的名称,value为ResolvedClass。将ResolvedClassesMap映射表保存到本地磁盘的第二数据库,例如ResolvedClass数据库中。
上述ResolvedClass数据库中存储的ResolvedClass结构数据,以及FileSnapshot数据库中存储的源代码文件的lastModify值,可以在源代码文件发生修改后进行增量编译时使用。
基于上述对目标Java工程的首次编译流程,以下对目标Java工程的增量编译过程进行说明。
用户将Java工程修改后的源代码文件上传至电子设备,并触发分析指令,电子设备基于该分析指令,将该Java工程作为目标Java工程,对该目标Java工程的源代码文件进行分析。
202、获取所述源代码文件中的第一最后修改时间。
203、从第一数据库获取目标Java工程在第二修改后的第二最后修改时间。
根据源代码文件信息中的lastModify值,可以获取该文件的最后一次修改时间。按照该方式可以获取目标Java工程的每一个源代码文件的最后修改时间。
根据源代码文件的文件名,从FileSnapshot数据库中存储的源代码文件的lastModify值中,获取目标Java工程在第二修改后的每一个源代码文件的lastModify值,将该lastModify值作为第二最后修改时间。
204、将源代码文件的第一最后修改时间与第二最后修改时间进行对比,并且当源代码文件中的第一最后修改时间与对应的第二最后修改时间不同,则判定所述源代码文件经过第一修改,将经过第一修改的源代码文件作为目标源代码文件。
将本次获取的lastModify值与历史lastModify值逐个进行对比,若某个源代码文件的第一最后修改时间前后不一致,则可以判定该源代码文件为经过第一修改的源代码文件,将经过第一修改的源代码文件标记为目标源代码文件。
在一些实施例中,将源代码文件的第一最后修改时间与第二最后修改时间进行对比,以识别出所述目标Java工程中经过第一修改的目标源代码文件之后,还包括:将所述目标源代码文件的第一最后修改时间更新至所述第一数据库。即将修改过的java文件的lastModify值,更新到FileSnapshot数据库中,待下次增量编译使用。
205、对目标源代码文件进行编译,生成目标字节码文件。
206、基于字节码分析工具,对目标字节码文件进行解析,以确定目标字节码文件中类的当前数据结构。
使用javac编译器,对204中识别出的目标源代码文件进行编译,得到新的class文件。其中,当确定出的目标源代码文件有多个时,使用javac编译器逐一对每一个目标源代码文件进行编译,生成多个对应的目标字节码文件。针对这些class文件,使用ASM字节码分析工具进行二进制数据的解析,得到新的class的内部结构,并存储在一个新的ResolvedClass中,该ResolvedClass中的成员变量对应于类的元素。其中,类的元素包括类的名称、访问控制符、成员变量信息、方法信息等。
对目标字节码文件使用ASM字节码分析工具进行二进制数据的解析,得到目标字节码中的每一个类的当前数据结构。
207、从第二数据库中,获取所述目标字节码文件中类的名称对应的数据历史数据结构。
208、基于类的名称,将所述目标字节码文件中类的当前数据结构与对应的历史数据结构进行对比,以识别出发生变化的类,其中,若类的当前数据结构与历史数据结构中有成员变量不同,则判定类发生变化。
确定所述目标字节码文件的类的名称;从第二数据库中,获取所述类的名称对应的数据结构,将获取的数据结构作为所述类的历史数据结构。具体地,从ResolvedClass数据库中,使用当前的目标源文件中类的名字,获取到上一次的ResolvedClass(即旧的ResolvedClass)。
基于字节码分析工具,对目标字节码文件进行解析,确定目标字节码文件中类的当前数据结构;将目标字节码文件中类的当前数据结构与历史数据结构进行对比,以确定目标源代码文件中发生变化的类,其中,若类的当前数据结构与历史数据结构的成员变量不同,则判定类发生变化;根据所述类的当前数据结构与历史数据结构中不同的成员变量,确定所述类中发生变化的元素。
209、根据所述类的当前数据结构与历史数据结构中不同的成员变量,确定所述类中发生变化的元素。
210、当发生变化的元素为预设元素时,确定发生变化的类的子依赖集,并对所述子依赖集对应的源代码文件进行编译,生成字节码文件。
在确定出修改后的Java工程的源代码文件中发生变化的全部类,以及这些类的中发生变化的元素之后,判断发生变化的元素是否为预设元素,当发生变化的元素属于特定的元素时,需要重新编译这个类的子依赖集。例如,预设元素为类的public类型的常量的值等。如果一个类的某个public类型的常量的值被修改了,其子依赖集必须要重新参与编译,因为Java编译中有常量内联机制,必须重新编译这些类以更新使用最新的常量值,确保运行达到预期目的。在其他实施例中,预设元素也可以是其他元素,用户可以根据需要设置。
其中,子依赖集是由与该类有依赖关系的其他类构成的合集。确定子依赖集中的类所在的源代码文件,则这些源代码文件也是本次增量编译的对象,对这些源代码文件,生成字节码文件,以完成目标Java工程的本次增量编译。
此外,可以理解的是,由于每次进行增量编译时,都会根据文件变化情况对ResolvedClass数据库中的ResolvedClass数据结构,以及FileSnapshot数据库中的lastModify值进行更新,因此,在Java工程中有源代码文件再次发生变化的话,可以按照同样的方式对发生变化的类进行自动识别,并确认发生变化的类中变化的元素,进而确定出子依赖集,实现自动的增量编译,不需要开发人员手动查找哪些源代码文件需要编译。
由上所述,本发明实施例提出的Java类分析方法,在对Java工程进行编译时,获取源代码文件进行分析,识别出Java工程中经过第一修改的目标源代码文件,将这些目标源代码文件编译为字节码文件之后,对字节码文件进行解析,确定该字节码文件中类的数据结构,然后,逐一对比各类当前的数据结构与上次Java工程修改后的数据结构,以识别出数据结构中发生变化的成员变量,根据这些发生变化的成员变量确定类中发生变化的元素,进而判断发生变化的元素是否为预设元素,如果是预设元素,则确定出发生变化的类对应的子依赖集,再将子依赖集所属的源代码文件编译字节码文件,以完成Java工程的增量编译。
为了实施以上方法,本发明实施例还提供一种Java类分析装置,该Java类分析装置具体可以集成在终端设备如手机、平板电脑等设备中。
例如,请参阅图3a,图3a是本发明实施例提供的Java类分析装置的第一种结构示意图。该Java类分析装置可以包括获取单元301、分析单元302和编译单元303,如下:
获取单元301,用于确定目标Java工程,以及所述目标Java工程的源代码文件;
分析单元302,用于分析所述源代码文件,确定所述目标Java工程的经过第一修改的目标源代码文件;
编译单元303,用于对所述目标源代码文件进行编译,生成目标字节码文件;
获取单元301还用于:确定所述目标字节码文件的类的历史数据结构,其中,所述历史数据结构为所述目标Java工程在第二修改后生成;
分析单元302还用于:基于字节码分析工具,对所述目标字节码文件进行解析,确定所述目标字节码文件中类的当前数据结构;
确定单元304,用于将所述目标字节码文件中类的当前数据结构与历史数据结构进行对比,以确定所述目标源代码文件中发生变化的类,其中,若类的当前数据结构与历史数据结构的成员变量不同,则判定类发生变化;
以及,根据所述类的当前数据结构与历史数据结构中不同的成员变量,确定所述类中发生变化的元素。
在一些实施例中,分析单元302还用于:
获取所述源代码文件中的第一最后修改时间;
从第一数据库,获取所述目标Java工程在第二修改后的第二最后修改时间;
将源代码文件的第一最后修改时间与第二最后修改时间进行对比,以识别出所述目标Java工程中经过第一修改的目标源代码文件,其中,当源代码文件中的第一最后修改时间与对应的第二最后修改时间不同,则判定所述源代码文件经过第一修改。
请参阅图3b,图3b是本发明实施例提供的Java类分析装置的第二种结构示意图。在一些实施例中,该Java类分析装置还可以包括更新单元305,如下:
更新单元305用于:将所述目标源代码文件的第一最后修改时间更新至所述第一数据库。
在一些实施例中,获取单元301还用于:
确定所述目标字节码文件的类的名称;
从第二数据库中,获取所述类的名称对应的数据结构,将获取的数据结构作为所述类的历史数据结构。
请参阅图3c,图3c是本发明实施例提供的Java类分析装置的第三种结构示意图。在一些实施例中,该Java类分析装置还可以包括判断单元306,如下:
判断单元306用于:判断所述目标Java工程是否为首次编译;
分析单元302还用于:若所述目标Java工程不是首次编译,则分析所述源代码文件,确定所述目标Java工程的经过第一修改的目标源代码文件。
在一些实施例中,更新单元305还用于:若所述目标Java工程为首次编译,则获取所述源代码文件中的第一最后修改时间并存储至第一数据库;
编译单元303还用于:对所述源代码文件进行编译,生成字节码文件;
分析单元302还用于:基于字节码分析工具,对所述字节码文件进行解析,确定所述字节码文件中类的数据结构,并将所述数据结构存储至第二数据库。
在一些实施例中,判断单元306还用于:判断发生变化的元素是否为预设元素;
编译单元303还用于:若发生变化的元素为预设元素,则确定所述发生变化的类的子依赖集;
对所述子依赖集对应的源代码文件进行编译,生成字节码文件。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
应当说明的是,本发明实施例提供的Java类分析装置与上文实施例中的Java类分析方法属于同一构思,在Java类分析装置上可以运行Java类分析方法实施例中提供的任一方法,其具体实现过程详见Java类分析方法实施例,此处不再赘述。
本发明实施例提出的Java类分析装置,获取单元301确定目标Java工程,以及目标Java工程的源代码文件;分析单元302分析源代码文件,以识别出目标Java工程中经过第一修改的目标源代码文件;编译单元303对目标源代码文件进行编译,生成目标字节码文件;获取目标字节码文件中类的历史数据结构,其中,历史数据结构为目标Java工程在第二修改后生成;基于历史数据结构,对目标字节码文件进行解析,确定目标字节码文件的类的当前数据结构,确定单元304将当前数据结构与历史述数据结构进行对比,确定发生变化的类,再根据类的当前数据结构与历史数据结构中不同的成员变量,确定类中发生变化的元素,通过上述方案实现了对修改后的目标Java工程的源代码文件中类的变化情况进行解析,确定一个类在修改后的目标Java工程中有哪些元素发生了的变化,以在保证Java文件编译正确性的同时,实现高效编译。
本发明实施例还提供一种电子设备,请参阅图4,图4是本发明实施例提供的电子设备的结构示意图。具体来讲:
该电子设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图4中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器401是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监控。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
电子设备还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该电子设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,电子设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,电子设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
确定目标Java工程,以及所述目标Java工程的源代码文件;
分析所述源代码文件,确定所述目标Java工程的经过第一修改的目标源代码文件;
对所述目标源代码文件进行编译,生成目标字节码文件;
确定所述目标字节码文件的类的历史数据结构,其中,所述历史数据结构为所述目标Java工程在第二修改后生成;
基于字节码分析工具,对所述目标字节码文件进行解析,确定所述目标字节码文件中类的当前数据结构;
将所述目标字节码文件中类的当前数据结构与历史数据结构进行对比,以确定所述目标源代码文件中发生变化的类,其中,若类的当前数据结构与历史数据结构的成员变量不同,则判定类发生变化;
根据所述类的当前数据结构与历史数据结构中不同的成员变量,确定所述类中发生变化的元素。
在一些实施例中,处理器401运行存储在存储器402中的应用程序,还可以实现如下功能:
获取所述源代码文件中的第一最后修改时间;
从第一数据库,获取所述目标Java工程在第二修改后的第二最后修改时间;
将源代码文件的第一最后修改时间与第二最后修改时间进行对比,以识别出所述目标Java工程中经过第一修改的目标源代码文件,其中,当源代码文件中的第一最后修改时间与对应的第二最后修改时间不同,则判定所述源代码文件经过第一修改。
在一些实施例中,处理器401运行存储在存储器402中的应用程序,还可以实现如下功能:
将所述目标源代码文件的第一最后修改时间更新至所述第一数据库。
在一些实施例中,处理器401运行存储在存储器402中的应用程序,还可以实现如下功能:
确定所述目标字节码文件的类的名称;
从第二数据库中,获取所述类的名称对应的数据结构,将获取的数据结构作为所述类的历史数据结构。
在一些实施例中,处理器401运行存储在存储器402中的应用程序,还可以实现如下功能:
判断所述目标Java工程是否为首次编译;
若否,则执行分析所述源代码文件,确定所述目标Java工程的经过第一修改的目标源代码文件的步骤。
在一些实施例中,处理器401运行存储在存储器402中的应用程序,还可以实现如下功能:
若所述目标Java工程为首次编译,则获取所述源代码文件中的第一最后修改时间并存储至第一数据库;
对所述源代码文件进行编译,生成字节码文件;
基于字节码分析工具,对所述字节码文件进行解析,确定所述字节码文件中类的数据结构,并将所述数据结构存储至第二数据库。
在一些实施例中,处理器401运行存储在存储器402中的应用程序,还可以实现如下功能:
判断发生变化的元素是否为预设元素;
若是,则确定所述发生变化的类的子依赖集;
对所述子依赖集对应的源代码文件进行编译,生成字节码文件。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
由上所述,本发明实施例提出的电子设备,确定目标Java工程,以及目标Java工程的源代码文件;分析源代码文件,以识别出目标Java工程中经过第一修改的目标源代码文件;对目标源代码文件进行编译,生成目标字节码文件;获取目标字节码文件中类的历史数据结构,其中,历史数据结构为目标Java工程在第二修改后生成;基于历史数据结构,对目标字节码文件进行解析,确定目标字节码文件的类的当前数据结构,将当前数据结构与历史述数据结构进行对比,确定发生变化的类,再根据类的当前数据结构与历史数据结构中不同的成员变量,确定类中发生变化的元素,通过上述方案实现了对修改后的目标Java工程的源代码文件中类的变化情况进行解析,确定一个类在修改后的目标Java工程中有哪些元素发生了的变化,以在保证Java文件编译正确性的同时,实现高效编译。
为此,本发明实施例提供一种存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种Java类分析方法中。
例如,该指令可以执行:
确定目标Java工程,以及所述目标Java工程的源代码文件;
分析所述源代码文件,确定所述目标Java工程的经过第一修改的目标源代码文件;
对所述目标源代码文件进行编译,生成目标字节码文件;
确定所述目标字节码文件的类的历史数据结构,其中,所述历史数据结构为所述目标Java工程在第二修改后生成;
基于字节码分析工具,对所述目标字节码文件进行解析,确定所述目标字节码文件中类的当前数据结构;
将所述目标字节码文件中类的当前数据结构与历史数据结构进行对比,以确定所述目标源代码文件中发生变化的类,其中,若类的当前数据结构与历史数据结构的成员变量不同,则判定类发生变化;
根据所述类的当前数据结构与历史数据结构中不同的成员变量,确定所述类中发生变化的元素。
以上操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本发明实施例所提供的任一种Java类分析方法,因此,可以实现本发明实施例所提供的任一种Java类分析方法所能实现的有益效果,详见前面的实施例,在此不再赘述。以上对本发明实施例所提供的一种Java类分析方法、装置及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。

Claims (11)

1.一种Java类分析方法,其特征在于,包括:
确定目标Java工程,以及所述目标Java工程的源代码文件;
分析所述源代码文件,确定所述目标Java工程的经过第一修改的目标源代码文件;
对所述目标源代码文件进行编译,生成目标字节码文件;
确定所述目标字节码文件的类的历史数据结构,其中,所述历史数据结构为所述目标Java工程在第二修改后生成;
基于字节码分析工具,对所述目标字节码文件进行解析,确定所述目标字节码文件中类的当前数据结构;
将所述目标字节码文件中类的当前数据结构与历史数据结构进行对比,以确定所述目标源代码文件中发生变化的类,其中,若类的当前数据结构与历史数据结构的成员变量不同,则判定类发生变化;
根据所述类的当前数据结构与历史数据结构中不同的成员变量,确定所述类中发生变化的元素。
2.如权利要求1所述的Java类分析方法,其特征在于,所述分析所述源代码文件,确定所述目标Java工程的经过第一修改的目标源代码文件,包括:
获取所述源代码文件中的第一最后修改时间;
从第一数据库,获取所述目标Java工程在第二修改后的第二最后修改时间;
将源代码文件的第一最后修改时间与第二最后修改时间进行对比,以识别出所述目标Java工程中经过第一修改的目标源代码文件,其中,当源代码文件中的第一最后修改时间与对应的第二最后修改时间不同,则判定所述源代码文件经过第一修改。
3.如权利要求2所述的Java类分析方法,其特征在于,所述将源代码文件的第一最后修改时间与第二最后修改时间进行对比,以识别出所述目标Java工程中经过第一修改的目标源代码文件之后,还包括:
将所述目标源代码文件的第一最后修改时间更新至所述第一数据库。
4.如权利要求1所述的Java类分析方法,其特征在于,所述确定所述目标字节码文件的类的历史数据结构,包括:
确定所述目标字节码文件的类的名称;
从第二数据库中,获取所述类的名称对应的数据结构,将获取的数据结构作为所述类的历史数据结构。
5.如权利要求1所述的Java类分析方法,其特征在于,所述确定目标Java工程,以及所述目标Java工程的源代码文件之后,还包括:
判断所述目标Java工程是否为首次编译;
若否,则执行分析所述源代码文件,确定所述目标Java工程的经过第一修改的目标源代码文件的步骤。
6.如权利要求5所述的Java类分析方法,其特征在于,所述判断所述目标Java工程是否为首次编译之后,还包括:
若所述目标Java工程为首次编译,则获取所述源代码文件中的第一最后修改时间并存储至第一数据库;
对所述源代码文件进行编译,生成字节码文件;
基于字节码分析工具,对所述字节码文件进行解析,确定所述字节码文件中类的数据结构,并将所述数据结构存储至第二数据库。
7.如权利要求1至6任一项所述的Java类分析方法,其特征在于,所述确定所述类中发生变化的元素之后,还包括:
判断发生变化的元素是否为预设元素;
若是,则确定所述发生变化的类的子依赖集;
对所述子依赖集对应的源代码文件进行编译,生成字节码文件。
8.一种Java类分析装置,其特征在于,包括:
获取单元,用于确定目标Java工程,以及所述目标Java工程的源代码文件;
分析单元,用于分析所述源代码文件,确定所述目标Java工程的经过第一修改的目标源代码文件;
编译单元,用于对所述目标源代码文件进行编译,生成目标字节码文件;
所述获取单元还用于:确定所述目标字节码文件的类的历史数据结构,其中,所述历史数据结构为所述目标Java工程在第二修改后生成;
所述分析单元还用于:基于字节码分析工具,对所述目标字节码文件进行解析,确定所述目标字节码文件中类的当前数据结构;
确定单元,用于将所述目标字节码文件中类的当前数据结构与历史数据结构进行对比,以确定所述目标源代码文件中发生变化的类,其中,若类的当前数据结构与历史数据结构的成员变量不同,则判定类发生变化;
以及,根据所述类的当前数据结构与历史数据结构中不同的成员变量,确定所述类中发生变化的元素。
9.如权利要求8所述的Java类分析装置,其特征在于,所述分析单元还用于:
获取所述源代码文件中的第一最后修改时间;
从第一数据库,获取所述目标Java工程在第二修改后的第二最后修改时间;
将源代码文件的第一最后修改时间与第二最后修改时间进行对比,以识别出所述目标Java工程中经过第一修改的目标源代码文件,其中,当源代码文件中的第一最后修改时间与对应的第二最后修改时间不同,则判定所述源代码文件经过第一修改。
10.一种存储介质,其特征在于,所述存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至7任一项所述的Java类分析方法。
11.一种电子设备,其特征在于,包括:存储器、处理器及存储在所述存储器上,并可在所述处理器上运行的Java类分析程序,所述Java类分析程序被所述处理器执行时实现权利要求1至7任一项所述的方法。
CN201911142937.1A 2019-11-20 2019-11-20 一种Java类分析方法、装置、存储介质及电子设备 Active CN110990019B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911142937.1A CN110990019B (zh) 2019-11-20 2019-11-20 一种Java类分析方法、装置、存储介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911142937.1A CN110990019B (zh) 2019-11-20 2019-11-20 一种Java类分析方法、装置、存储介质及电子设备

Publications (2)

Publication Number Publication Date
CN110990019A true CN110990019A (zh) 2020-04-10
CN110990019B CN110990019B (zh) 2023-05-02

Family

ID=70085468

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911142937.1A Active CN110990019B (zh) 2019-11-20 2019-11-20 一种Java类分析方法、装置、存储介质及电子设备

Country Status (1)

Country Link
CN (1) CN110990019B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111610999A (zh) * 2020-05-26 2020-09-01 北京字节跳动网络技术有限公司 一种检查方法、装置、计算机设备及存储介质
CN111638884A (zh) * 2020-05-19 2020-09-08 贝壳技术有限公司 一种插件化工程编译的方法、系统、装置和存储介质
CN111666095A (zh) * 2020-06-09 2020-09-15 山东健康医疗大数据有限公司 Java反编译的实现方法、系统、设备及存储介质
CN112685049A (zh) * 2021-01-22 2021-04-20 大连高德瑞信科技有限公司 一种java字节码编译方法
CN112783508A (zh) * 2021-02-01 2021-05-11 北京百度网讯科技有限公司 文件的编译方法、装置、设备以及存储介质
CN113157296A (zh) * 2021-04-27 2021-07-23 北京达佳互联信息技术有限公司 编译文件的更新方法、装置、服务器及存储介质
CN115878125A (zh) * 2022-11-11 2023-03-31 盐城金堤科技有限公司 生成类的扩展方法、装置、存储介质及电子设备

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978585A (en) * 1997-03-27 1999-11-02 Inprise Corporation Development system with improved methods for recompiling dependent code modules
US6336213B1 (en) * 1998-12-03 2002-01-01 International Business Machines Corporation Method and apparatus for dynamic selection of which bytecodes should be just in time compiled
US6463578B1 (en) * 1999-11-23 2002-10-08 International Business Machines Corporation Systems, methods and computer program products for debugging java server page files using compiled java class file modifications
US20080134156A1 (en) * 2006-12-02 2008-06-05 Matt Osminer Methods and apparatus for analyzing software interface usage
JP2010026728A (ja) * 2008-07-17 2010-02-04 Internatl Business Mach Corp <Ibm> プログラム変換システム
US7836438B1 (en) * 2003-12-30 2010-11-16 Sap Ag Modified classfile registration with a dispatch unit that is responsible for dispatching invocations during runtime execution of modified bytecode
CN103186380A (zh) * 2011-12-31 2013-07-03 北大方正集团有限公司 Apk的开发方法和装置
US20130212567A1 (en) * 2012-02-13 2013-08-15 Microsoft Corporation Generating and caching software code
US20170192952A1 (en) * 2015-12-30 2017-07-06 Sap Se Systems and methods for tracking and modifying actions in an action history
US20180032605A1 (en) * 2015-02-18 2018-02-01 Persistent Systems Limited Integrated intermediary computing device for data analytic enhancement
CN107992723A (zh) * 2017-11-29 2018-05-04 南京莱斯信息技术股份有限公司 一种基于动态链接库的Java源码保护方法
CN108628635A (zh) * 2018-05-07 2018-10-09 广州视源电子科技股份有限公司 获取参数名和局部变量名的方法、装置、设备及存储介质
CN109740315A (zh) * 2018-12-28 2019-05-10 深圳前海微众银行股份有限公司 基于安卓平台的常量保护方法、装置、设备及存储介质
CN110069905A (zh) * 2019-04-26 2019-07-30 深圳智慧园区信息技术有限公司 一种Springboot程序加密和解密的装置及方法

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5978585A (en) * 1997-03-27 1999-11-02 Inprise Corporation Development system with improved methods for recompiling dependent code modules
US6336213B1 (en) * 1998-12-03 2002-01-01 International Business Machines Corporation Method and apparatus for dynamic selection of which bytecodes should be just in time compiled
US6463578B1 (en) * 1999-11-23 2002-10-08 International Business Machines Corporation Systems, methods and computer program products for debugging java server page files using compiled java class file modifications
US7836438B1 (en) * 2003-12-30 2010-11-16 Sap Ag Modified classfile registration with a dispatch unit that is responsible for dispatching invocations during runtime execution of modified bytecode
US20080134156A1 (en) * 2006-12-02 2008-06-05 Matt Osminer Methods and apparatus for analyzing software interface usage
JP2010026728A (ja) * 2008-07-17 2010-02-04 Internatl Business Mach Corp <Ibm> プログラム変換システム
CN103186380A (zh) * 2011-12-31 2013-07-03 北大方正集团有限公司 Apk的开发方法和装置
US20130212567A1 (en) * 2012-02-13 2013-08-15 Microsoft Corporation Generating and caching software code
US20180032605A1 (en) * 2015-02-18 2018-02-01 Persistent Systems Limited Integrated intermediary computing device for data analytic enhancement
US20170192952A1 (en) * 2015-12-30 2017-07-06 Sap Se Systems and methods for tracking and modifying actions in an action history
CN107992723A (zh) * 2017-11-29 2018-05-04 南京莱斯信息技术股份有限公司 一种基于动态链接库的Java源码保护方法
CN108628635A (zh) * 2018-05-07 2018-10-09 广州视源电子科技股份有限公司 获取参数名和局部变量名的方法、装置、设备及存储介质
CN109740315A (zh) * 2018-12-28 2019-05-10 深圳前海微众银行股份有限公司 基于安卓平台的常量保护方法、装置、设备及存储介质
CN110069905A (zh) * 2019-04-26 2019-07-30 深圳智慧园区信息技术有限公司 一种Springboot程序加密和解密的装置及方法

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111638884A (zh) * 2020-05-19 2020-09-08 贝壳技术有限公司 一种插件化工程编译的方法、系统、装置和存储介质
CN111638884B (zh) * 2020-05-19 2021-07-23 贝壳找房(北京)科技有限公司 一种插件化工程编译的方法、系统、装置和存储介质
CN111610999A (zh) * 2020-05-26 2020-09-01 北京字节跳动网络技术有限公司 一种检查方法、装置、计算机设备及存储介质
CN111666095A (zh) * 2020-06-09 2020-09-15 山东健康医疗大数据有限公司 Java反编译的实现方法、系统、设备及存储介质
CN112685049A (zh) * 2021-01-22 2021-04-20 大连高德瑞信科技有限公司 一种java字节码编译方法
CN112685049B (zh) * 2021-01-22 2024-02-13 大连高德瑞信科技有限公司 一种java字节码编译方法
CN112783508A (zh) * 2021-02-01 2021-05-11 北京百度网讯科技有限公司 文件的编译方法、装置、设备以及存储介质
CN113157296A (zh) * 2021-04-27 2021-07-23 北京达佳互联信息技术有限公司 编译文件的更新方法、装置、服务器及存储介质
CN113157296B (zh) * 2021-04-27 2024-03-12 北京达佳互联信息技术有限公司 编译文件的更新方法、装置、服务器及存储介质
CN115878125A (zh) * 2022-11-11 2023-03-31 盐城金堤科技有限公司 生成类的扩展方法、装置、存储介质及电子设备
CN115878125B (zh) * 2022-11-11 2024-02-06 盐城天眼察微科技有限公司 生成类的扩展方法、装置、存储介质及电子设备

Also Published As

Publication number Publication date
CN110990019B (zh) 2023-05-02

Similar Documents

Publication Publication Date Title
CN110990019B (zh) 一种Java类分析方法、装置、存储介质及电子设备
US9213707B2 (en) Ordered access of interrelated data files
US11579856B2 (en) Multi-chip compatible compiling method and device
CN111309335B (zh) 插件应用的编译方法、装置及计算机可读存储介质
US20160098346A1 (en) Assisted garbage collection in a virtual machine
CN111399853A (zh) 机器学习模型与自定义算子的模板化部署方法
CN112783912B (zh) 一种数据处理方法、装置、计算机设备及存储介质
CN111625289B (zh) 应用程序快速启动方法、装置和电子设备
US9311077B2 (en) Identification of code changes using language syntax and changeset data
CN111176722B (zh) 第三方库的文件版本检测方法、装置及存储介质
US9535687B2 (en) Audited builds based upon separate class dependency records
US20130145343A1 (en) Workspace model for interrelated projects
CN109558121A (zh) 接口驱动程序的开发方法、装置、设备及存储介质
KR100834676B1 (ko) 소프트웨어 프로젝트 빌드 방법
CN111880804A (zh) 应用程序代码的处理方法及装置
CN116360887A (zh) 一种程序参数加载方法、装置、设备及存储介质
CN116578282A (zh) 代码生成方法、装置、电子设备及介质
CN115437639A (zh) 编译配置文件的自动生成方法、装置、电子设备及存储介质
CN113961238A (zh) 对象转换方法、装置及电子设备和存储介质
CN114625376A (zh) 数据传递方式转化方法、装置、电子设备及可读存储介质
CN112306493A (zh) 热修复补丁生成方法、装置、存储介质及计算机设备
US6311227B1 (en) Procedure calling method
CN113296786B (zh) 数据处理方法、装置、电子设备及存储介质
CN113590166B (zh) 应用程序的更新方法、装置以及计算机可读存储介质
CN112162776B (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