CN109240698A - 一种增量编译处理方法及装置 - Google Patents

一种增量编译处理方法及装置 Download PDF

Info

Publication number
CN109240698A
CN109240698A CN201710429270.8A CN201710429270A CN109240698A CN 109240698 A CN109240698 A CN 109240698A CN 201710429270 A CN201710429270 A CN 201710429270A CN 109240698 A CN109240698 A CN 109240698A
Authority
CN
China
Prior art keywords
file
java
inventory
compilation
target
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
CN201710429270.8A
Other languages
English (en)
Other versions
CN109240698B (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.)
China Mobile Zhejiang Innovation Research Institute Co ltd
China Mobile Communications Group Co Ltd
China Mobile Group Zhejiang Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Group Zhejiang 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 China Mobile Communications Group Co Ltd, China Mobile Group Zhejiang Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN201710429270.8A priority Critical patent/CN109240698B/zh
Publication of CN109240698A publication Critical patent/CN109240698A/zh
Application granted granted Critical
Publication of CN109240698B publication Critical patent/CN109240698B/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/48Incremental compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明实施例提供一种增量编译处理方法及装置。所述方法包括:获取初始编译清单;所述初始编译清单包括删除Java文件的文件名称和/或变更Java文件的文件名称;根据所述初始编译清单,获取风险文件清单;所述风险文件清单包括所述删除Java文件的文件名称,和/或包括静态常量的变更Java文件的文件名称;根据所述初始编译清单、所述风险文件清单和引用关系缓存列表,获取增量编译清单;根据所述增量编译清单,进行增量编译处理。所述装置用于执行上述方法。本发明提供的方法及装置提高了编译结果的安全性。

Description

一种增量编译处理方法及装置
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种增量编译处理方法及装置。
背景技术
随着开发运维一体化(Development Operations,DevOps)实践日趋成熟,持续交付在企业中大量应用。持续交付是指通过流水线的对代码进行编译、打包、部署,并获取用户反馈改进该过程,自动化编译是整个持续交付流水线的基础,因此,编译结果的准确性越来越受到关注。
目前流水线主流的编译方式有三种,全量编译、增量编译和人工编译针对一些历史存留的巨石***,工程代码庞大,模块之间耦合严重,层级关系复杂,若采用全量编译,则耗时过长(持续交付要求整个流水线在5-10分钟内完成,而巨石应用全量编译往往超过30分钟),无法达到持续交付的要求;若采用增量编译,则基于Java语言本身编译的特点,如果是删除Java文件或修改静态常量,引用该内容的其他Java文件不会被重新编译,且引用该内容的Class文件不会发生变化,而运行时该部分Class文件仍可能被加载,从而导致逻辑错误;若采用人工编译,虽然加快编译发布的速度,但是DevOps工程师采用文件替换的方式进行人工编译,在这个过程中DevOps工程师可能会凭借个人经验和业务模块逻辑依赖关系在增量替换文件或目录,同时也存在采用增量编译产生的问题。综上所述,在达到持续交付的要求的前提下,现有技术条件下的编译方法均会大大影响的编译结果的安全性。
因此,如何提出一种方法来提高增量编译的编译结果安全性问题是目前业界亟待解决的重要课题。
发明内容
针对现有技术中的缺陷,本发明实施例提供一种增量编译处理方法及装置。
一方面,本发明实施例提供一种增量编译处理方法,包括:
获取初始编译清单;所述初始编译清单包括删除Java文件的文件名称和/或变更Java文件的文件名称;
根据所述初始编译清单,获取风险文件清单;所述风险文件清单包括所述删除Java文件的文件名称,和/或包括静态常量的变更Java文件的文件名称;
根据所述初始编译清单、所述风险文件清单和引用关系缓存列表,获取增量编译清单;
根据所述增量编译清单,进行增量编译处理。
另一方面,本发明实施例提供一种增量编译处理装置,包括:
第一获取单元,用于获取初始编译清单;所述初始编译清单包括删除Java文件的文件名称和/或变更Java文件的文件名称;
第二获取单元,用于根据所述初始编译清单,获取风险文件清单;所述风险文件清单包括所述删除Java文件的文件名称,和/或包括静态常量的变更Java文件的文件名称;
第三获取单元,用于根据所述初始编译清单、所述风险文件清单和引用关系缓存列表,获取增量编译清单;
编译单元,用于根据所述增量编译清单,进行增量编译处理。
又一方面,本发明实施例提供一种电子设备,包括处理器、存储器和总线,其中:
所述处理器,通过所述总线与所述存储器进行通信;
所述处理器可以调用存储器中的计算机程序,以执行上述方法的步骤。
再一方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。
本发明实施例提供的增量编译处理方法及装置,通过根据获取到的初始编译清单获取风险文件清单,并根据所述初始编译清单、所述风险文件清单和引用关系缓存列表,获取增量编译清单,从而根据所述增量编译清单进行增量编译处理,提高了编译结果的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的增量编译处理方法的流程示意图;
图2为本发明实施例提供的增量编译处理方法的整体流程示意图;
图3为本发明一实施例提供的增量编译处理装置的结构示意图;
图4为本发明另一实施例提供的增量编译处理装置的结构示意图;
图5为本发明实施例提供的电子设备实体装置结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的增量编译处理方法的流程示意图,如图1所示,本实施例提供一种增量编译处理方法,包括:
S101、获取初始编译清单;所述初始编译清单包括删除Java文件的文件名称和/或变更Java文件的文件名称;
具体地,增量编译处理装置从源代码管理服务器下载所述初始编译清单,所述初始编译清单包括初始Java文件的文件名称,所述初始Java文件可以仅包括删除Java文件,也可以只包括变更Java文件,也可以同时包括所述删除Java文件和所述变更Java文件,当然,所述初始Java文件还可以包括其他类型的Java文件,具体可以根据实际情况进行调整,此处不做具体限定。
S102、根据所述初始编译清单,获取风险文件清单;所述风险文件清单包括所述删除Java文件的文件名称,和/或包括静态常量的变更Java文件的文件名称;
具体地,所述装置对所述初始编译清单进行分析,根据所述初始编译清单包括的初始Java文件的文件名称,获取所述初始Java文件的操作类型,并根据所述初始Java文件的操作类型,获取全部的删除Java文件作为风险文件;或者,获取所述变更Java文件中包括静态常量的变更Java文件作为所述风险文件;或者,获取所述全部的删除Java文件和所述变更Java文件中包括静态常量的变更Java文件作为所述风险文件,并根据所述风险文件生成所述风险文件清单。可以理解的是,所述风险文件也就是可能造成编译业务风险的文件。
S103、根据所述初始编译清单、所述风险文件清单和引用关系缓存列表,获取增量编译清单;
具体地,所述装置根据所述风险文件清单和引用关系缓存列表,获取所述风险文件所引用的Java文件作为风险引用Java文件,生成风险引用Java文件清单,并根据所述风险引用Java文件清单与所述初始编译清单,获取增量编译清单。可以理解的是,所述增量编译清单中不仅包括初始Java文件的文件名称,而且包括了可能产生业务危险的风险引用Java文件的文件名称;所述引用关系缓存列表包括记录各个Java文件与其他Java文件的应用关系。
S104、根据所述增量编译清单,进行增量编译处理。
具体地,所述装置根据所述增量编译清单中包括的目标Java文件的文件名称,获取所述目标Java文件,对所述目标Java文件进行增量编译,获得目标Class文件,并将所述目标Class文件进行打包,生成目标Jar包,并将所述目标Jar包通过流水线部署到应用服务器。
本发明实施例提供的增量编译处理方法,通过根据获取到的初始编译清单获取风险文件清单,并根据所述初始编译清单、所述风险文件清单和引用关系缓存列表,获取增量编译清单,从而根据所述增量编译清单进行增量编译处理,提高了编译结果的安全性。
在上述实施例的基础上,进一步地,所述根据所述增量编译清单,进行增量编译处理,包括:
根据所述增量编译清单获取目标Java文件;
对所述目标Java文件进行增量编译,获得目标Class文件,并将所述目标Class文件进行打包,生成目标Jar包。
具体地,所述装置根据所述增量编译清单获取其中包括的文件名称,获取所述初始Java文件和所述风险引用Java文件,作为所述目标Java文件,然后,对所述目标Java文件进行增量编译,获得所述目标Class文件,并将所述目标Class文件进行打包,生成目标Jar包,并将所述目标Jar包通过流水线部署到应用服务器。应当说明的是,所述装置还可以预先设置过滤策略,对所述增量编译清单中包括的所述初始Java文件的文件名称和所述风险引用Java文件的文件名称按照所述过滤策略进行过滤,将过滤后获得的Java文件的文件名称作为所述目标Java文件的文件名称;所述过滤规则可以包括路径正则表达式和静态常量判定规则,还可以包括其他过滤规则,具体可以根据实际情况进行调整,此处不做具体限定。
在上述实施例的基础上,进一步地,所述方法还包括:
根据所述目标Java文件,获取所述目标Java文件对应的目标引用Java文件,并根据所述目标Java文件和所述目标引用Java文件,对所述引用关系缓存列表进行更新;其中,所述目标引用Java文件为引用所述目标Java文件的Java文件;
根据所述目标Class文件,获取所述目标Class文件对应的目标静态常量,并根据所述目标静态常量对所述静态常量缓存列表进行更新;所述目标静态常量为所述目标Class文件包括的静态常量。
具体地,所述装置对所述目标Java文件进行解析,通过正则表达式进行过滤,获取引用所述目标Java文件的Java文件作为所述目标引用Java文件,将所述目标Java文件与所述目标引用Java文件之间的引用关系记录入所述引用关系缓存列表,完成对所述引用关系缓存列表的更新;并且,所述装置对所述目标Class文件进行反射处理,获取所述目标Class文件包括的静态常量作为所述目标静态常量,并将所述目标静态常量记录入所述静态常量缓存列表,完成对所述静态常量缓存列表的更新。
在上述实施例的基础上,进一步地,所述初始编译清单包括初始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文件同时包括所述删除Java文件和所述变更Java文件,则根据所述变更Java文件的文件名称和静态常量缓存列表,获取包括静态常量的变更Java文件,并将所述包括静态常量的变更Java文件以及所述删除Java文件作为所述风险文件;获取到所述风险文件后,所述装置根据所述风险文件生成风险文件清单。应当说明的是,所述装置在所述静态常量缓存列表中查找所述变更Java文件的文件名称,若查找到所述变更Java文件的文件名称,则判定所述变更Java文件包括所述静态常量,若没有查找到所述变更Java文件的文件名称,则判定所述变更Java文件不包括所述静态常量。
在上述实施例的基础上,进一步地,所述根据所述初始编译清单、所述风险文件清单和引用关系缓存列表,获取增量编译清单,包括:
根据所述风险文件清单和所述引用关系缓存列表,获取所述风险文件所引用的Java文件的文件名称,生成风险引用Java文件清单;
将所述初始编译清单与所述风险引用Java文件清单进行合并,获得所述增量编译清单。
具体地,所述装置根据所述风险文件清单和所述引用关系缓存列表,通过倒排索引查询所述风险文件所引用的Java文件的文件名称,作为所述风险引用Java文件的文件名称,并根据所述风险引用Java文件的文件名称生成所述风险引用Java文件清单,所述装置将所述初始编译清单与所述风险引用Java文件清单进行合并,获得所述增量编译清单,也就是说,所述增量编译清单既包括初始Java文件的文件名称,也包括了可能产生业务危险的风险引用Java文件的文件名称。可以理解的是,所述倒排索引是全文检索情况下某个单词在一个文件或者一组文件中位置关系的映射。
本发明实施例提供的增量编译处理方法,通过根据获取到的初始编译清单获取风险文件清单,并根据所述初始编译清单、所述风险文件清单和引用关系缓存列表,获取增量编译清单,从而根据所述增量编译清单进行增量编译处理,提高了编译结果的安全性。
图2为本发明实施例提供的增量编译处理方法的整体流程示意图,如图2所示,本发明实施例提供的增量编译处理方法具体包括:
S201、获取初始编译清单;所述增量编译处理装置从源代码管理服务器下载所述初始编译清单,所述初始编译清单包括初始Java文件的文件名称,所述初始Java文件可以仅包括删除Java文件,也可以只包括变更Java文件,也可以同时包括所述删除Java文件和所述变更Java文件;然后,执行步骤S202;
S202、获取删除Java文件的文件名称;根据所述初始Java文件的文件名称获取所述初始Java文件的文件操作类型,根据所述初始Java文件的文件操作类型,获取删除Java文件的文件名称;然后执行步骤S203;
S203、获取变更Java文件的文件名称;根据所述初始Java文件的文件名称获取所述初始Java文件的文件操作类型,根据所述初始Java文件的文件操作类型,获取变更Java文件的文件名称;然后执行步骤S204;
S204、是否包括静态常量;所述装置在所述静态常量缓存列表中查找所述变更Java文件的文件名称,若查找到所述变更Java文件的文件名称,则判定所述变更Java文件包括所述静态常量,若没有查找到所述变更Java文件的文件名称,则判定所述变更Java文件不包括所述静态常量;然后执行步骤S205;
S205、获取风险文件清单;所述装置将所述包括静态常量的变更Java文件以及所述删除Java文件作为所述风险文件,并根据所述风险文件的文件名称生成风险文件清单;然后执行步骤S206;
S206、获取风险引用Java文件清单;所述装置根据所述风险文件清单和所述引用关系缓存列表,通过倒排索引查询所述风险文件所引用的Java文件的文件名称,作为所述风险引用Java文件的文件名称,并根据所述风险引用Java文件的文件名称生成所述风险引用Java文件清单;然后执行步骤S207;
S207、获取增量编译清单;所述装置将所述初始编译清单与所述风险引用Java文件清单进行合并,获得所述增量编译清单;然后执行步骤S208;
S208、进行增量编译处理;所述装置根据所述增量编译清单获取其中包括的所述初始Java文件的文件名称和所述风险引用Java文件的文件名称,作为所述目标Java文件的文件名称,然后,根据所述目标Java文件的文件名称获取所述目标Java文件,对所述目标Java文件进行增量编译,获得所述目标Class文件,并将所述目标Class文件进行打包,生成目标Jar包,并将所述目标Jar包通过流水线部署到应用服务器;然后执行步骤S209;
S209、更新引用关系缓存列表;所述装置对所述目标Java文件进行解析,通过正则表达式进行过滤,获取引用所述目标Java文件的Java文件作为所述目标引用Java文件,将所述目标Java文件与所述目标引用Java文件之间的引用关系记录入所述引用关系缓存列表,完成对所述引用关系缓存列表的更新;然后执行步骤S2010;
S2010、更新静态常量缓存列表;所述装置对所述目标Class文件进行反射处理,获取所述目标Class文件包括的静态常量作为所述目标静态常量,并将所述目标静态常量记录入所述静态常量缓存列表,完成对所述静态常量缓存列表的更新。
本发明实施例提供的增量编译处理方法,通过根据获取到的初始编译清单获取风险文件清单,并根据所述初始编译清单、所述风险文件清单和引用关系缓存列表,获取增量编译清单,从而根据所述增量编译清单进行增量编译处理,提高了编译结果的安全性。
图3为本发明一实施例提供的增量编译处理装置的结构示意图,如图3所示,本发明实施例提供一种增量编译处理装置,包括:第一获取单元301、第二获取单元302、第三获取单元303和编译单元304,其中:
第一获取单元301用于获取初始编译清单;所述初始编译清单包括删除Java文件的文件名称和/或变更Java文件的文件名称;第二获取单元302用于根据所述初始编译清单,获取风险文件清单;所述风险文件清单包括所述删除Java文件的文件名称,和/或包括静态常量的变更Java文件的文件名称;第三获取单元303用于根据所述初始编译清单、所述风险文件清单和引用关系缓存列表,获取增量编译清单;编译单元304用于根据所述增量编译清单,进行增量编译处理。
具体地,第一获取单元301从源代码管理服务器下载所述初始编译清单,所述初始编译清单包括初始Java文件的文件名称,所述初始Java文件可以仅包括删除Java文件,也可以只包括变更Java文件,也可以同时包括所述删除Java文件和所述变更Java文件,当然,所述初始Java文件还可以包括其他类型的Java文件,具体可以根据实际情况进行调整,此处不做具体限定。第二获取单元302对所述初始编译清单进行分析,根据所述初始编译清单包括的初始Java文件的文件名称,获取所述初始Java文件的操作类型,并根据所述初始Java文件的操作类型,获取全部的删除Java文件作为风险文件;或者,获取所述变更Java文件中包括静态常量的变更Java文件作为所述风险文件;或者,获取所述全部的删除Java文件和所述变更Java文件中包括静态常量的变更Java文件作为所述风险文件,并根据所述风险文件生成所述风险文件清单。第三获取单元303根据所述风险文件清单和引用关系缓存列表,获取所述风险文件所引用的Java文件作为风险引用Java文件,生成风险引用Java文件清单,并根据所述风险引用Java文件清单与所述初始编译清单,获取增量编译清单。编译单元304根据所述增量编译清单中包括的目标Java文件的文件名称,获取所述目标Java文件,对所述目标Java文件进行增量编译,获得目标Class文件,并将所述目标Class文件进行打包,生成目标Jar包,并将所述目标Jar包通过流水线部署到应用服务器。
可以理解的是,所述增量编译清单中不仅包括初始Java文件的文件名称,而且包括了可能产生业务危险的风险引用Java文件的文件名称;所述引用关系缓存列表包括记录各个Java文件与其他Java文件的应用关系。可以理解的是,所述风险文件也就是可能造成编译业务风险的文件。
本发明实施例提供的增量编译处理装置,通过根据获取到的初始编译清单获取风险文件清单,并根据所述初始编译清单、所述风险文件清单和引用关系缓存列表,获取增量编译清单,从而根据所述增量编译清单进行增量编译处理,提高了编译结果的安全性。
在上述实施例的基础上,进一步地,编译单元304具体用于:
根据所述增量编译清单获取目标Java文件;
对所述目标Java文件进行增量编译,获得目标Class文件,并将所述目标Class文件进行打包,生成目标Jar包。
具体地,编译单元304根据所述增量编译清单获取其中包括的文件名称,获取所述初始Java文件和所述风险引用Java文件,作为所述目标Java文件,然后,对所述目标Java文件进行增量编译,获得所述目标Class文件,并将所述目标Class文件进行打包,生成目标Jar包,并将所述目标Jar包通过流水线部署到应用服务器。应当说明的是,编译单元304还可以预先设置过滤策略,对所述增量编译清单中包括的所述初始Java文件的文件名称和所述风险引用Java文件的文件名称按照所述过滤策略进行过滤,将过滤后获得的Java文件的文件名称作为所述目标Java文件的文件名称;所述过滤规则可以包括路径正则表达式和静态常量判定规则,还可以包括其他过滤规则,具体可以根据实际情况进行调整,此处不做具体限定。
在上述实施例的基础上,进一步地,所述初始编译清单包括初始Java文件;相应地,图4为本发明另一实施例提供的增量编译处理装置的结构示意图,如图4所示,本发明实施例提供一种增量编译处理装置,所述装置在:第一获取单元401、第二获取单元402、第三获取单元403和编译单元404的基础上,还包括处理单元405,第一获取单元401、第二获取单元402、第三获取单元403和编译单元404与上述实施例中的第一获取单元301、第二获取单元302、第三获取单元303和编译单元304一致,其中,处理单元405用于:
根据所述目标Java文件,获取所述目标Java文件对应的目标引用Java文件,并根据所述目标Java文件和所述目标引用Java文件,对所述引用关系缓存列表进行更新;其中,所述目标引用Java文件为引用所述目标Java文件的Java文件;
根据所述目标Class文件,获取所述目标Class文件对应的目标静态常量,并根据所述目标静态常量对所述静态常量缓存列表进行更新;所述目标静态常量为所述目标Class文件包括的静态常量。
具体地,处理单元405对所述目标Java文件进行解析,通过正则表达式进行过滤,获取引用所述目标Java文件的Java文件作为所述目标引用Java文件,将所述目标Java文件与所述目标引用Java文件之间的引用关系记录入所述引用关系缓存列表,完成对所述引用关系缓存列表的更新;并且,处理单元405对所述目标Class文件进行反射处理,获取所述目标Class文件包括的静态常量作为所述目标静态常量,并将所述目标静态常量记录入所述静态常量缓存列表,完成对所述静态常量缓存列表的更新。
本发明实施例提供的增量编译处理装置,通过根据获取到的初始编译清单获取风险文件清单,并根据所述初始编译清单、所述风险文件清单和引用关系缓存列表,获取增量编译清单,从而根据所述增量编译清单进行增量编译处理,提高了编译结果的安全性。
本发明提供的装置的实施例具体可以用于执行上述各方法实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
图5为本发明实施例提供的电子设备实体装置结构示意图,如图5所示,该电子设备可以包括:处理器(processor)501、存储器(memory)502和总线503,其中,处理器501,通过总线503与存储器502进行通信。处理器501可以调用存储器502中的计算机程序,以执行如下方法:获取初始编译清单;所述初始编译清单包括删除Java文件的文件名称和/或变更Java文件的文件名称;根据所述初始编译清单,获取风险文件清单;所述风险文件清单包括所述删除Java文件的文件名称,和/或包括静态常量的变更Java文件的文件名称;根据所述初始编译清单、所述风险文件清单和引用关系缓存列表,获取增量编译清单;根据所述增量编译清单,进行增量编译处理。
本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:获取初始编译清单;所述初始编译清单包括删除Java文件的文件名称和/或变更Java文件的文件名称;根据所述初始编译清单,获取风险文件清单;所述风险文件清单包括所述删除Java文件的文件名称,和/或包括静态常量的变更Java文件的文件名称;根据所述初始编译清单、所述风险文件清单和引用关系缓存列表,获取增量编译清单;根据所述增量编译清单,进行增量编译处理。
本发明实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机程序,所述计算机程序使所述计算机执行上述各方法实施例所提供的方法,例如包括:获取初始编译清单;所述初始编译清单包括删除Java文件的文件名称和/或变更Java文件的文件名称;根据所述初始编译清单,获取风险文件清单;所述风险文件清单包括所述删除Java文件的文件名称,和/或包括静态常量的变更Java文件的文件名称;根据所述初始编译清单、所述风险文件清单和引用关系缓存列表,获取增量编译清单;根据所述增量编译清单,进行增量编译处理。
此外,上述的存储器503中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种增量编译处理方法,其特征在于,包括:
获取初始编译清单;所述初始编译清单包括删除Java文件的文件名称和/或变更Java文件的文件名称;
根据所述初始编译清单,获取风险文件清单;所述风险文件清单包括所述删除Java文件的文件名称,和/或包括静态常量的变更Java文件的文件名称;
根据所述初始编译清单、所述风险文件清单和引用关系缓存列表,获取增量编译清单;
根据所述增量编译清单,进行增量编译处理。
2.根据权利要求1所述的方法,其特征在于,所述根据所述增量编译清单,进行增量编译处理,包括:
根据所述增量编译清单获取目标Java文件;
对所述目标Java文件进行增量编译,获得目标Class文件,并将所述目标Class文件进行打包,生成目标Jar包。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
根据所述目标Java文件,获取所述目标Java文件对应的目标引用Java文件,并根据所述目标Java文件和所述目标引用Java文件,对所述引用关系缓存列表进行更新;其中,所述目标引用Java文件为引用所述目标Java文件的Java文件;
根据所述目标Class文件,获取所述目标Class文件对应的目标静态常量,并根据所述目标静态常量对所述静态常量缓存列表进行更新;所述目标静态常量为所述目标Class文件包括的静态常量。
4.根据权利要求1所述的方法,其特征在于,所述初始编译清单包括初始Java文件的文件名称;相应地,所述根据所述初始编译清单,获取风险文件清单,包括:
根据所述初始Java文件的文件名称,获取所述初始Java文件的文件操作类型;
根据所述初始Java文件的文件操作类型,若判断获知所述初始Java文件仅包括所述删除Java文件,则将所述删除Java文件作为风险文件;
根据所述初始Java文件的文件操作类型,若判断获知所述初始Java文件仅包括所述变更Java文件,则根据所述变更Java文件的文件名称和静态常量缓存列表,获取包括静态常量的变更Java文件作为所述风险文件;
根据所述初始Java文件的文件操作类型,若判断获知所述初始Java文件包括所述删除Java文件和所述变更Java文件,则根据所述变更Java文件的文件名称和静态常量缓存列表,获取包括静态常量的变更Java文件,并将所述包括静态常量的变更Java文件以及所述删除Java文件作为所述风险文件;
根据所述风险文件生成风险文件清单。
5.根据权利要求1所述的方法,其特征在于,所述根据所述初始编译清单、所述风险文件清单和引用关系缓存列表,获取增量编译清单,包括:
根据所述风险文件清单和所述引用关系缓存列表,获取所述风险文件所引用的Java文件的文件名称,生成风险引用Java文件清单;
将所述初始编译清单与所述风险引用Java文件清单进行合并,获得所述增量编译清单。
6.一种增量编译处理装置,其特征在于,包括:
第一获取单元,用于获取初始编译清单;所述初始编译清单包括删除Java文件的文件名称和/或变更Java文件的文件名称;
第二获取单元,用于根据所述初始编译清单,获取风险文件清单;所述风险文件清单包括所述删除Java文件的文件名称,和/或包括静态常量的变更Java文件的文件名称;
第三获取单元,用于根据所述初始编译清单、所述风险文件清单和引用关系缓存列表,获取增量编译清单;
编译单元,用于根据所述增量编译清单,进行增量编译处理。
7.根据权利要求6所述的装置,其特征在于,所述编译单元具体用于:
根据所述增量编译清单获取目标Java文件;
对所述目标Java文件进行增量编译,获得目标Class文件,并将所述目标Class文件进行打包,生成目标Jar包。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括处理单元,用于:
根据所述目标Java文件,获取所述目标Java文件对应的目标引用Java文件,并根据所述目标Java文件和所述目标引用Java文件,对所述引用关系缓存列表进行更新;其中,所述目标引用Java文件为引用所述目标Java文件的Java文件;
根据所述目标Class文件,获取所述目标Class文件对应的目标静态常量,并根据所述目标静态常量对所述静态常量缓存列表进行更新;所述目标静态常量为所述目标Class文件包括的静态常量。
9.一种电子设备,其特征在于,包括处理器、存储器和总线,其中:
所述处理器,通过所述总线与所述存储器进行通信;
所述处理器可以调用存储器中的计算机程序,以执行如权利要求1-5任意一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5任意一项所述方法的步骤。
CN201710429270.8A 2017-06-08 2017-06-08 一种增量编译处理方法及装置 Active CN109240698B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710429270.8A CN109240698B (zh) 2017-06-08 2017-06-08 一种增量编译处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710429270.8A CN109240698B (zh) 2017-06-08 2017-06-08 一种增量编译处理方法及装置

Publications (2)

Publication Number Publication Date
CN109240698A true CN109240698A (zh) 2019-01-18
CN109240698B CN109240698B (zh) 2021-11-23

Family

ID=65082983

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710429270.8A Active CN109240698B (zh) 2017-06-08 2017-06-08 一种增量编译处理方法及装置

Country Status (1)

Country Link
CN (1) CN109240698B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110443034A (zh) * 2019-08-05 2019-11-12 中国工商银行股份有限公司 风险程序文件的识别方法、装置、计算设备以及介质
CN112783508A (zh) * 2021-02-01 2021-05-11 北京百度网讯科技有限公司 文件的编译方法、装置、设备以及存储介质
CN112882718A (zh) * 2021-02-26 2021-06-01 百果园技术(新加坡)有限公司 编译处理方法、装置、设备及存储介质
CN117130618A (zh) * 2023-06-13 2023-11-28 东信和平科技股份有限公司 智能卡可执行文件的增量编译方法、装置、设备
WO2023245449A1 (zh) * 2022-06-21 2023-12-28 北京小米移动软件有限公司 增量编译处理方法、装置、电子设备及存储介质
CN117130618B (zh) * 2023-06-13 2024-07-09 东信和平科技股份有限公司 智能卡可执行文件的增量编译方法、装置、设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6219834B1 (en) * 1998-05-15 2001-04-17 International Business Machines Corporation Extensible compiler and method
CN104077140A (zh) * 2014-07-04 2014-10-01 用友软件股份有限公司 用于持续集成的自动化编译方法和编译装置
US20150040110A1 (en) * 2013-07-30 2015-02-05 Facebook, Inc. Systems and methods for incremental compilation at runtime using relaxed guards
CN106325970A (zh) * 2016-10-17 2017-01-11 宁德时代新能源科技股份有限公司 编译方法和编译***
CN106462434A (zh) * 2014-06-25 2017-02-22 微软技术许可有限责任公司 整个程序代码的增量式编译

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6219834B1 (en) * 1998-05-15 2001-04-17 International Business Machines Corporation Extensible compiler and method
US20150040110A1 (en) * 2013-07-30 2015-02-05 Facebook, Inc. Systems and methods for incremental compilation at runtime using relaxed guards
CN106462434A (zh) * 2014-06-25 2017-02-22 微软技术许可有限责任公司 整个程序代码的增量式编译
CN104077140A (zh) * 2014-07-04 2014-10-01 用友软件股份有限公司 用于持续集成的自动化编译方法和编译装置
CN106325970A (zh) * 2016-10-17 2017-01-11 宁德时代新能源科技股份有限公司 编译方法和编译***

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110443034A (zh) * 2019-08-05 2019-11-12 中国工商银行股份有限公司 风险程序文件的识别方法、装置、计算设备以及介质
CN110443034B (zh) * 2019-08-05 2021-09-14 中国工商银行股份有限公司 风险程序文件的识别方法、装置、计算设备以及介质
CN112783508A (zh) * 2021-02-01 2021-05-11 北京百度网讯科技有限公司 文件的编译方法、装置、设备以及存储介质
CN112882718A (zh) * 2021-02-26 2021-06-01 百果园技术(新加坡)有限公司 编译处理方法、装置、设备及存储介质
CN112882718B (zh) * 2021-02-26 2024-03-01 百果园技术(新加坡)有限公司 编译处理方法、装置、设备及存储介质
WO2023245449A1 (zh) * 2022-06-21 2023-12-28 北京小米移动软件有限公司 增量编译处理方法、装置、电子设备及存储介质
CN117130618A (zh) * 2023-06-13 2023-11-28 东信和平科技股份有限公司 智能卡可执行文件的增量编译方法、装置、设备
CN117130618B (zh) * 2023-06-13 2024-07-09 东信和平科技股份有限公司 智能卡可执行文件的增量编译方法、装置、设备

Also Published As

Publication number Publication date
CN109240698B (zh) 2021-11-23

Similar Documents

Publication Publication Date Title
CN109240698A (zh) 一种增量编译处理方法及装置
US20210110054A1 (en) Unified file and object storage architecture for clustered file systems
US8407245B2 (en) Efficient string pattern matching for large pattern sets
CN103645914B (zh) 一种软件清理方法及装置
US8904377B2 (en) Reconfiguration of computer system to allow application installation
US7636736B1 (en) Method and apparatus for creating and using a policy-based access/change log
US20110320394A1 (en) Creation and Revision of Network Object Graph Topology for a Network Performance Management System
US7886270B2 (en) Methods, systems, and computer program products for file version control management
US10430281B2 (en) Space efficient cascading point in time copying
US10698681B2 (en) Parallel development of a software system
EP2880554A1 (en) Migration-destination file server and file system migration method
US20140032833A1 (en) Dynamic Disk Space Management In A File System
US20200159917A1 (en) Distributed security introspection
US20200004862A1 (en) Computerized methods and programs for ingesting data from a relational database into a data lake
US11068536B2 (en) Method and apparatus for managing a document index
CN105574411A (zh) 一种动态脱壳方法、装置和设备
US11163873B2 (en) Distributed security introspection
US11308066B1 (en) Optimized database partitioning
KR20110063325A (ko) 패턴-기반 및 규칙-기반 데이터 아카이브 매니저
US20180181581A1 (en) Systems and methods for implementing object storage and fast metadata search using extended attributes
CN103699624A (zh) 浏览器数据的处理方法和装置
US10983923B2 (en) Dynamic memory protection
US11500705B2 (en) Action recommendation to reduce server management errors
CN111831320A (zh) 插件管理方法、装置、电子设备及存储介质
CN115756520A (zh) 一种分布式集群中的FlinkSQL部署方法及装置

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
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: No.19, Jiefang East Road, Hangzhou, Zhejiang Province, 310000

Patentee after: CHINA MOBILE GROUP ZHEJIANG Co.,Ltd.

Patentee after: CHINA MOBILE COMMUNICATIONS GROUP Co.,Ltd.

Address before: No. 19, Jiefang East Road, Hangzhou, Zhejiang Province, 310016

Patentee before: CHINA MOBILE GROUP ZHEJIANG Co.,Ltd.

Patentee before: CHINA MOBILE COMMUNICATIONS Corp.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20231211

Address after: No.19, Jiefang East Road, Hangzhou, Zhejiang Province, 310000

Patentee after: CHINA MOBILE GROUP ZHEJIANG Co.,Ltd.

Patentee after: China Mobile (Zhejiang) Innovation Research Institute Co.,Ltd.

Patentee after: CHINA MOBILE COMMUNICATIONS GROUP Co.,Ltd.

Address before: No.19, Jiefang East Road, Hangzhou, Zhejiang Province, 310000

Patentee before: CHINA MOBILE GROUP ZHEJIANG Co.,Ltd.

Patentee before: CHINA MOBILE COMMUNICATIONS GROUP Co.,Ltd.