确定页面与业务模块之间对应关系的方法及装置与流程

文档序号:16428234发布日期:2018-12-28 19:56阅读:458来源:国知局
确定页面与业务模块之间对应关系的方法及装置与流程
本申请涉及互联网
技术领域
,尤其涉及一种确定页面与业务模块之间对应关系的方法及装置。
背景技术
移动端的应用程序(app)的结构,通常会按照业务层次划分,一个app下可包括多个业务模块,每一个业务模块下对应多个页面。app发布后需要在运行期对app的各业务模块进行监控,监控系统及埋点系统都需要获知app中展示的页面与其对应业务模块的对应关系,进而分析出业务模块的业务信息、运行状况等数据。现有技术中,在埋点页面时,可以附带上页面所属的业务模块的标识信息,客户端在进入app中的任一一个页面时会向服务器端的埋点系统上报埋点,埋点系统从上报的埋点中提取出该页面对应的业务模块的标识信息,从而获知页面与业务模块的对应关系。由于需要开发人员在开发app时手动设置冗余的埋点信息,因此对代码侵入性高。技术实现要素:有鉴于此,本申请提供一种确定页面与业务模块之间对应关系的方法及装置,不需要额外的埋点信息即可准确获知页面与业务模块的对应关系,代码侵入性低。为实现上述目的,本申请提供技术方案如下:根据本申请的第一方面,提出了一种确定页面与业务模块之间对应关系的方法,包括:确定应用程序的代码库与所述应用程序的代码文件之间的关系列表,所述代码库与所述应用程序的业务模块对应;遍历所述应用程序的代码文件的继承链,确定出属于页面类型的类文件以及该类文件所属的页面;基于所述关系列表和所述属于页面类型的类文件,确定所述应用程序的页面与业务模块之间的对应关系。根据本申请的第二方面,提出了一种确定页面与业务模块之间对应关系的装置,包括:第一确定模块,用于确定应用程序的代码库与所述应用程序的代码文件之间的关系列表,所述代码库与所述应用程序的业务模块对应;遍历模块,用于遍历所述应用程序的代码文件的继承链,确定出属于页面类型的类文件以及该类文件所属的页面;第二确定模块,用于基于所述第一确定模块确定的所述关系列表和所述遍历模块得到的所述属于页面类型的类文件,确定所述应用程序的页面与业务模块之间的对应关系。根据本申请的第三方面,提出了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行上述第一方面提供的确定页面与业务模块之间对应关系的方法。由以上技术方案可见,由于应用程序的页面与业务模块之间的对应关系是直接基于代码文件解析出的关联信息,可以确保应用程序的页面与业务模块之间的对应关系准确可靠,进而可避免现有技术中埋点信息出错或混淆业务模块、以及埋点上报错误或漏报的问题;由于不需要额外的埋点信息和测试环境,因此降低了对应用程序的代码文件代码侵入性和维护成本;当应用程序中有新加入的页面或者有需要废弃的页面时,可通过重新执行本申请提供的方法即可更新应用程序的页面与业务模块之间的对应关系,从而确保应用程序新的页面及时得到更新,废弃的页面及时得到清理。附图说明图1a是本申请一示例性实施例示出的确定页面与业务模块之间对应关系的方法的流程示意图。图1b是图1a中的应用程序的页面与业务模块之间对应关系的示意图。图2是本申请另一示例性实施例示出的确定页面与业务模块之间对应关系的方法的流程示意图。图3是本申请再一示例性实施例示出的确定页面与业务模块之间对应关系的方法的流程示意图。图4是本申请又一示例性实施例示出的确定页面与业务模块之间对应关系的方法的流程示意图。图5是本申请一示例性实施例示出的确定页面与业务模块之间对应关系的装置的结构示意图。图6是本申请另一示例性实施例示出的确定页面与业务模块之间对应关系的装置的结构示意图。图7是本申请一示例性实施例示出的电子设备的结构示意图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。图1a是本申请一示例性实施例示出的确定页面与业务模块之间对应关系的方法的流程示意图,图1b是图1a中的应用程序的页面与业务模块之间对应关系的示意图;如图1a所示,确定页面与业务模块之间对应关系的方法可包括如下步骤:步骤101,确定应用程序的代码库与应用程序的代码文件之间的关系列表,其中,代码库与应用程序的业务模块对应。在一实施例中,应用程序的代码库可以由开发应用程序对应的项目自身的开发者创建,也可以是第三方提供的开源代码库,还可以为提供给项目主体使用的代码库。对于ios类型的应用程序,一个代码库可以对应一个pod。在一实施例中,应用程序的代码文件为未经编译的源代码文件,是开发者为开发项目所写的代码文件,该代码文件无法直接运行,应用程序的代码文件可包含类文件,也可包含非类文件。在一实施例中,代码库与代码文件之间的关系列表记录的是代码库的标识与代码文件的名称之间的对应关系,例如,对于代码库的标识为abc1,代码文件的名称为efg1,则二者之间的对应关系通过如下表1来表示。表1代码库的标识代码文件的名称abc1efg1abc1efg2abc2def1在一实施例中,可以通过编译应用程序的代码文件,生成编译链接文件,从编译链接文件中确定应用程序的代码库与应用程序的代码文件之间的关系列表。其中,编译链接文件(linkmap)的结构可包括目标文件列表(objectfiles)、段表(sections)、符号表(symbols),其中,目标文件列表包含所有应用程序的所有类文件与代码库之间的对应关系,所有类文件例如包括应用程序的每一个页面的类文件、页面中的按键对应的类文件,等等。在一实施例中,可以通过文件分割、正则匹配等方法从编译链接文件中确定应用程序的代码库与应用程序的代码文件之间的关系列表。步骤102,遍历应用程序的代码文件的继承链,确定出属于页面类型的类文件以及该类文件所属的页面。在一实施例中,继承链是一种由objectivec语言定义的抽象概念,其中,objectivec是ios应用的一种编程语言。一个类文件里面的代码,可以用一些由objectivec规定的语法,来标识它继承自另外某一个类文件。当需要对代码文件进行编译时,可通过识别objectivec规定的语法,建立起一系列代码文件的继承关系,也即继承链。在一实施例中,可以从应用程序的代码文件中找出属于视图控制器的类文件,将属于视图控制器的类文件确定为属于页面类型的类文件。此外,由于视图控制器与页面一一对应,因此,当确定继承自视图控制器的类文件之后,即可知道该类文件对应的页面。步骤103,基于关系列表和属于页面类型的类文件,确定应用程序的页面与业务模块之间的对应关系。在一实施例中,可以通过结构化的数据形式呈现应用程序的页面与业务模块之间的对应关系。在一实施例中,由于关系列表中记录的是代码库的标识与代码文件的名称之间的对应关系,并且代码库与应用程序的业务模块对应,因此通过在关系列表中查找属于页面类型的类文件对应的代码库的标识,通过代码库的标识即可确定出与属于页面类型的类文件相对应的业务模块,由此可得到应用程序的页面与业务模块之间的对应关系。如图1b所示,应用程序包括三个业务模块:业务模块一、业务模块二、业务模块三,共包含100个代码文件:代码文件efg1、efg2、efg3、…、efg20、代码文件def21、def22、def23、…、def70、代码文件mnp71、mnp72、mnp73、…、mnp100。通过上述步骤101-步骤103,需要确定出业务模块一对应页面a、页面b、页面c,业务模块二对应页面d、页面e、页面f,业务模块三对应页面g、页面h、页面i。业务模块一对应第一代码库,业务模块二对应第二代码库,业务模块三对应第三代码库。需要说明的是,业务模块一、业务模块二、业务模块三还可以包含其按键、列表、文本框、输入框、视频播放器、图片展示器等组件,由于本申请是确定页面与业务模块之间的对应关系,因此本申请对业务模块中包含的其他组件不进行详细阐述。通过步骤101的描述,可以确定出第一代码库的标识、第二代码库的标识、第三代码库的标识与这100个代码文件的名称之间的对应关系,例如,第一代码库对应代码文件efg1、efg2、efg3、…、efg20,第二代码库对应代码文件def21、def22、def23、…、def70,第三代码库对应代码文件mnp71、mnp72、mnp73、…、mnp100,通过编译这100个代码文件,生成编译链接文件,从编译链接文件中确定出代码库的标识与这100个代码文件的名称之间的对应关系,例如,关系列表可包括第一代码库的标识与代码文件efg1、efg2、efg3、…、efg20的名称之间的对应关系,第二代码库的标识与代码文件def21、def22、def23、…、def70的名称之间的对应关系,第三代码库的标识与代码文件mnp71、mnp72、mnp73、…、mnp100的名称之间的对应关系,也即,关系列表中记录了第一代码库的标识、第二代码库的标识、第三代码库的标识与这100个代码文件的名称之间的对应关系。通过步骤102,可遍历这100个代码文件的继承链,从这100个代码文件中找出属于视图控制器的类文件,例如,通过遍历这100个代码文件的继承链可知,代码文件efg11继承自页面a的视图控制器,因此可确定代码文件efg11属于页面a的的类文件,代码文件efg15继承自页面b的视图控制器,因此可确定代码文件efg15属于页面b的类文件,代码文件efg16继承自页面c的视图控制器,因此可确定代码文件efg16属于页面b的类文件,代码文件def21继承自页面d的视图控制器,因此可确定代码文件def21属于页面d的类文件,代码文件def54继承自页面e的视图控制器,因此可确定代码文件def54属于页面e的类文件。类似地,代码文件def65属于页面f的类文件、代码文件mnp71属于页面g的类文件、代码文件mnp85属于页面h的类文件、代码文件mnp87属于页面i的类文件。通过上述步骤102可知,代码文件efg11、代码文件efg15、代码文件efg16均属于页面类型的类文件,因此通过步骤103,在关系列表中查找与代码文件efg11、代码文件efg15、代码文件efg16各自相对应的代码库的标识,可知,代码文件efg11、代码文件efg15、代码文件efg16对应第一代码库。由于代码文件efg11为属于页面a的类文件,代码文件efg15为属于页面b的类文件,代码文件efg16属于页面c的类文件,因此可确定出页面a、页面b、页面c对应业务模块一。图1b中所示的其他页面与业务模块之间的对应关系的描述可参见上述描述,在此不再详述。需要说明的是,上述步骤101和步骤102之间无时间上的先后限制,还可以先执行完步骤102,再执行步骤101,还可以同时执行步骤101和步骤102。本实施例中,由于应用程序与业务模块之间的对应关系是直接基于代码文件解析出的关联信息,可以确保应用程序的页面与业务模块之间的对应关系准确可靠,进而可避免现有技术中埋点信息出错或混淆业务模块、以及埋点上报错误或漏报的问题;由于不需要额外的埋点信息和测试环境,因此降低了对应用程序的代码文件代码侵入性和维护成本;当应用程序中有新加入的页面或者有需要废弃的页面时,可通过重新执行本申请提供的方法即可更新应用程序的页面与业务模块之间的对应关系,从而确保应用程序新的页面及时得到更新,废弃的页面及时得到清理。图2是本申请另一示例性实施例示出的确定页面与业务模块之间对应关系的方法的流程示意图;本实施例在上述图1a实施例的基础上,以如何基于关系列表和属于页面类型的类文件确定应用程序的页面与业务模块之间的对应关系为例并结合图1b进行示例性说明,如图2所示,包括如下步骤:步骤201,确定应用程序的代码库与应用程序的代码文件之间的关系列表,其中,代码库与应用程序的业务模块对应。步骤201的描述可以参见上述图1a所示实施例的描述,在此不再详述。步骤202,遍历应用程序的代码文件的继承链,确定出属于页面类型的类文件以及该类文件所属的页面。步骤202的描述可以参见上述图1a所示实施例的描述,在此不再详述。步骤203,确定属于页面类型的类文件的文件名称。基于上述图1a的基础上进行示例性说明,例如,图1b所示的属于页面类型的类文件的文件名称为:efg11、efg15、efg16、def21、def54、def65、mnp71、mnp85、mnp87,其中,efg11为页面a的代码文件,efg15为页面b的代码文件,efg16为页面c的代码文件,def21为页面d的代码文件,def54为页面e的代码文件,def65为页面f的代码文件,mnp71为页面g的代码文件,mnp85为页面h的代码文件,mnp87为页面i的代码文件。步骤204,从关系列表中查找与文件名称相对应的代码库的代码库名称。由于关系列表中记录了图1b所示的业务模块一、业务模块二、业务模块三与这100个代码文件之间的对应关系,因此可通过在关系列表中查找efg11、efg15、efg16、def21、def54、def65、mnp71、mnp85、mnp87,即可找到与文件名称相对应的代码库的代码库名称,例如代码库名称为abc1、abc2、abc3。步骤205,基于文件名称和代码库名称确定应用程序的页面与业务模块之间的对应关系。类文件的文件名称为efg11、efg15、efg16、def21、def54、def65、mnp71、mnp85、mnp87,通过图1a所示实施例中步骤102的描述可知分别对应页面a、页面b、页面c、页面d、页面e、页面f、页面g、页面h、页面i,通过步骤204确定出的代码库名称为abc1、abc2、abc3,并且efg11、efg15、efg16属于代码库abc1,def21、def54、def65、属于代码库abc2,mnp71、mnp85、mnp87属于代码库abc3,其中,代码库abc1、代码库abc2、代码库abc3分别对应业务模块一、业务模块二、业务模块三,因此基于对应关系即可确定出文件名称为efg11、efg15、efg16的类文件对应业务模块一、文件名称为def21、def54、def65的类文件对应业务模块二、文件名称为mnp71、mnp85、mnp87的类文件对应业务模块三。本实施例在上述图1a所示实施例的基础上,由于文件名称和代码库名称在应用程序中具有唯一性,因此基于文件名称和代码库名称确定应用程序的页面与业务模块之间的对应关系大大提高了统计页面与业务模块之间的对应关系的可靠性。图3是本申请再一示例性实施例示出的确定页面与业务模块之间对应关系的方法的流程示意图;本实施例在上述图1a实施例的基础上,以如何遍历应用程序的代码文件的继承链确定出属于页面类型的类文件以及该类文件所属的页面为例并结合图1b进行示例性说明,如图3所示,包括如下步骤:步骤301,确定应用程序的代码库与应用程序的代码文件之间的关系列表,其中,代码库与应用程序的业务模块对应。步骤301的描述可以参见上述图1a所示实施例的描述,在此不再详述。步骤302,基于应用程序的代码文件的文件名称确定应用程序的代码文件在文件夹中的文件路径。在一实施例中,一个应用程序的源代码可对应一个文件夹,文件夹中包含编译打包应用程序所需的代码文件、资源文件以及配置文件等。在一实施例中,文件路径是相对文件夹在磁盘空间中的位置而言的。步骤303,遍历与文件路径对应代码文件的继承链,基于继承链上的代码文件的代码内容确定继承自视图控制器的类文件,将继承自视图控制器的类文件确定为属于页面类型的类文件。在步骤303中,例如,代码文件b的文件路径的形式为“文件夹a下的代码文件b”,可基于文件路径找到文件夹a下的代码文件b。解析代码文件b中的代码内容,若基于代码文件b的代码内容确定代码文件b继承自代码文件c,则进一步解析代码文件c的代码内容,若基于代码文件c的代码内容确定代码文件c继承自代码文件d,则进一步解析代码文件d的代码内容,若基于代码文件d的代码内容确定代码文件d继承自视图控制器(uiviewcontroller),则将代码文件b确定为属于页面的代码文件,其中,代码文件b的继承链上的代码文件包括代码文件c和代码文件d。通过该过程,可实现对代码文件b的继承链的遍历。步骤304,基于关系列表和属于页面类型的类文件,确定应用程序的页面与业务模块之间的对应关系。步骤304的描述可以参见上述图1a或者图2所示实施例的描述,在此不再详述。本实施例在上述图1a所示实施例的基础上,通过遍历与文件路径对应代码文件的继承链,可以确保应用程序中的代码文件均被扫描到,进而确保能够找到全部属于页面类型的类文件,确保后续得到的页面与业务模块之间的对应关系更准确可靠。进一步地,在执行上述图1a中的步骤101、图2中的步骤201、图3中的步骤301之前,还可以如下步骤:若检测到应用程序中的非业务模块,过滤非业务模块对应的代码库;在将非业务模块对应的代码库过滤之后,执行确定应用程序的代码库与所述应用程序的代码文件之间的关系列表的步骤。通过过滤非业务模块对应的代码库,可以确保关系列表中仅记录业务模块对应的代码库与代码文件之间的对应关系,在基于关系列表和属于页面类型的类文件确定应用程序的页面与业务模块之间的对应关系时,可减少在关系列表中匹配页面与业务模块的次数。在上述图1a-图3所示实施例的基础上,在得到页面与业务模块之间的对应关系之后,方法还可以包括:将应用程序的页面与业务模块之间的对应关系上传至服务器,服务器记录对应关系。在一实施例中,应用程序的页面与业务模块之间的对应关系可以通过文件的方式上传给服务器,当然,本实施例并不限于将对应关系以文件的方式上传给服务器,只要能够将表示对应关系的数据传输给服务器即可。通过将页面与业务模块之间的对应关系上传至服务器,使服务器可以获知应用程序全部的业务模块,因此可以使服务端不需要从客户端获知业务模块的信息的情形下,就能对应用程序的页面按照业务模块进行分类。图4是本申请如何使用页面与业务模块之间对应关系的的流程示意图;本实施例中的应用程序已被编译并可执行,如图4所示,包括如下步骤:步骤401,在应用程序运行时,确定应用程序的页面的埋点信息。步骤402,向服务器上传应用程序的页面的埋点信息,服务器基于埋点信息确定页面,从对应关系中确定与页面对应的业务模块。例如,在用户侧,用户打开应用程序的页面,页面名称为abc,若在页面abc设置有埋点信息,则终端可以向服务器上传页面abc被打开的埋点信息,埋点信息例如为“{pageid=abc}”,服务器从对应关系中确定页面abc属于业务模块opq。本实施例中,由于服务器中已经存储页面与业务模块之间的对应关系,当服务器接收到埋点信息后,基于埋点信息即可获知页面对应的业务模块,服务器不需要从客户端获知业务模块的信息的情形下,就能对应用程序的页面按照业务模块进行分类。与前述确定页面与业务模块之间对应关系的方法的实施例相对应,本申请还提供了确定页面与业务模块之间对应关系的装置的实施例。图5是本申请一示例性实施例示出的确定页面与业务模块之间对应关系的装置的结构示意图,如图5所示,装置包括:第一确定模块51,用于确定应用程序的代码库与应用程序的代码文件之间的关系列表,代码库与应用程序的业务模块对应;遍历模块52,用于遍历应用程序的代码文件的继承链,确定出属于页面类型的类文件以及该类文件所属的页面;第二确定模块53,用于基于第一确定模块51确定的关系列表和遍历模块52得到的属于页面类型的类文件,确定应用程序的页面与业务模块之间的对应关系。图6是本申请另一示例性实施例示出的确定页面与业务模块之间对应关系的装置的结构示意图,如图6所示,在上述图5所示实施例的基础上,第二确定模块53可包括:第一确定单元531,用于确定属于页面类型的类文件的文件名称;查找单元532,用于从关系列表中查找与第一确定单元531确定的文件名称相对应的代码库的代码库名称;第二确定单元533,用于基于第一确定单元531确定的文件名称和查找单元532查找到的代码库名称确定应用程序的页面与业务模块之间的对应关系。在一实施例中,遍历模块52可包括:第三确定单元521,用于基于应用程序的代码文件的文件名称确定应用程序的代码文件在文件夹中的文件路径;遍历单元522,用于遍历与第三确定单元521确定的文件路径对应的代码文件的继承链,基于所述继承链上的代码文件的代码内容确定继承自视图控制器的类文件,将继承自视图控制器的类文件确定为属于页面类型的类文件。在一实施例中,第一确定模块51可包括:编译单元511,用于编译应用程序的代码文件,生成编译链接文件;第四确定单元512,用于从编译单元511编译得到的编译链接文件中确定应用程序的代码库与应用程序的代码文件之间的关系列表。在一实施例中,装置还包括:过滤模块54,用于若检测到应用程序中的非业务模块,过滤非业务模块对应的代码库;在过滤模块54将非业务模块对应的代码库过滤之后,第一确定模块51执行确定应用程序的代码库与应用程序的代码文件之间的关系列表的步骤。在一实施例中,装置还包括:上传模块55,用于将第二确定模块53确定的应用程序的页面与业务模块之间的对应关系上传至服务器,服务器记录对应关系。本申请确定页面与业务模块之间对应关系的装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储介质中对应的计算机程序指令读取到内存中运行形成的,算机程序用于执行上述图1a-图3任一实施例提供的确定页面与业务模块之间对应关系的方法。从硬件层面而言,如图7所示,为本申请确定页面与业务模块之间对应关系的装置所在电子设备的一种硬件结构图,除了图7所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本
技术领域
中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1