CN114168183A - 前端资源信息处理方法、装置、设备及存储介质 - Google Patents
前端资源信息处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN114168183A CN114168183A CN202111364419.1A CN202111364419A CN114168183A CN 114168183 A CN114168183 A CN 114168183A CN 202111364419 A CN202111364419 A CN 202111364419A CN 114168183 A CN114168183 A CN 114168183A
- Authority
- CN
- China
- Prior art keywords
- technology stack
- target
- file
- source code
- identification information
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or 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)
Abstract
本申请实施例提供一种前端资源信息处理方法、装置、设备及存储介质。在本申请实施例中,对目标应用程序包含的目标项目的项目描述文件进行扫描,以确定安装于目标应用程序的开发环境中的至少一种技术栈的标识信息,并对目标项目的源代码文件进行扫描以确定开发目标项目所使用的技术栈,以及生成目标应用程序的标识信息、目标项目的标识信息以及目标技术栈的标识信息之间的关联关系,并基于关联关系从项目维度和/或应用程序维度获取目标技术栈的使用信息。由此,实现自动获取技术栈的使用信息,提高了技术栈的使用信息获取效率和准确度,进一步基于所获取的技术栈的使用信息对技术栈进行维护,还可以降低技术栈的维护成本。
Description
技术领域
本申请涉及前端开发技术领域,尤其涉及一种前端资源信息处理方法、装置、设备及存储介质。
背景技术
在应用程序(Application,APP)的前端项目开发过程中,可供选择的技术栈较多,技术栈例如react、vue、react-native以及小程序等。其中,react技术栈是一个js(Javascript)框架,可以采用js代码编写html页面;vue技术栈是一个轻巧、高性能且交互性强的前端框架,vue技术栈使用组件化构建系统可提高代码的复用性,缩短项目的开发时间;react-native技术栈能够在Javascript和React的基础上获得完全一致的开发体验,构建更好的原生APP;小程序技术栈能够帮助开发提供不同服务的小程序。
为了便于对技术栈进行升级和维护,需要了解应用程序的开发过程中各个项目使用了哪些技术栈。目前,主要依赖各个开发人员上报开发各项目时所选用的技术栈,并据此统计各技术栈的使用情况,然而,这种方式的效率较低且容易出现统计错误。
发明内容
本申请的多个方面提供一种前端资源信息处理方法、装置、设备及存储介质,用以提高技术栈使用情况的统计效率和准确度。
本申请实施例提供一种前端资源信息处理方法,包括:从目标应用程序包含的项目中选择目标项目,从目标项目的资源目录中获取项目描述文件和源代码文件;对项目描述文件进行扫描,以得到项目描述文件中记录的至少一种技术栈的标识信息,至少一种技术栈是指安装于目标应用程序的开发环境中的技术栈;对源代码文件进行扫描,以判断源代码文件中是否包含目标技术栈提供的代码信息,目标技术栈是指开发目标项目所使用的技术栈,且目标技术栈属于至少一种技术栈;若包含,则生成目标应用程序的标识信息、目标项目的标识信息以及目标技术栈的标识信息之间的关联关系,并基于关联关系从项目维度和/或应用程序维度获取目标技术栈的使用信息。
本申请实施例还提供一种前端资源信息处理装置,包括:选择模块,用于从目标应用程序包含的项目中选择目标项目,从目标项目的资源目录中获取项目描述文件和源代码文件;扫描模块,用于对项目描述文件进行扫描,以得到项目描述文件中记录的至少一种技术栈的标识信息,至少一种技术栈是指安装于目标应用程序的开发环境中的技术栈;扫描模块,还用于对源代码文件进行扫描,以判断源代码文件中是否包含目标技术栈提供的代码信息,目标技术栈是指开发目标项目所使用的技术栈,且目标技术栈属于至少一种技术栈,若包含,则触发处理模块;处理模块,用于生成目标应用程序的标识信息、目标项目的标识信息以及目标技术栈的标识信息之间的关联关系,并基于关联关系从项目维度和/或应用程序维度获取目标技术栈的使用信息。
本申请实施例还提供一种电子设备,包括:存储器和处理器;存储器,用于存储计算机程序;处理器耦合至存储器,用于执行计算机程序以用于执行上述方法中的步骤。
本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,当计算机程序被处理器执行时,致使处理器实现上述方法中的步骤。
在本申请实施例中,对目标应用程序包含的目标项目的项目描述文件进行扫描,以确定安装于目标应用程序的开发环境中的至少一种技术栈的标识信息,并对目标项目的源代码文件进行扫描以确定开发目标项目所使用的技术栈,以及生成目标应用程序的标识信息、目标项目的标识信息以及目标技术栈的标识信息之间的关联关系,并基于关联关系从项目维度和/或应用程序维度获取目标技术栈的使用信息。由此,实现自动获取技术栈的使用信息,提高了技术栈的使用信息获取效率和准确度,进一步基于所获取的技术栈的使用信息对技术栈进行维护,还可以降低技术栈的维护成本。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一示例性实施例提供的一种前端资源信息处理方法的流程示意图;
图2为本申请一示例性实施例提供的另一种前端资源信息处理方法的流程示意图;
图3为本申请一示例性实施例提供的一种前端资源信息处理装置的结构示意图;
图4为本申请一示例性实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,主要依赖各个开发人员上报开发各项目时所选用的技术栈,并据此统计各技术栈的使用情况,然而,这种方式的效率较低且容易出现统计错误。为此,本申请实施例提供一种前端资源信息处理方法、设备及存储介质,在本申请实施例中,对目标应用程序包含的目标项目的项目描述文件进行扫描,以确定安装于目标应用程序的开发环境中的至少一种技术栈的标识信息,并对目标项目的源代码文件进行扫描以确定开发目标项目所使用的技术栈,以及生成目标应用程序的标识信息、目标项目的标识信息以及目标技术栈的标识信息之间的关联关系,并基于关联关系从项目维度和/或应用程序维度获取目标技术栈的使用信息。由此,实现自动获取技术栈的使用信息,提高了技术栈的使用信息获取效率和准确度,进一步基于所获取的技术栈的使用信息对技术栈进行维护,还可以降低技术栈的维护成本。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为本申请一示例性实施例提供的一种前端资源信息处理方法的流程示意图。该方法适用于对前端开发采用的技术栈的使用情况进行分析,该方法可由前端资源信息处理装置执行,该装置可以由软件和/或硬件的方式实现,并一般可以集成在终端设备或服务器中。
参见图1,该方法可以包括以下步骤:
101、从目标应用程序包含的项目中选择目标项目,从目标项目的资源目录中获取项目描述文件和源代码文件。
102、对项目描述文件进行扫描,以得到项目描述文件中记录的至少一种技术栈的标识信息,至少一种技术栈是指安装于目标应用程序的开发环境中的技术栈。
103、对源代码文件进行扫描,以判断源代码文件中是否包含目标技术栈提供的代码信息,目标技术栈是指开发目标项目所使用的技术栈,且目标技术栈属于至少一种技术栈,若包含,执行步骤104。
104、生成目标应用程序的标识信息、目标项目的标识信息以及目标技术栈的标识信息之间的关联关系,并基于关联关系从项目维度和/或应用程序维度获取目标技术栈的使用信息。
在本申请实施例中,目标应用程序可以是提供任何服务的应用程序,例如,购物类应用程序,打车类应用程序或者生活服务类应用程序。在目标应用程序前端开发过程中,可能会涉及一个或多个项目,其中,每个项目是指为与目标应用程序提供的服务所开发的前端项目。以生活服务类应用程序为例,该生活服务类应用程序可以提供家政服务、车辆买卖服务或者租房服务。家政服务分为保洁服务、月嫂服务或者搬家服务,车辆买卖服务分为货车买卖服务或者私家车买卖服务;租房服务分为整租服务或者合租服务。则前端项目可以是家政服务项目、车辆买卖服务项目、租房服务项目,也可以是保洁服务项目、月嫂服务项目、搬家服项目务、货车买卖服务项目、者私家车买卖服务项目、整租服务项目或者合租服务项目。
实际应用中,可能会选择多种技术栈对目标应用程序进行前端开发,选择的技术栈越多,越增加目标应用程序的维护管理难度。例如,在项目开发中,一个项目可能会由多个开发团队联合开发,不同开发团队负责开发所涉项目的不同技术逻辑,这种情况下,一个项目也会涉及多个技术栈。又例如,随着目标应用程序需要开发的项目越来越多,开发团队的数量越来越多,所选择的技术栈也越来越多。
在本申请实施例中,若目标应用程序包含多个项目,则可以按需从多个项目中选择一个项目作为目标项目,若目标应用程序仅包含一个项目,则该项目为目标项目。在选择好目标项目之后,从该目标项目的资源目录中获取项目描述文件和源代码文件。其中,资源目录是记录与目标项目相关文件的目录文件。项目描述文件是指记录了目标项目的各种描述信息的描述文件,可选的,项目描述文件是指package.json文件。当创建一个项目时,会生成该项目的项目描述文件。项目描述文件例如记录了目标项目的项目名称、项目版本、项目执行入口文件、项目贡献者以及依赖包列表等信息。其中,依赖包列表中记录的是目标项目运行所要依赖的第三方包文件列表。例如,若目标项目安装了vue技术栈,则在该目标项目的package.json文件的依赖包列表会记录该vue技术栈的名称,以记录在该目标项目中安装了该vue技术栈的安装包(Install pack)。
在本申请实施例中,对项目描述文件进行扫描,以确定哪些技术栈安装到了目标应用程序的开发环境。具体而言,若文件扫描结果中包括扫描到至少一种技术栈的标识信息,说明在目标应用程序的开发环境中安装了至少一种技术栈的安装包,也即至少一种技术栈安装到了目标应用程序的开发环境。
实际应用中,在目标应用程序的开发环境中安装的技术栈,开发人员从中选择一些技术栈进行项目开发,也即目标项目所使用到技术栈可能是已安装的技术栈中一个或多个。由于源代码文件是记录目标项目对应的源代码的文件。若目标项目运行过程中使用了某种技术栈,则该源代码文件会记录与该技术栈相关的代码信息。若目标项目运行过程中未使用了某种技术栈,则该源代码文件不会记录与该技术栈相关的代码信息。基于此,对源代码文件进行扫描,根据源代码文件的扫描结果判断目标项目开发过程中使用了哪些技术栈。具体的,若扫描到源代码文件中包含目标技术栈提供的代码信息,则说明目标项目开发过程中使用了目标技术栈。若扫描到源代码文件中不包含目标技术栈提供的代码信息,则说明目标项目开发过程中没有使用了目标技术栈。
在本申请实施例中,在扫描到目标项目在开发过程中使用了目标技术栈时,建立目标应用程序的标识信息、目标项目的标识信息以及目标技术栈的标识信息之间的关联关系,以便基于该关联关系从项目维度和/或应用程序维度获取目标技术栈的使用信息。具体而言,在以从项目维度获取目标技术栈的使用信息时,可以获取各个项目使用了哪些技术栈。在以从应用程序维度获取目标技术栈的使用信息时,可以获取该应用程序下各个项目的技术栈使用信息,进而对各项目的技术栈使用信息进行统计,可以获取该应用程序使用了哪些技术栈。
进一步可选的,为了便于掌握技术栈的更多信息,上述方法还可以包括:在源代码文件中包含目标技术栈提供的代码信息时,从项目描述文件中获取目标技术栈的标识信息和版本信息;根据目标技术栈的标识信息查询第一配置文件,获取目标技术栈的类型,第一配置文件中分类记录有至少一种技术栈的标识信息;相应地,生成目标应用程序的标识信息、目标项目的标识信息以及目标技术栈的标识信息之间的关联关系,包括:生成目标应用程序的标识信息、目标项目的标识信息与目标技术栈的标识信息、版本信息和类型之间的关联关系。
在本申请实施例中,第一配置文件从UI框架(UIframe)、数据状态管理工具(dataManage)、开发语言、服务端渲染框架、CCS(Cascading Style Sheets,层叠样式表)语言等类型对各个技术栈进行分类记录。
例如,目标项目的技术栈使用信息如下:UI框架这一类型下使用了name名称为react的技术栈,该技术栈的版本version为16.13。dataManage这一类型下使用了name名称为redux的技术栈,该技术栈的版本version为3.7。开发语言这一类型下使用了name名称为typescript的技术栈,该技术栈的版本version为4.3。服务端渲染框架这一类型下使用了name名称为next的技术栈,该技术栈的版本version为11.1。CCS语言这一类型下使用了name名称为sass-loader的技术栈,该技术栈的版本version为10.0。
进一步可选的,在基于关联关系从项目维度和/或应用程序维度获取目标技术栈的使用信息之后,还可以在技术栈升级和维护阶段,针对每个技术栈,根据使用技术栈的各个项目在上线后的线上运行数据分析技术栈的稳定性,根据技术栈的稳定性和技术栈的使用信息,对技术栈进行升级。
具体而言,对使用技术栈的各个项目在上线后的线上运行数据进行分析,若使用技术栈的各个项目在上线过程中可以正常使用、不出现或极少出现崩溃(闪退)、无响应等问题,该技术栈的稳定性较好;若使用技术栈的各个项目在上线过程中难以正常使用、经常出现崩溃(闪退)、无响应等问题,该技术栈的稳定性较差。
在根据技术栈的稳定性和技术栈的使用信息,对技术栈进行升级时,若根据技术栈的使用信息确定技术栈为非主流技术栈,且技术栈的稳定性不符合稳定性要求的情况下,将使用技术栈的各项目中的技术栈升级到更高版本,或者,将使用技术栈的各项目中的技术栈更新为主流技术栈。
其中,稳定性要求可以根据实际应用需求设置,例如,基于是否能够正常使用、崩溃(闪退)或无响应的次数等设置稳定性要求。
值得注意的是,针对任一技术栈,可以对大量的应用程序使用该技术栈的情况进行分析统计,若该技术栈使用频次较高,则该技术栈为主流技术栈,若该技术栈使用批次较低,则该技术栈为非主流技术栈。值得注意的是,主流技术栈的稳定性好于非主流技术栈的稳定性。
本申请实施例提供的前端资源信息处理方法,对目标应用程序包含的目标项目的项目描述文件进行扫描,以确定安装于目标应用程序的开发环境中的至少一种技术栈的标识信息,并对目标项目的源代码文件进行扫描以确定开发目标项目所使用的技术栈,以及生成目标应用程序的标识信息、目标项目的标识信息以及目标技术栈的标识信息之间的关联关系,并基于关联关系从项目维度和/或应用程序维度获取目标技术栈的使用信息。由此,实现自动获取技术栈的使用信息,提高了技术栈的使用信息获取效率和准确度,进一步还可以降低技术栈的维护成本。
本申请实施例还提供一种前端资源信息处理方法,该前端资源信息处理方法除了可以获取技术栈的使用信息,还可以获取组件的整体使用信息。在图1所示的实施例基础上,参见图2,该前端资源信息处理方法还可以包括以下步骤:
105、将源代码文件中的源代码转化为抽象语法树,抽象语法树至少包括导入节点。
106、遍历抽象语法树上的导入节点,并判断遍历到的导入节点中被导入的内容是否包含第二配置文件中的组件库中的组件,若被导入的内容中包含第二配置文件中的组件库中的组件,则执行步骤107。
107、根据设定的增大步长,增大作为被导入的内容的组件的使用次数,并从项目维度和/或应用程序维度统计组件的整体使用信息。
需要说明是,步骤105-107的执行顺序与步骤102-104的执行顺序不做限定,可以顺序执行,也可以并行执行。在图2中,以先执行步骤102-104,后执行步骤105-107为例进行图示。在本申请实施例中,抽象语法树(abstract syntax code,AST)是源代码的抽象语法结构的树状表示,树上的每个节点都表示源代码中的一种结构。
进一步可选的,为了准确得到更为准确的抽象语法树,将源代码文件中的源代码转化为抽象语法树之前,还可以识别源代码文件的文件类型;若源代码文件的文件类型是特定文件类型,则获取源代码文件中包含的脚本标签,脚本标签用于定义客户端脚本,将脚本标签定义的客户端脚本作为源代码;若源代码文件的文件类型不是特定文件类型,则直接将源代码文件中包含的程序代码作为源代码。具体而言,针对诸如vue类型文件等特定文件类型,需要先提取vue类型文件的源代码文件中script脚本标签中的js代码内容,在将提取出来的js代码内容作为源代码。针对除去特定文件类型之外的其他文件类型的源代码文件,则可以将其他类型的源代码文件中包含的程序代码作为源代码。其他文件类型例如为Java文件、文本文件等。当然,特定文件类型根据实际情形设置。
在本申请实施例中,对抽象语法树上具有数据导入功能的导入(import)节点进行遍历,并判断遍历到的导入节点中被导入的内容是否包含第二配置文件中的组件库中的组件,若包含,则说明在目标项目的前端开发中使用了该组件库中组件,若不包括,则说明在目标项目的前端开发中没有使用了该组件库中组件。
在本申请实施例中,组件是指具有某个功能的代码块,组件库是指一系列组件的集合库。针对每个组件库,预先将该组件库的名称和该组件库下的各个组件的名称进行关联储存至第二配置文件中。
在遍历抽象语法树上的导入节点时,将导入节点中被导入的内容与第二配置文件进行匹配,若匹配成功,说明被导入的内容中出现了第二配置文件记录的组件库名称及其关联的组件名称,也即在目标项目的前端开发中使用了该组件库中组件。若匹配失败,说明被导入的内容中没有出现了第二配置文件记录的组件库名称及其关联的组件名称,也即在目标项目的前端开发中没有使用了该组件库中组件。
在判断出遍历到的导入节点中被导入的内容包含第二配置文件中的组件库中的组件,则需要根据设定的增大步长增大作为被导入的内容的组件的使用次数。其中,增大步长根据实际情况进行设置,例如为1,也即一次增加一次使用次数。
在确定各个项目使用的各个组件的使用次数之后,可以从项目维度确定各个组件的整体使用信息,例如各个项目使用了哪些组件,哪些组件被使用了多少次。也可以从应用程序维度确定各个组件的整体使用信息,例如该应用程序使用了哪些组件,哪些组件被使用了多少次。
本申请实施例提供的前端资源信息处理方法,既能实现自动获取技术栈的使用信息,提高了技术栈的使用信息获取效率和准确度,进一步还可以降低技术栈的维护成本,还可以实现自动统计组件的整体使用信息,为直观地了解组件库中的各个组件在项目开发中的使用情况提供了可能。
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤101至步骤103的执行主体可以为设备A;又比如,步骤101和102的执行主体可以为设备A,步骤103的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
图3为本申请一示例性实施例提供的一种前端资源信息处理装置的结构示意图。参见图3,该装置可以包括:
选择模块31,用于从目标应用程序包含的项目中选择目标项目,从目标项目的资源目录中获取项目描述文件和源代码文件;
扫描模块32,用于对项目描述文件进行扫描,以得到项目描述文件中记录的至少一种技术栈的标识信息,至少一种技术栈是指安装于目标应用程序的开发环境中的技术栈;
扫描模块32,还用于对源代码文件进行扫描,以判断源代码文件中是否包含目标技术栈提供的代码信息,目标技术栈是指开发目标项目所使用的技术栈,且目标技术栈属于至少一种技术栈,若包含,则触发处理模块;
处理模块33,用于生成目标应用程序的标识信息、目标项目的标识信息以及目标技术栈的标识信息之间的关联关系,并基于关联关系从项目维度和/或应用程序维度获取目标技术栈的使用信息。
进一步可选的,处理模块33还用于:在源代码文件中包含目标技术栈提供的代码信息时,从项目描述文件中获取目标技术栈的标识信息和版本信息;
根据目标技术栈的标识信息查询第一配置文件,获取目标技术栈的类型,第一配置文件中分类记录有至少一种技术栈的标识信息;
相应地,处理模块33生成目标应用程序的标识信息、目标项目的标识信息以及目标技术栈的标识信息之间的关联关系时,具体用于:
生成目标应用程序的标识信息、目标项目的标识信息与目标技术栈的标识信息、版本信息和类型之间的关联关系。
进一步可选的,处理模块33还用于:将源代码文件中的源代码转化为抽象语法树,抽象语法树至少包括导入节点;
遍历抽象语法树上的导入节点,并判断遍历到的导入节点中被导入的内容是否包含第二配置文件中的组件库中的组件;
若被导入的内容中包含第二配置文件中的组件库中的组件,则根据设定的增大步长,增大作为被导入的内容的组件的使用次数,并从项目维度和/或应用程序维度统计组件的整体使用信息。
进一步可选的,处理模块33将源代码文件中的源代码转化为抽象语法树之前,还用于:识别源代码文件的文件类型;若源代码文件的文件类型是特定文件类型,则获取源代码文件中包含的脚本标签,脚本标签用于定义客户端脚本,将脚本标签定义的客户端脚本作为源代码;若源代码文件的文件类型不是特定文件类型,则直接将源代码文件中包含的程序代码作为源代码。
进一步可选的,处理模块33在基于关联关系从项目维度和/或应用程序维度获取目标技术栈的使用信息之后,还用于:
在技术栈升级和维护阶段,针对每个技术栈,根据使用技术栈的各个项目在上线后的线上运行数据分析技术栈的稳定性,根据技术栈的稳定性和技术栈的使用信息,对技术栈进行升级。
进一步可选的,处理模块33根据技术栈的稳定性和技术栈的使用信息,对技术栈进行升级时,具体用于:
在根据技术栈的使用信息确定技术栈为非主流技术栈,且技术栈的稳定性不符合稳定性要求的情况下,将使用技术栈的各项目中的技术栈升级到更高版本,或者,将使用技术栈的各项目中的技术栈更新为主流技术栈。
关于图3所示的前端资源信息处理装置的具体实现方式已经在上述方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图4为本申请一示例性实施例提供的一种电子设备的结构示意图。参见图4,该电子设备包括:存储器41和处理器42。
存储器41,用于存储计算机程序,并可被配置为存储其它各种数据以支持在计算平台上的操作。这些数据的示例包括用于在计算平台上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器41可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器42,与存储器41耦合,用于执行存储器41中的计算机程序,以用于:
从目标应用程序包含的项目中选择目标项目,从目标项目的资源目录中获取项目描述文件和源代码文件;对项目描述文件进行扫描,以得到项目描述文件中记录的至少一种技术栈的标识信息,至少一种技术栈是指安装于目标应用程序的开发环境中的技术栈;对源代码文件进行扫描,以判断源代码文件中是否包含目标技术栈提供的代码信息,目标技术栈是指开发目标项目所使用的技术栈,且目标技术栈属于至少一种技术栈;若包含,则生成目标应用程序的标识信息、目标项目的标识信息以及目标技术栈的标识信息之间的关联关系,并基于关联关系从项目维度和/或应用程序维度获取目标技术栈的使用信息。
进一步可选的,处理器42还用于:在源代码文件中包含目标技术栈提供的代码信息时,从项目描述文件中获取目标技术栈的标识信息和版本信息;根据目标技术栈的标识信息查询第一配置文件,获取目标技术栈的类型,第一配置文件中分类记录有至少一种技术栈的标识信息;
相应地,处理器42生成目标应用程序的标识信息、目标项目的标识信息以及目标技术栈的标识信息之间的关联关系时,具体用于:
生成目标应用程序的标识信息、目标项目的标识信息与目标技术栈的标识信息、版本信息和类型之间的关联关系。
进一步可选的,处理器42还用于:将源代码文件中的源代码转化为抽象语法树,抽象语法树至少包括导入节点;遍历抽象语法树上的导入节点,并判断遍历到的导入节点中被导入的内容是否包含第二配置文件中的组件库中的组件;若被导入的内容中包含第二配置文件中的组件库中的组件,则根据设定的增大步长,增大作为被导入的内容的组件的使用次数,并从项目维度和/或应用程序维度统计组件的整体使用信息。
进一步可选的,处理器42将源代码文件中的源代码转化为抽象语法树之前,还用于:
识别源代码文件的文件类型;若源代码文件的文件类型是特定文件类型,则获取源代码文件中包含的脚本标签,脚本标签用于定义客户端脚本,将脚本标签定义的客户端脚本作为源代码;若源代码文件的文件类型不是特定文件类型,则直接将源代码文件中包含的程序代码作为源代码。
进一步可选的,处理器42在基于关联关系从项目维度和/或应用程序维度获取目标技术栈的使用信息之后,还用于:
在技术栈升级和维护阶段,针对每个技术栈,根据使用技术栈的各个项目在上线后的线上运行数据分析技术栈的稳定性,根据技术栈的稳定性和技术栈的使用信息,对技术栈进行升级。
进一步可选的,处理器42根据技术栈的稳定性和技术栈的使用信息,对技术栈进行升级时,具体用于:
在根据技术栈的使用信息确定技术栈为非主流技术栈,且技术栈的稳定性不符合稳定性要求的情况下,将使用技术栈的各项目中的技术栈升级到更高版本,或者,将使用技术栈的各项目中的技术栈更新为主流技术栈。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由电子设备执行的各步骤。
进一步,如图4所示,该电子设备还包括:通信组件43、显示器44、电源组件45、音频组件46等其它组件。图4中仅示意性给出部分组件,并不意味着电子设备只包括图4所示组件。另外,图4中虚线框内的组件为可选组件,而非必选组件,具体可视电子设备的产品形态而定。本实施例的电子设备可以实现为台式电脑、笔记本电脑、智能手机或IOT设备等终端设备,也可以是常规服务器、云服务器或服务器阵列等服务端设备。若本实施例的电子设备实现为台式电脑、笔记本电脑、智能手机等终端设备,可以包含图4中虚线框内的组件;若本实施例的电子设备实现为常规服务器、云服务器或服务器阵列等服务端设备,则可以不包含图4中虚线框内的组件。
上述图4中的通信组件被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G、3G、4G/LTE、5G等移动通信网络,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
上述图4中的显示器包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
上述图4中的电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
上述图4中的音频组件,可被配置为输出和/或输入音频信号。例如,音频组件包括一个麦克风(MIC),当音频组件所在设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器或经由通信组件发送。在一些实施例中,音频组件还包括一个扬声器,用于输出音频信号。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种前端资源信息处理方法,其特征在于,包括:
从目标应用程序包含的项目中选择目标项目,从所述目标项目的资源目录中获取项目描述文件和源代码文件;
对所述项目描述文件进行扫描,以得到所述项目描述文件中记录的至少一种技术栈的标识信息,所述至少一种技术栈是指安装于所述目标应用程序的开发环境中的技术栈;
对所述源代码文件进行扫描,以判断所述源代码文件中是否包含目标技术栈提供的代码信息,所述目标技术栈是指开发所述目标项目所使用的技术栈,且所述目标技术栈属于所述至少一种技术栈;
若包含,则生成所述目标应用程序的标识信息、所述目标项目的标识信息以及所述目标技术栈的标识信息之间的关联关系,并基于所述关联关系从项目维度和/或应用程序维度获取所述目标技术栈的使用信息。
2.根据权利要求1所述的方法,其特征在于,还包括:
在所述源代码文件中包含所述目标技术栈提供的代码信息时,从所述项目描述文件中获取所述目标技术栈的标识信息和版本信息;
根据所述目标技术栈的标识信息查询第一配置文件,获取所述目标技术栈的类型,所述第一配置文件中分类记录有所述至少一种技术栈的标识信息;
相应地,生成所述目标应用程序的标识信息、所述目标项目的标识信息以及所述目标技术栈的标识信息之间的关联关系,包括:
生成所述目标应用程序的标识信息、所述目标项目的标识信息与所述目标技术栈的标识信息、版本信息和类型之间的关联关系。
3.根据权利要求1或2所述的方法,其特征在于,还包括:
将所述源代码文件中的源代码转化为抽象语法树,所述抽象语法树至少包括导入节点;
遍历所述抽象语法树上的导入节点,并判断遍历到的导入节点中被导入的内容是否包含第二配置文件中的组件库中的组件;
若所述被导入的内容中包含所述第二配置文件中的组件库中的组件,则根据设定的增大步长,增大作为所述被导入的内容的组件的使用次数,并从项目维度和/或应用程序维度统计所述组件的整体使用信息。
4.根据权利要求3所述的方法,其特征在于,将所述源代码文件中的源代码转化为抽象语法树之前,还包括:
识别所述源代码文件的文件类型;
若所述源代码文件的文件类型是特定文件类型,则获取所述源代码文件中包含的脚本标签,所述脚本标签用于定义客户端脚本,将所述脚本标签定义的客户端脚本作为所述源代码;
若所述源代码文件的文件类型不是所述特定文件类型,则直接将所述源代码文件中包含的程序代码作为所述源代码。
5.根据权利要求1或2所述的方法,其特征在于,在基于所述关联关系从项目维度和/或应用程序维度获取所述目标技术栈的使用信息之后,还包括:
在技术栈升级和维护阶段,针对每个技术栈,根据使用所述技术栈的各个项目在上线后的线上运行数据分析所述技术栈的稳定性,根据所述技术栈的稳定性和所述技术栈的使用信息,对所述技术栈进行升级。
6.根据权利要求5所述的方法,其特征在于,根据所述技术栈的稳定性和所述技术栈的使用信息,对所述技术栈进行升级,包括:
在根据所述技术栈的使用信息确定所述技术栈为非主流技术栈,且所述技术栈的稳定性不符合稳定性要求的情况下,将使用所述技术栈的各项目中的所述技术栈升级到更高版本,或者,将使用所述技术栈的各项目中的所述技术栈更新为主流技术栈。
7.一种前端资源信息处理装置,其特征在于,包括:
选择模块,用于从目标应用程序包含的项目中选择目标项目,从所述目标项目的资源目录中获取项目描述文件和源代码文件;
扫描模块,用于对所述项目描述文件进行扫描,以得到所述项目描述文件中记录的至少一种技术栈的标识信息,所述至少一种技术栈是指安装于所述目标应用程序的开发环境中的技术栈;
所述扫描模块,还用于对所述源代码文件进行扫描,以判断所述源代码文件中是否包含目标技术栈提供的代码信息,所述目标技术栈是指开发所述目标项目所使用的技术栈,且所述目标技术栈属于所述至少一种技术栈,若包含,则触发处理模块;
所述处理模块,用于生成所述目标应用程序的标识信息、所述目标项目的标识信息以及所述目标技术栈的标识信息之间的关联关系,并基于所述关联关系从项目维度和/或应用程序维度获取所述目标技术栈的使用信息。
8.根据权利要求7所述的装置,其特征在于,所述处理模块还用于:
将所述源代码文件中的源代码转化为抽象语法树,所述抽象语法树至少包括导入节点;
遍历所述抽象语法树上的导入节点,并判断遍历到的导入节点中被导入的内容是否包含第二配置文件中的组件库中的组件;
若所述被导入的内容中包含所述第二配置文件中的组件库中的组件,则根据设定的增大步长,增大作为所述被导入的内容的组件的使用次数,并从项目维度和/或应用程序维度统计所述组件的整体使用信息。
9.一种电子设备,其特征在于,包括:存储器和处理器;
所述存储器,用于存储计算机程序;
所述处理器耦合至所述存储器,用于执行所述计算机程序以用于执行权利要求1-6任一项所述方法中的步骤。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,当所述计算机程序被处理器执行时,致使所述处理器实现权利要求1-6任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111364419.1A CN114168183A (zh) | 2021-11-17 | 2021-11-17 | 前端资源信息处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111364419.1A CN114168183A (zh) | 2021-11-17 | 2021-11-17 | 前端资源信息处理方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114168183A true CN114168183A (zh) | 2022-03-11 |
Family
ID=80479479
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111364419.1A Pending CN114168183A (zh) | 2021-11-17 | 2021-11-17 | 前端资源信息处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114168183A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116450107A (zh) * | 2023-04-04 | 2023-07-18 | 北京科乐园网络科技有限公司 | 低代码平台二次开发软件的方法、装置、电子设备 |
-
2021
- 2021-11-17 CN CN202111364419.1A patent/CN114168183A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116450107A (zh) * | 2023-04-04 | 2023-07-18 | 北京科乐园网络科技有限公司 | 低代码平台二次开发软件的方法、装置、电子设备 |
CN116450107B (zh) * | 2023-04-04 | 2023-12-01 | 北京科乐园网络科技有限公司 | 低代码平台二次开发软件的方法、装置、电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110609686A (zh) | 数据系统生成方法、装置、计算机设备、存储介质 | |
CN114168183A (zh) | 前端资源信息处理方法、装置、设备及存储介质 | |
CN114547514A (zh) | 组件动态渲染方法、装置、设备及介质 | |
CN112579118A (zh) | 微服务的配置信息更新方法、装置、系统、介质和设备 | |
CN112395098A (zh) | 应用程序接口调用方法、装置、存储介质和电子设备 | |
CN113591079B (zh) | 获取异常应用安装包的方法、装置及电子设备 | |
CN112114804A (zh) | 应用程序的生成方法、装置及系统 | |
CN109542775B (zh) | 一种测试脚本的生成和执行方法及装置 | |
CN109120509B (zh) | 一种信息收集的方法及装置 | |
CN116401704A (zh) | 敏感数据识别方法、电子设备及存储介质 | |
US20110213663A1 (en) | Service intelligence module program product | |
CN112346761B (zh) | 前端资源上线方法、设备、系统及存储介质 | |
CN112364267B (zh) | 前端数据的采集方法及装置 | |
CN111125015B (zh) | 用于dump文件分类的方法、装置、终端和介质 | |
CN114816816A (zh) | 崩溃堆栈信息处理方法、装置、设备及存储介质 | |
CN110502251B (zh) | 应用安装方法及装置 | |
CN108897873B (zh) | 一种生成作业文件的方法、装置、存储介质及处理器 | |
CN114629788B (zh) | 配置信息的更新方法、系统、存储介质和电子装置 | |
CN111124399A (zh) | 弹窗组件的处理方法及装置、存储介质及处理器 | |
CN116405462B (zh) | 域名解析方法、容器服务系统、计算设备及存储介质 | |
CN114356288A (zh) | 小程序集成方法、装置、电子设备及存储介质 | |
CN116634019A (zh) | 基于分布式云平台的资源处理方法、设备及存储介质 | |
CN116755696A (zh) | 系统页面的生成方法、页面生成装置、设备及存储介质 | |
CN117407190A (zh) | 一种基于虚拟键盘的数据分享方法、装置、设备及介质 | |
CN117472432A (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 |