一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

信息收集方法、装置、电子设备及存储介质与流程

2022-05-21 11:27:07 来源:中国专利 TAG:


1.本公开涉及计算机技术领域,更具体地,涉及一种信息收集方法、装置、电子设备及计算机可读存储介质。


背景技术:

2.目前在进行软件开发,例如,安卓(android)软件开发过程中,开发人员在提交新编码或变更后编码到开发工程之后,通常会直接基于持续集成工具,例如,jenkins进行构建,并对构建成功的项目进行打包应用。
3.在上述过程中,开发人员通常并不会关注构建耗时,也不会特意分析影响每次构建耗时变化的原因,这就使得某些不规范编码操作,例如,对软件项目中全局变量的不规范修改、不必要插件的引入等可能会影响到打包编译的效率。


技术实现要素:

4.本公开实施例提供了一种信息收集方法,可以准确收集对目标对象进行构建处理时的目标构建信息,以方便用户监控构建过程,并及时修正不规范的编码操作,从而提升软件项目的整体编译效率。
5.本公开的第一方面,提供了一种信息收集方法,该方法包括:
6.接收针对目标对象的输入,其中,所述目标对象包括至少一个待构建的任务事项;
7.响应于所述输入,对所述目标对象执行构建处理;
8.在执行所述构建处理的过程中,基于hook技术对所述构建处理中的关键执行消息进行拦截,以收集获得目标构建信息,其中,所述目标构建信息包括反映所述构建处理总消耗时间的第一耗时、反映每一任务事项各自消耗时间的第二耗时以及对应任务事项的异常构建信息。
9.本公开的第二方面,还提供了一种信息收集装置,包括:
10.接收模块,用于接收针对目标对象的输入,其中,所述目标对象包括至少一个待构建的任务事项;
11.响应模块,用于响应于所述输入,对所述目标对象执行构建处理;
12.信息收集模块,用于在执行所述构建处理的过程中,基于hook技术对所述构建处理中的关键执行消息进行拦截,以收集获得目标构建信息,其中,所述目标构建信息包括反映所述构建处理总消耗时间的第一耗时、反映每一任务事项各自消耗时间的第二耗时以及对应任务事项的异常构建信息。
13.本公开的第三方面,还提供了一种电子设备,包括:
14.存储器,用于存储可执行的指令;
15.处理器,用于根据所述可执行的指令的控制,运行所述电子设备执行根据本公开的第一方面所述的信息收集方法。
16.本公开的第四方面,还提供了一种计算机可读存储介质,所述计算机可读存储介
质存储有可被计算机读取执行的计算机程序,所述计算机程序用于在被所述计算机读取运行时,执行根据本公开的第一方面所述的信息收集方法。
17.本公开的有益效果在于,根据本公开的实施例,在电子设备接收到针对目标对象的输入,并响应于该输入对目标对象执行构建处理的过程中,通过基于hook技术对构建处理中的关键执行消息进行拦截,以收集获得可以反映构建处理总耗时时间的第一耗时以及每一任务事项各自消耗时间的第二耗时以及对应任务事项的异常构建信息,可以方便用户监控目标对象的构建过程,并及时修正不规范的编码操作,从而提升软件项目的整体编译效率。
18.通过以下参照附图对本公开的示例性实施例的详细描述,本公开的其他特征及其优点将会变得清楚。
附图说明
19.被结合在说明书中并构成说明书的一部分的附图示出了本公开的实施例,并且连同其说明一起用于解释本公开的原理。
20.图1是本公开实施例提供的信息收集方法的流程示意图。
21.图2是本公开实施例提供的信息监控平台的框架示意图。
22.图3是本公开实施例提供的信息收集装置的原理框图。
23.图4是本公开实施例提供的电子设备的硬件结构示意图。
具体实施方式
24.现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
25.以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
26.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
27.在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其他例子可以具有不同的值。
28.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
29.《方法实施例》
30.请参看图1,其是本公开实施例提供的信息收集方法的流程示意图,该方法可以应用于电子设备中,具体可以应用于对软件开发项目进行构建处理的电子设备中,该电子设备可以为终端设备,也可以为服务器,此处不作特殊限定。
31.如图1所示,本实施例的方法可以包括如下步骤s1100-s1300,以下予以详细说明。
32.步骤s1100,接收针对目标对象的输入,其中,所述目标对象包括至少一个待构建的任务事项。
33.目标对象,是指软件开发工程,即,project,其通常是由复数个程序片段按照系统
规划组成的程序集合,每个程序片段负责一项功能,以共同支撑起一系列功能系统的正常运行,通常一个软件开发工程中可以包括至少一个项目。在本公开的实施例中,如无特殊说明,以该目标对象为安卓软件开发工程为例进行说明,当然,在具体实施时,目标对象也可以为其他开发工程,例如,也可以为ios软件开发工程,此处不做特殊限定。
34.由于android软件开发工程,以下简称android工程通常使用gradle工具来进行构建编译,因此为了准确统计目标对象的构建处理所消耗的时间,在本公开的实施例中,具体可以通过hook技术对gradle处理中的关键节点,即,关键执行消息进行拦截,并通过记录关键节点处的构建信息,以获得包括可以准确反映构建处理的总消耗时间的第一耗时、以及,每一任务项目单独消耗时间的第二耗时的目标构建信息。
35.hook技术,又叫做钩子函数,是指在应用程序准备调用目标函数之前,钩子程序就先捕获该调用消息,钩子函数先得到控制权,从而使得钩子函数既可以加工处理(改变)该函数的执行行为,或者还可以强制结束消息的传递等。
36.即,在步骤s1100之后,执行步骤s1200,响应于所述输入,对所述目标对象执行构建处理;以及步骤s1300,在执行所述构建处理的过程中,基于hook技术对所述构建处理中的关键执行消息进行拦截,以收集获得目标构建信息,其中,所述目标构建信息包括反映所述构建处理总消耗时间的第一耗时、反映每一任务事项各自消耗时间的第二耗时以及对应任务事项的异常构建信息。
37.以目标对象为android工程为例,在本公开的实施例中,所述对目标对象执行构建处理,具体可以为使用gradle工具对该android工程执行构建处理。
38.通常,在使用gradle工具对android工程执行构建处理时,其完整生命周期一般分三个阶段:初始化阶段、配置阶段和执行阶段;其中,初始化阶段,也即初始化子处理,一般是通过用户预先配置的settings.gradle判断android工程中的哪些项目需要初始化,根据判断结果,加载需要初始化的项目的build.gradle文件,并为每个项目创建project对象;而配置阶段,也即配置子处理,一般是通过执行各项目下的build.gradle脚本以完成对project对象的配置,并构造各待构建的任务事项,即task的依赖关系图以便在执行阶段按照依赖关系执行task;而执行阶段,即,执行子处理用于依据配置阶段生成的依赖关系图对各任务事项依次进行构建。
39.由于初始化阶段尚未加载hook插件并且也未正式开始执行具体的任务构建,因此,在本公开的实施例中,可以在使用gradle工具对android工程执行构建处理的过程中,通过在初始化阶段将基于hook技术实现的自定义hook插件集成到gradle工具中,并在构建处理过程中配置子处理以及执行子处理中的各关键执行消息进行拦截,即可准确统计整个构建处理的总耗时,以及每一任务事项,即task的单独耗时,以下对该处理进行详细说明。
40.根据以上说明可知,针对目标对象,例如,android工程的构建处理至少包括配置子处理和执行子处理,所述配置子处理用于配置每一任务事项的构建配置信息,并建立所述至少一个待构建的任务事项之间的依赖关系图,所述执行子处理根据该依赖关系图,对所述至少一个待构建的任务事项进行构建;所述基于hook技术对构建处理中的对应执行消息进行拦截,以收集获得目标构建信息,包括:基于hook技术,对第一执行消息、第二执行消息、第三执行消息以及第四执行消息构建进行拦截,以收集获得目标构建信息;其中,所述第一执行消息包括指示开始对所述目标对象执行所述配置子处理的消息,所述第二执行消
息包括指示开始对对应任务事项进行构建的消息,所述第三执行消息包括指示结束对对应任务事项进行构建的消息,所述第四执行消息包括指示结束所述构建处理的执行消息。
41.在该实施例中,所述基于hook技术,对第一执行消息进行拦截,以收集获得目标构建信息,包括:在系统发出第一执行消息之后,基于第一预设钩子函数拦截第一执行消息,并在执行第一执行消息之前,根据该第一预设钩子函数记录当前时间作为总构建开始时间。
42.具体地,在本公开的实施例中,用于统计构建信息的时机点可以为开始执行配置子处理的时间点,即,在gradle工具执行build.gradle脚本以及task中配置段的处理以生成依赖关系图之前的时间点,该阶段通常表示正式开始进行构建处理,因此,可以通过第一预设钩子函数拦截系统发出的、用于执行上述处理的第一执行消息,并在该第一执行消息之前添加额外处理,例如,添加用于记录当前时间为总构建开始时间的编码指令,以及还可以添加用于记录当前执行设备的设备信息的编码指令,其中,设备信息可以包括设备当前cpu、内存、剩余可用内存、核数以及设备安装的操作系统等信息,此处不做特殊限定。
43.另外,在该实施例中,所述基于hook技术,对第二执行消息、第三执行消息进行拦截,以收集获得目标构建信息,包括:在系统发出第二执行消息之后,基于第二预设钩子函数拦截第二执行消息,并在执行第二执行消息之前,根据第二预设钩子函数记录当前时间作为第一任务开始时间、记录目标任务事项对应的关联信息,其中,目标任务事项为所述至少一个待构建的任务事项中的任意一个;在系统发出第三执行消息之后,基于第三预设钩子函数拦截第三执行消息,并在执行第三执行消息之前,根据第三预设钩子函数记录当前时间作为第一任务结束时间,以及记录目标任务事项的构建结果;根据第一任务开始时间和第一任务结束时间,获得目标任务事项对应的第二耗时,以及获取目标任务事项对应的构建类型;在该构建类型为第一预设类型和/或第二耗时大于预设阈值的情况下,解析目标任务事项对应的构建日志,以获得异常耗时信息,其中,第一预设类型为表示全量编译的信息。
44.在本公开的实施例中,构建类型包括第一预设类型和第二预设类型,其中,第一预设类型表示全量编译的信息,第二预设类型为表示增量编译的信息。
45.具体地,为了精确记录构建处理的耗时时间,以便于用户定位导致耗时增加的任务事项,在具体实施时,在gradle工具完成配置子处理并开始依据生成的依赖关系对每一任务事项进行构建之前,可以通过第二预设钩子函数拦截第二执行消息,并添加用于记录第一任务开始时间的编码指令,以及,在该任务事项构建完成之后,通过第三预设钩子函数拦截第三执行消息,并添加用于收集该任务事项构建状态的编码指令,该编码指令具体可以为通过获取当前时间作为第一任务结束时间,并通过计算第一任务结束时间和第一任务开始时间之间的差值,获得当前任务事项对应的构建耗时,即第二耗时,同时还可以记录表示构建成功或失败的构建结果,以及确定该任务事项的构建类型是增量编译还是全量编译;若第二耗时较长,或者构建类型表示针对该任务事项进行了全量编译,则说明该任务事项的构建时间发生了变化,因此为了方便用户监控,此时可以通过解析构建日志,以分析获得异常耗时信息。
46.该异常耗时信息,是指设备根据构建日志得到的、可能导致构建耗时增加的原因,例如,当用户修改了编码中的全局变量、新引入了一插件、更新了某一插件的版本时,均可
能引发全量编译或者导致耗时增长。
47.此外,在该实施例中,所述基于hook技术,对第四执行消息进行拦截,以收集获得所述目标构建信息,包括:在成功对所述至少一个任务事项进行构建之后,基于第四预设钩子函数拦截系统发出的第四执行消息,并在执行第四执行消息之前,根据第四预设钩子函数获取当前时间作为总构建结束时间;以及,根据该总构建结束时间,获得第一耗时;根据该第一耗时、对应任务事项的第二耗时和异常构建信息,获得目标构建信息,其中,所述目标构建信息还包括构建日期、构建指令信息、最终构建结果信息、任务事项总数以及任务事项总执行数中的至少一项。
48.具体地,在根据配置子处理生成的依赖关系图,完成对全部任务事项的构建之后,可以通过第四预设钩子函数拦截系统发出的、指示结束整个构件处理的第四执行消息,并通过获取当前时间作为总构建结束时间,以根据该总构建结束时间和最初记录的总构建开始时间,得到反映构件处理总消耗时间的第一耗时,以根据该第一耗时、每一任务事项对应的第二耗时和异常耗时信息,获得与目标对象的构件处理对应的目标构建信息。需要说明的是,为了方便用户查看,在根据以上处理获取第一耗时、第二耗时以及异常耗时信息的过程中,还可以同时记录构建日期、构建指令信息、表示整个构件处理是否成功的最终构建结果信息以及目标对象中的任务事项总数以及本次构件处理过程中执行的任务事项总数等信息,此处不作特殊限定。
49.另外,在收集获取目标构建信息的过程中,针对在不同时间点记录的中间信息,可以先将该类信息缓存在一信息收集容器中,该信息收集容器可以基于用户自定义数据结构实现,此处不作特殊限定。
50.以上,对如何收集获取与目标对象对应的目标构建信息进行了详细说明,在一个实施例中,为方便用户查看该目标构建信息,在获得目标构建信息之后,该方法还包括:存储以及展示所述目标构建信息。
51.具体地,在经过以上处理获得目标构建信息之后,为方便传递信息,可以将该目标构建信息整理为json串,并通过将该json串上报至信息监控平台进行存储以及展示。
52.在该实施例中,该信息监控平台可以为基于b/s架构的数据平台,请参看图2,其是本公开实施例提供的信息监控平台的框架示意图,如图2所示,该信息监控平台可以通过数据库软件,例如,mongodb存储管理数据,并通过依次抽象实现用于与用户进行交互的前端ui层、用于前后端进行交互的展示层,以及后端用于实现具体业务处理的业务层和用于与数据库进行数据交互的数据层,以通过接收用户发出的用于查阅目标构建信息的操作,并响应于该操作,通过从数据库中获取目标构建信息,以展示给用户查阅分析,进而使得用户可以及时发现和定位构件耗时异常问题,并对不规范的编码进行修正,进而提升目标对象的编译效率,其中,如图2所示,该信息监控平台中的前端ui层可以基于vue框架和element-ui实现。当然,在具体实施时,也可以基于其他方法实现该信息监控平台,以将目标构建信息展示给用户查看,此处不作特殊限定。
53.综上所述,本公开实施例提供的信息收集方法,在电子设备接收到针对目标对象的输入,并响应于该输入对目标对象执行构建处理的过程中,通过基于hook技术对构建处理中的关键执行消息进行拦截,以收集获得可以反映构建处理总耗时时间的第一耗时以及每一任务事项各自消耗时间的第二耗时以及对应任务事项的异常构建信息,可以方便用户
监控目标对象的构建过程,并及时修正不规范的编码,从而提升软件项目的整体编译效率。
54.《装置实施例》
55.与上述实施例相对应,在本实施例中,还提供一种信息收集装置,如图3所示,该装置300可以包括接收模块310、响应模块320和信息收集模块330。
56.该接收模块310,用于接收针对目标对象的输入,其中,所述目标对象包括至少一个待构建的任务事项;该响应模块320,用于响应于所述输入,对所述目标对象执行构建处理;该信息收集模块330,用于在执行所述构建处理的过程中,基于hook技术对所述构建处理中的关键执行消息进行拦截,以收集获得目标构建信息,其中,所述目标构建信息包括反映所述构建处理总消耗时间的第一耗时、反映每一任务事项各自消耗时间的第二耗时以及对应任务事项的异常构建信息。
57.《设备实施例》
58.在本实施例中,还提供一种电子设备,如图4所示,该电子设备400还可以包括处理器420和存储器410,该存储器410用于存储可执行的指令;该处理器420用于根据指令的控制运行电子设备以执行根据本公开任意实施例的信息收集方法。
59.《介质实施例》
60.与上述方法实施例对应,在本实施例中,还提供一种计算机可读存储介质,该计算机可读存储介质存储有可被计算机读取并运行的计算机程序,所述计算机程序用于在被所述计算机读取运行时,执行如本公开以上任意实施例所述的信息收集方法。
61.附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。
62.以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其他普通技术人员能理解本文披露的各实施例。本公开的范围由所附权利要求来限定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献