CN114064467A - 资源分析方法、装置、电子设备及存储介质 - Google Patents

资源分析方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN114064467A
CN114064467A CN202111304338.2A CN202111304338A CN114064467A CN 114064467 A CN114064467 A CN 114064467A CN 202111304338 A CN202111304338 A CN 202111304338A CN 114064467 A CN114064467 A CN 114064467A
Authority
CN
China
Prior art keywords
resource
analyzed
analysis
storage path
calling function
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
Application number
CN202111304338.2A
Other languages
English (en)
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 Technology Shenzhen Co Ltd
Original Assignee
Tencent 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 Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202111304338.2A priority Critical patent/CN114064467A/zh
Publication of CN114064467A publication Critical patent/CN114064467A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)

Abstract

本申请涉及计算机技术领域,尤其涉及一种资源分析方法、装置、电子设备及存储介质,所述方法包括:当提交待分析资源时,确定与所述待分析资源对应的预设调用函数;所述预设调用函数包括所述待分析资源所在的第一存储路径和资源分析工具所在的第二存储路径;基于所述预设调用函数调用所述第二存储路径下的所述资源分析工具,以及基于所述预设调用函数将所述第一存储路径传递给所述资源分析工具;基于所述资源分析工具对所述第一存储路径下的所述待分析资源的静态特征进行分析,得到对所述待分析资源的静态分析结果。本申请能够提高资源分析的效率以及准确性。

Description

资源分析方法、装置、电子设备及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种资源分析方法、装置、电子设备及存储介质。
背景技术
现有技术中,针对资源合规检查,大多数采用人工后期排查和后处理资源检查两种方式,即在表现效果不正确、功能异常、构建安装包错误、发现安装包包体大小异常等情况后,再通过人工和后处理资源检查去找到有问题的资源并进行资源修复;从而后处理的资源检查方法不能防患于未然,还需要人工介入排查问题,资源检查效率以及准确率低。
发明内容
本申请所要解决的技术问题在于,提供一种资源分析方法、装置、电子设备及存储介质,能够提高资源分析效率和准确性。
为了解决上述技术问题,一方面,本申请提供了一种资源分析方法,包括:
当提交待分析资源时,确定与所述待分析资源对应的预设调用函数;所述预设调用函数包括所述待分析资源所在的第一存储路径和资源分析工具所在的第二存储路径;
基于所述预设调用函数调用所述第二存储路径下的所述资源分析工具,以及基于所述预设调用函数将所述第一存储路径传递给所述资源分析工具;
基于所述资源分析工具对所述第一存储路径下的所述待分析资源的静态特征进行分析,得到对所述待分析资源的静态分析结果。
另一方面,本申请实施例提供了一种资源分析装置,包括:
预设调用函数确定模块,用于当提交待分析资源时,确定与所述待分析资源对应的预设调用函数;所述预设调用函数包括所述待分析资源所在的第一存储路径和资源分析工具所在的第二存储路径;
资源分析工具调用模块,用于基于所述预设调用函数调用所述第二存储路径下的所述资源分析工具,以及基于所述预设调用函数将所述第一存储路径传递给所述资源分析工具;
静态分析模块,用于基于所述资源分析工具对所述第一存储路径下的所述待分析资源的静态特征进行分析,得到对所述待分析资源的静态分析结果。
另一方面,本申请提供了一种电子设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如上述的资源分析方法。
另一方面,本申请提供了一种计算机存储介质,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行如上述的资源分析方法。
实施本申请实施例,具有如下有益效果:
本申请在提交待分析资源时,首先确定与待分析资源对应的预设调用函数;在基于预设调用函数调用第二存储路径下的资源分析工具,以及将第一存储路径传递给资源分析工具;基于资源分析工具对第一存储路径下的待分析资源的静态分析特征进行分析,得到对待分析资源的静态分析结果。本申请在将待分析资源提交到版本库之前,首先对待分析资源的静态特征进行分析,从而能够避免将不符合提交目标的资源提交到版本库中,从源头上避免问题的发生;另外,通过与待分析资源对应的预设调用函数调用资源分析工具,以实现对待分析资源的静态特征的分析,能够提高资源分析的效率以及准确性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本申请实施例提供的实施环境示意图;
图2是本申请实施例提供的一种资源分析方法流程图;
图3是本申请实施例提供的一种预设调用函数注册方法流程图;
图4是本申请实施例提供的一种预设调用函数生成方法流程图;
图5是本申请实施例提供的一种资源文件更新量分析方法流程图;
图6是本申请实施例提供的一种全局唯一标识符分析方法流程图;
图7是本申请实施例提供的一种资源分析流程图;
图8是本申请实施例提供的资源前置分析项的执行流程图;
图9是本申请实施例提供的一种代码编译错误提示界面示意图;
图10是本申请实施例提供的自动添加hook界面示意图;
图11是本申请实施例提供的第一日志示意图;
图12是本申请实施例提供的第二日志示意图;
图13是本申请实施例提供的GUID路径示意图;
图14是本申请实施例提供的一种资源分析装置示意图;
图15是本申请实施例提供的一种电子设备结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。显然,所描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先对本说明书实施例中涉及的相关名词做以下解释:
前置检查:大多数检查项都属于前置检查,在用户通过SVN工具提交资源时立刻进行检查,依赖于提交者本地的资源分析工具,从而将检查的计算工作分配给用户终端,实时得到资源分析的结果,如果资源有问题,将会阻止提交并告知用户如何去解决资源问题。
后置检查:少数检查项属于后置检查,在用户提交资源后进行检查,利用公共机器进行自动化计算,比如:代码编译错误检查,如果提交的资源有问题,会通知用户进行修改。
请参阅图1,其示出了本申请实施例提供的实施环境示意图,该实施环境可包括:至少一个前置分析端110和后置分析端120,前置分析端110和后置分析端120可通过网络进行数据通信。
具体地,当前置分析端110接收到待分析资源提交请求时,调用前置分析端110中的资源分析工具对待分析资源进行静态特征分析,得到静态分析结果;当静态分析结果符合提交目标时,前置分析端110将待分析资源提交给后置分析端120;后置分析端120对接收到的待分析资源进行动态特征分析,得到对待分析资源的动态分析结果。
前置分析端110可以基于浏览器/服务器模式(Browser/Server,B/S)或客户端/服务器模式(Client/Server,C/S)与后置分析端120进行通信。前置分析端110可以包括:智能手机、平板电脑、笔记本电脑、数字助理、智能可穿戴设备、车载终端、服务器等类型的实体设备,也可以包括运行于实体设备中的软体,例如应用程序等。本申请实施例中的前置分析端110上运行的操作***可以包括但不限于安卓***、IOS***、linux、windows等。
后置分析端120与前置分析端110可以通过有线或者无线建立通信连接,后置分析端120可以包括一个独立运行的服务器,或者分布式服务器,或者由多个服务器组成的服务器集群,其中服务器可以是云端服务器。
为了解决现有技术中资源检查存在的效率低以及准确性低的问题,本申请实施例提供了一种资源分析方法,其执行主体可以为上述的前置分析端,请参阅图2,该方法可包括:
S210.当提交待分析资源时,确定与所述待分析资源对应的预设调用函数;所述预设调用函数包括所述待分析资源所在的第一存储路径和资源分析工具所在的第二存储路径。
本申请实施例中,可通过资源管理平台提交待分析资源,其中资源管理平台为用于进行资源处理、资源监控、资源提交等操作的平台。其中与待分析资源对应的预设调用函数即可为在资源管理平台进行注册得到的,从而当通过资源管理平台提交待分析资源时,基于与待分析资源对应的预设调用函数调用资源分析工具进行资源分析。资源分析工具中集成了与待分析资源的多项静态特征对应的资源分析项。
待分析资源可以与工程项目相对应,一个工程项目中的资源文件可看成一项待分析资源,即待分析资源中可包括多种不同形式的资源文件。相应地,资源分析工具中进一步包括了针对不同格式的资源文件的资源分析项。
进一步地,第一存储路径和第二存储路径均可为前置分析端下的存储路径,从而使得调用资源分析工具对待分析资源进行静态分析的过程均可在前置分析端实现,进而降低了后置分析端的处理压力。
S220.基于所述预设调用函数调用所述第二存储路径下的所述资源分析工具,以及基于所述预设调用函数将所述第一存储路径传递给所述资源分析工具。
本实施例中,预设调用函数的功能可以包括调用第二存储路径下的资源分析工具,以及将第一存储路径传递给资源分析工具,以使得资源分析工具对第一存储路径下的待分析资源进行分析。具体地,资源分析工具对第一存储路径下的待分析资源进行分析可以是资源分析工具将待分析资源从第一存储路径下读取出来,放到资源分析工具预设的工作区域,从而资源分析工具可对工作区域中的待分析资源进行分析;也可以是资源分析工具直接在第一存储路径下对待分析资源进行分析,而不必读取出来。
S230.基于所述资源分析工具对所述第一存储路径下的所述待分析资源的静态特征进行分析,得到对所述待分析资源的静态分析结果。
静态特征可以是待分析资源在非编译状态或者非运行状态下所体现的特征,通过资源分析工具中与静态分析对应的资源分析项,能够得到待分析资源的静态分析结果。
本申请在提交待分析资源时,首先确定与待分析资源对应的预设调用函数;在基于预设调用函数调用第二存储路径下的资源分析工具,以及将第一存储路径传递给资源分析工具;基于资源分析工具对第一存储路径下的待分析资源的静态分析特征进行分析,得到对待分析资源的静态分析结果。本申请在将待分析资源提交到版本库之前,首先对待分析资源的静态特征进行分析,从而能够避免将不符合提交目标的资源提交到版本库中,从源头上避免问题的发生;另外,通过与待分析资源对应的预设调用函数调用资源分析工具,以实现对待分析资源的静态特征的分析,能够提高资源分析的效率以及准确性。
进一步地,对于上述的与待分析资源对应的预设调用函数可通过注册得到,具体请参阅图3,其示出了一种预设调用函数注册方法,该方法可包括:
S310.确定待分析资源所在的所述第一存储路径,以及所述资源分析工具所在的所述第二存储路径。
S320.基于所述第一存储路径以及所述第二存储路径,在资源管理平台注册与所述待分析资源对应的所述预设调用函数。
在注册与每项待分析资源对应的预设调用函数时,需要确定待分析资源所在的第一存储路径,这样能够使得资源分析工具明确查找待分析资源的路径;也需要确定资源分析工具所在的第二存储路径,以使得预设调用函数明确查找资源分析工具的路径。
从而通过预先注册与待分析资源对应的预设调用函数,使得在提交待分析资源时,首先通过预设调用函数进行资源分析工具的调用;并且预设调用函数一旦注册成功,便可多次使用,从而提高了资源分析工具调用的灵活性和便利性。
对于预设调用函数的生成,具体可在资源管理平台中实现,可参阅图4,其示出了一种预设调用函数生成方法,该方法可包括:
S410.获取与所述待分析资源对应的预设调用函数创建模板。
S420.基于所述第一存储路径和所述第二存储路径,对所述预设调用函数创建模板进行配置,得到已配置调用函数信息。
S430.基于所述已配置调用函数信息,生成与所述待分析资源对应的预设调用函数。
在需要创建与待分析资源对应的预设调用函数时,可在资源管理平台执行预设调用函数创建指令,从而便可获取到预设调用函数创建模板。预设调用函数创建模板中包括多项可配置项,多项可配置项包括待分析资源所在的存储路径、资源分析工具所在的路径等,具体可基于第一存储路径和第二存储路径对相应的可配置项进行配置,从而得到与待分析资源对应的预设调用函数。
由于模板一般具有通用性,为了得到与待分析资源对应的预设调用函数,可通过对预设调用函数创建模板进行配置来实现;对于预设调用函数创建模板中的可配置项能够灵活修改,从而当待分析资源所在的路径发生变化,或者资源分析工具所在的路径发生变化,均能够适应性地对相应可配置项进行修改,从而生成变更后的预设调用函数,进而提高了预设调用函数创建的灵活性。
对于待分析资源的静态分析特征,可包括待分析资源中资源文件的更新量,资源文件的更新量用于表征所述资源文件的字节数与引用所述资源文件的关联文件的字节数之和。例如,对于资源文件A,其被资源文件B、资源文件C以及资源文件D所引用,从而资源文件A的更新量即为资源文件A的大小、资源文件B的大小、资源文件C的大小以及资源文件D的大小之和。具体请参阅图5,其示出了一种资源文件更新量分析方法,该方法可包括:
S510.基于所述资源分析工具获取所述待分析资源中每个资源文件的目标更新量;所述目标更新量基于所述每个资源文件的字节数,以及各资源文件之间的引用关系得到。
S520.对所述每个资源文件的目标更新量进行分析,得到对所述待分析资源的更新量分析结果。
S530.基于所述更新量分析结果,确定所述静态分析结果。
对于各资源文件的目标更新量可记载在更新量日志文件中,更新量日志文件包括多项文件更新量条目,每个条目对应一个资源文件;该更新量日志文件可包括在待分析资源中,从而当调用资源分析工具对待分析资源中资源文件的更新量时,资源分析工具可获取该更新量日志文件,从而对更新量日志文件中各项文件更新量条目进行遍历,将目标更新量大于预设更新量的资源文件确定为待确认资源文件,相应待分析资源被确定为不符合提交要求。即更新量分析结果可以为待分析资源符合提交要求;或者更新量分析结果可以包括待分析资源不符合提交要求的提示,以及更新量大于预设更新量的资源文件的相关信息,相关信息可以为文件名称、文件标识或者文件所在路径等信息。静态分析结果中可包括上述更新量分析结果。
通过对资源文件的更新量进行分析,能够避免具有较大更新量的资源文件被发布给用户,以造成用户资源更新量较大的问题,提升用户加载以及使用相应资源的速度和效率。
静态特征还可以包括全局唯一标识符;相应地,请参阅图6,其示出了一种全局唯一标识符分析方法,该方法可包括:
S610.基于所述资源分析工具确定所述待分析资源中各资源文件对应的已有全局唯一标识符。
S620.对所述已有全局唯一标识符进行路径解析,得到所述各资源文件对应的解析路径。
S630.将所述各资源文件对应的解析路径,与所述各资源文件所在的目标路径进行一致性比对,得到对所述待分析资源的全局唯一标识符分析结果。
S640.基于所述全局唯一标识符分析结果,确定所述静态分析结果。
一般情况下,每个全局唯一标识符GUID和资源文件所在的路径是一一对应的,如果不对应,就说明该全局唯一标识符GUID有冲突。本实施例中,这里已有全局唯一标识符可以是***中标注的与各资源文件对应的全局唯一标识符,其可能准确,也可能不准确;通过资源分析工具对各资源文件所标识的已有全局唯一标识符进行路径解析,得到各资源文件对应的解析路径。各资源文件所在的目标路径可以为各资源文件所在的实际存储路径;将解析路径与资源文件所在的目标路径进行一致性比对,根据一致性比对结果可确定各资源文件是否存在全局唯一标识符冲突的情况。从而全局唯一标识符分析结果可以包括待分析资源通过全局唯一标识符分析的提示信息;或者全局唯一标识符分析结果可以待分析资源没有通过全局唯一标识符分析的提示信息,以及存在GUID冲突的资源文件的相关信息,相关信息可以为文件名称、文件标识或者文件所在路径等信息。静态分析结果中可包括上述全局唯一标识符分析结果。通过对待分析资源的全局唯一标识符进行分析,能够避免发布的资源信息中存在GUID冲突的问题,增强待分析资源运行的稳定性。
在本申请实施例中,当所述静态分析结果指示所述待分析资源不符合提交目标时,基于所述资源分析工具对所述待分析资源进行自动修复,得到已修复资源;例如,当静态特征包括资源脚本的编码格式时,可通过资源分析工具对资源脚本的编码格式进行分析;具体可包括:当所述资源脚本的编码格式不为目标格式时,基于所述资源分析工具将所述资源脚本的编码格式转换为所述目标格式;基于所述目标格式的资源脚本,得到所述已修复资源。如果用户提交的C#和Lua脚本的编码格式是UTF8-WithBOM,这格式是不符合预先制定的脚本规范的,那资源分析工具会自动将这个脚本的编码格式转化为UTF8-WithoutBOM,即实现了对待分析资源的修复,并提交已修复资源。
另外,当所述静态分析结果指示所述待分析资源符合提交目标时,向后置分析端提交所述待分析资源;所述后置分析端用于对所述待分析资源的动态特征进行分析,得到所述待分析资源的动态分析结果;所述动态特征用于表征所述待分析资源在编译或者运行过程中所表现的特征。对于后置分析端的对待分析资源进行编译,导致其分析出编译错误的情况可能包括:开发人员修改的资源代码文件提交不完整、开发人员没有进行本地编译修改后直接提交等。这些情况会导致发布后资源被下载更新后,本地报错,无法运行,相应构建安装包也会出错。
本实施例中之所以将对待分析资源的编译分析放在后置分析端,是因为代码编译错误需要编译代码才能发现,而一次编译代码需要一段时间,如果放在前置分析端进行分析的话,开发人员每提交一次代码,提交过程就要等待一段时间,从而导致代码提交过程较长;而发在后置分析端进行编译分析时,能够充分利用后端公共资源,提高整个分析过程的效率。前置分析是在提交过程中的分析,当待分析资源通过前置分析时,便向后置分析端进行提交。
下面以一具体示例说明本申请的实施流程,请参阅图7,其示出了一种资源分析流程图,其中包括:
1.提交者提交资源;
2.通过资源分析工具对提交的资源进行前置提交检查,判断提交的资源是否正常;
3.当资源正常时,将提交的资源提交到版本库中;
4.当资源异常时,通过资源分析工具对资源进行修复,得到已修复资源,并将已修复资源提交到版本库中;对于不能通过资源分析工具进行修复的资源,提示提交失败并报错;
5.通过后置分析端对提交成功的资源进行检查;当资源正常时,结束资源检查;当资源异常时,发送报错消息。
对于资源分析工具中集成的静态特征分析项具体可包括:
1.提交描述规范检查:要输入有意义且详细的提交描述,还需要包含需求单/bug单链接。
2.禁止提交某些类型的文件:比如.dds,因为.dds会导致打包失败。
3.图集提交检查:图集的.prefab只能提交到/Assets/Resources/目录下,图集的.png和.mat只能提交到/Assets/Common/目录下。
4.图片格式检查:对散图对应的.meta文件进行maxTextureSize、textureFormat、overridden等字段的检查,对格式不正确的图片将自动标准化图片格式。
5.图片长宽4的倍数检查:长宽都是4的倍数的图片压缩后,平均会减少75%的大小。
6.新增文件对应的.meta提交检查:新增文件必须和对应的.meta文件一起提交,也提供了自动帮提.meta的功能。
7.材质.mat检查:新增.fbx时,避免新增的.mat漏提,如果提交者漏提了.mat,会自动帮提.mat。
8.材质.mat里的m_Name字段检查:拷贝过来的.mat只改了名字,不能直接提交,要在Unity里保存下,自动修改m_Name字段后才能提交,否则会导致材质表现不正常。
9.禁止有冲突的文件提交检查:解决冲突后再提交。
10.修改文件对更新量大小的影响检查:提交的文件会造成大于50兆的更新量,就禁止提交!提交的文件会造成大于25兆且小于50兆的更新量,就二次弹窗提示确认。另外,如果是.cs就只做二次弹窗提示开发者去确认有没有序列化相关的变更,不会禁止提交。
11.GUID全局重复检查:.meta里的GUID重复。
12.主干和分支的.meta文件一致性检查:避免合线时造成的.meta错误导致表现异常。
13.视频格式检查:视频编码格式必须是h264,帧率必须是24帧,对比特率也有要求。
14.视频大小检查:10秒以内的视频要小于10M,10秒到25秒的视频要小于20M,25秒以上的视频要小于25M。
15.文件路径和文件名不能有中文的检查:避免一些工具和功能的异常。
16.C#和lua脚本的UTF8-WithoutBOM格式检查:C#和lua脚本统一了编码格式,必须是UTF8-WithOutBOM格式,否则将会在提交时自动帮改成UTF8-WithOutBOM格式。
17.代码规范检查:比如,不是Editor目录下的C#脚本里不能有usingUnityEditor,避免常见的UnityEditor错用导致的打包报错。
相应地资源前置分析项的执行流程图可参阅图8。
对于后置分析端包含的代码编译错误分析项:公共机器自动编译代码,如果有编译错误,就通过相关通讯软件推送编译报错给提交者以提示资源修复。例如,请参阅图9,其示出了一种代码编译错误提示界面示意图。
对于资源分析工具CommitChecker,该工具位于Unity工程目录下,其具有相应的注册机制和更新机制,上述的预设调用函数具体可以为钩子hook。执行CommitChecker.exe,如果不传参或者传参参数是“Register”,表明是注册SvnHook;如果传参参数是“Unregister”,表明是反注册SvnHook,注册SvnHook表示打开提交检查开关;反注册SvnHook表示关闭提交检查开关。之所以要反注册,是因为因为有极少数的提交,不能通过提交检查工具的检查,但这些提交是不得不提交的,所以,就需要反注册关闭提交检查工具后再提交。当然,也可以手动注册和反注册SvnHook,在Unity的Tools工具栏新增了该功能。
用户每次启动Unity或编译结束时,都会自动检查该工程的钩子有没有注册,如果没有注册就会自动注册SVNHook,还会检查CommitChecker工具是不是最新的版本,如果不是最新版本就会自动更新该工具目录。这样就能保证每人的提交都受检查以及每人的提交检查工具都是最新的。另外,如果提交者故意删除了CommitChecker工具所在的文件夹导致检查工具失效,后台会拦下未经客户端前置检查的提交,并提示提交者将CommitChecker工具更新回工程目录。
上述的资源管理平台具体可以为TortoiseSVN(TortoiseSubversion)或者SVN(Subversion,开放源代码的版本控制***),以TortoiseSVN为例进行说明,可以先从注册表读取TortoiseSVN现有的键值对,再把新加的hook和现有的hook全部重写进注册表,新加的hook指的是新创建的工程需要新加一个该工程对应的hook;现有的hook指的是原本就存在的工程对应的hook。每个键值对的key都是由HookType、WorkingCopyPath、CommandLine拼接成的字符串,其中HookType是hook的类型,这个检查是提交前检查,所以HookType是pre_commit_hook;这个字段在每个hook里可以是一样的;WorkingCopyPath是该hook对应的工程路径,由于每个hook对应一个工程,不同的工程的路径不同,所以这个字段在每个hook里都不同;CommandLine是CommitChecker工具所在的路径,这个字段在每个hook里可以是一样的。
自动添加hook后的表现如下图10所示。同理,反注册hook就是删掉注册表里的这个hook。其中,一个hook对应一个TortoiseSVN键值对,键值对存在于Windows***的TortoiseSVN的注册表里,一个工程对应一个hook,终端中有多个工程,所以会同时存在多个hook。
Hook注册成功后,提交者在提交时,SVN会执行检查工具CommitChecker.exe并传递参数。其中的两个参数很关键,是两个临时文件的路径;临时文件的路径举例:
C:\Users\UsersA\AppData\Local\Temp\svnD16C.tmp。
第一个临时文件里的内容是本次提交的提交描述,提交描述可用于做提交描述规范检查;第二个临时文件里的内容是本次提交的所有文件的路径,有了本次提交的所有文件的路径就可以查询到每个将要提交的文件的SVN状态,比如:add、delete。
要根据文件路径查询该文件的Svn状态,就需要用到svn.exe。可以在Windows注册表里根据"SOFTWARE\\TortoiseSVN"找到TortoiseSVN的安装目录,从而找到svn.exe所在的路径。但如果用户在安装TortoiseSVN时没有勾选commandlineclienttools项,就会导致TortoiseSVN的安装目录下没有svn.exe,也就没法执行SVN命令。所以CommitChecker工具自身也集成了svn.exe来解决这个问题。使用Parallel.ForEach并行进行数据处理,能较快的得到每个文件的Svn状态,查询到文件的Svn状态,就能区分哪些文件时新增的、那些文件是修改的、哪些文件是删除的。
对于上述的资源文件的更新量的实施过程进行说明,通过自动构建一次全量bundle,生成全量的日志文件bundleBuildInfo.log,如图11所示,该日志文件记录了每一个bundle引用到的文件以及文件大小这些信息。有了图11中的这些信息,就可以通过文本分析,得到每一个文件会造成的更新量大小,如图12所示。
另外,资源分析工具会每天自动更新一次assetsChangeBundleList.log文件,用于保证修改文件对bundle大小的影响的实时性。
这样,资源分析工具就可以利用assetsChangeBundleList.log文件进行“修改文件对更新量大小的影响”的检查。目前的检查规则如下:提交的文件会造成大于50兆的更新量,就禁止提交!提交的文件会造成大于25兆且小于50兆的更新量,就二次弹窗提示确认。另外,如果是.cs就只做二次弹窗提示开发者去确认有没有序列化相关的变更,不会禁止提交。
对于上述的GUID全局重复检查的实施过程进行说明,每个GUID都和Unity资源文件所在的路径一一对应,如果不对应,就说明该GUID有问题,需要打开Unity重新生成新的GUID。有两种方法可以判断guid是否冲突:
第一种方法是传入将要提交的资源的GUID,该工具就能将路径解析出来,再将解析出来的路径和将要提交的资源所在的真实路径进行比较,如果一致就说明该文件没有GUID冲突,否则就说明该文件就存在GUID冲突。
第二种方法假设GUID是3f00c7a036e1d4b47a173fc87e4ce828,在Unity工程目录下的/Library/metadata/里找到文件名为3f00c7a036e1d4b47a173fc87e4ce828的文件,也就是/Library/metadata/3f/3f00c7a036e1d4b47a173fc87e4ce828,如下图13所示。在该文件里文本匹配该GUID对应的文件所在的目录是否存在,如果不存在就说明该GUID已经被其他文件使用了,也就是有GUID冲突。
从而本申请在提交资源时,提供了一个通过工具来进行自动化资源检查的方案,让资源检查的工作更加的工具化流程化,避免人力的浪费及可能出现的疏漏,让资源更加规范化,让开发者效率更高,为工程的稳定性提供保障。
本实施例还提供了一种资源分析装置,请参阅图14,该装置可包括:
预设调用函数确定模块1410,用于当提交待分析资源时,确定与所述待分析资源对应的预设调用函数;所述预设调用函数包括所述待分析资源所在的第一存储路径和资源分析工具所在的第二存储路径;
资源分析工具调用模块1420,用于基于所述预设调用函数调用所述第二存储路径下的所述资源分析工具,以及基于所述预设调用函数将所述第一存储路径传递给所述资源分析工具;
静态分析模块1430,用于基于所述资源分析工具对所述第一存储路径下的所述待分析资源的静态特征进行分析,得到对所述待分析资源的静态分析结果。
进一步地,所述装置还包括:
第一确定模块,用于确定待分析资源所在的所述第一存储路径,以及所述资源分析工具所在的所述第二存储路径;
注册模块,用于基于所述第一存储路径以及所述第二存储路径,在资源管理平台注册与所述待分析资源对应的所述预设调用函数。
进一步地,所述注册模块包括:
模板获取模块,用于获取与所述待分析资源对应的预设调用函数创建模板;
信息配置模块,用于基于所述第一存储路径和所述第二存储路径,对所述预设调用函数创建模板进行配置,得到已配置调用函数信息;
生成模块,用于基于所述已配置调用函数信息,生成与所述待分析资源对应的预设调用函数。
进一步地,所述静态特征包括所述待分析资源中资源文件的更新量;所述资源文件的更新量用于表征所述资源文件的字节数与引用所述资源文件的关联文件的字节数之和;
所述静态分析模块1430包括:
更新量获取模块,用于基于所述资源分析工具获取所述待分析资源中每个资源文件的目标更新量;所述目标更新量基于所述每个资源文件的字节数,以及各资源文件之间的引用关系得到;
更新量分析模块,用于对所述每个资源文件的目标更新量进行分析,得到对所述待分析资源的更新量分析结果;
第二确定模块,用于基于所述更新量分析结果,确定所述静态分析结果。
进一步地,所述静态特征包括全局唯一标识符;
所述静态分析模块1430包括:
第三确定模块,用于基于所述资源分析工具确定所述待分析资源中各资源文件对应的已有全局唯一标识符;
路径解析模块,用于对所述已有全局唯一标识符进行路径解析,得到所述各资源文件对应的解析路径;
一致性比对模块,用于将所述各资源文件对应的解析路径,与所述各资源文件所在的目标路径进行一致性比对,得到对所述待分析资源的全局唯一标识符分析结果;
第四确定模块,用于基于所述全局唯一标识符分析结果,确定所述静态分析结果。
进一步地,所述装置还包括:
资源修复模块,用于当所述静态分析结果指示所述待分析资源不符合提交目标时,基于所述资源分析工具对所述待分析资源进行自动修复,得到已修复资源。
进一步地,所述静态特征包括资源脚本的编码格式;
所述资源修复模块包括:
格式转换模块,用于当所述资源脚本的编码格式不为目标格式时,基于所述资源分析工具将所述资源脚本的编码格式转换为所述目标格式;
已修复资源确定模块,用于基于所述目标格式的资源脚本,得到所述已修复资源。
进一步地,所述装置还包括:
动态分析模块,用于当所述静态分析结果指示所述待分析资源符合提交目标时,向后置分析端提交所述待分析资源;
所述后置分析端用于对所述待分析资源的动态特征进行分析,得到所述待分析资源的动态分析结果;所述动态特征用于表征所述待分析资源在编译或者运行过程中所表现的特征。
上述实施例中提供的装置可执行本申请任意实施例所提供方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的方法。
本实施例还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行如本实施例上述任一方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中的任一方法。
进一步地,图15示出了一种用于实现本申请实施例所提供的方法的设备的硬件结构示意图,所述设备可以参与构成或包含本申请实施例所提供的装置。如图15所示,设备10可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图15所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,设备10还可包括比图15中所示更多或者更少的组件,或者具有与图15所示不同的配置。
应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到设备10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器104可用于存储应用软件的软件程序以及模块,如本申请实施例中所述的方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的一种播放器预加载方法或一种播放器运行方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至设备10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括设备10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与设备10(或移动设备)的用户界面进行交互。
本实施例上述的任一方法均可基于图15所示的设备进行实施。
本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤和顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的***或中断产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
本实施例中所示出的结构,仅仅是与本申请方案相关的部分结构,并不构成对本申请方案所应用于其上的设备的限定,具体的设备可以包括比示出的更多或更少的部件,或者组合某些部件,或者具有不同的部件的布置。应当理解到,本实施例中所揭露的方法、装置等,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分仅仅为一种逻辑功能的划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元模块的间接耦合或通信连接。
基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员还可以进一步意识到,结合本说明书所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但这种实现不应认为超出本申请的范围。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (11)

1.一种资源分析方法,其特征在于,包括:
当提交待分析资源时,确定与所述待分析资源对应的预设调用函数;所述预设调用函数包括所述待分析资源所在的第一存储路径和资源分析工具所在的第二存储路径;
基于所述预设调用函数调用所述第二存储路径下的所述资源分析工具,以及基于所述预设调用函数将所述第一存储路径传递给所述资源分析工具;
基于所述资源分析工具对所述第一存储路径下的所述待分析资源的静态特征进行分析,得到对所述待分析资源的静态分析结果。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定待分析资源所在的所述第一存储路径,以及所述资源分析工具所在的所述第二存储路径;
基于所述第一存储路径以及所述第二存储路径,在资源管理平台注册与所述待分析资源对应的所述预设调用函数。
3.根据权利要求2所述的方法,其特征在于,所述在资源管理平台注册与所述待分析资源对应的所述预设调用函数包括:
获取与所述待分析资源对应的预设调用函数创建模板;
基于所述第一存储路径和所述第二存储路径,对所述预设调用函数创建模板进行配置,得到已配置调用函数信息;
基于所述已配置调用函数信息,生成与所述待分析资源对应的预设调用函数。
4.根据权利要求1所述的方法,其特征在于,所述静态特征包括所述待分析资源中资源文件的更新量;所述资源文件的更新量用于表征所述资源文件的字节数与引用所述资源文件的关联文件的字节数之和;
所述基于所述资源分析工具对所述第一存储路径下的所述待分析资源的静态特征进行分析,得到对所述待分析资源的静态分析结果包括:
基于所述资源分析工具获取所述待分析资源中每个资源文件的目标更新量;所述目标更新量基于所述每个资源文件的字节数,以及各资源文件之间的引用关系得到;
对所述每个资源文件的目标更新量进行分析,得到对所述待分析资源的更新量分析结果;
基于所述更新量分析结果,确定所述静态分析结果。
5.根据权利要求1所述的方法,其特征在于,所述静态特征包括全局唯一标识符;
所述基于所述资源分析工具对所述第一存储路径下的所述待分析资源的静态特征进行分析,得到对所述待分析资源的静态分析结果包括:
基于所述资源分析工具确定所述待分析资源中各资源文件对应的已有全局唯一标识符;
对所述已有全局唯一标识符进行路径解析,得到所述各资源文件对应的解析路径;
将所述各资源文件对应的解析路径,与所述各资源文件所在的目标路径进行一致性比对,得到对所述待分析资源的全局唯一标识符分析结果;
基于所述全局唯一标识符分析结果,确定所述静态分析结果。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述静态分析结果指示所述待分析资源不符合提交目标时,基于所述资源分析工具对所述待分析资源进行自动修复,得到已修复资源。
7.根据权利要求6所述的方法,其特征在于,所述静态特征包括资源脚本的编码格式;
所述当所述静态分析结果指示所述待分析资源不符合提交目标时,基于所述资源分析工具对所述待分析资源进行自动修复,得到已修复资源包括:
当所述资源脚本的编码格式不为目标格式时,基于所述资源分析工具将所述资源脚本的编码格式转换为所述目标格式;
基于所述目标格式的资源脚本,得到所述已修复资源。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述静态分析结果指示所述待分析资源符合提交目标时,向后置分析端提交所述待分析资源;
所述后置分析端用于对所述待分析资源的动态特征进行分析,得到所述待分析资源的动态分析结果;所述动态特征用于表征所述待分析资源在编译或者运行过程中所表现的特征。
9.一种资源分析装置,其特征在于,包括:
预设调用函数确定模块,用于当提交待分析资源时,确定与所述待分析资源对应的预设调用函数;所述预设调用函数包括所述待分析资源所在的第一存储路径和资源分析工具所在的第二存储路径;
资源分析工具调用模块,用于基于所述预设调用函数调用所述第二存储路径下的所述资源分析工具,以及基于所述预设调用函数将所述第一存储路径传递给所述资源分析工具;
静态分析模块,用于基于所述资源分析工具对所述第一存储路径下的所述待分析资源的静态特征进行分析,得到对所述待分析资源的静态分析结果。
10.一种电子设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如权利要求1至8任一项所述的资源分析方法。
11.一种计算机存储介质,其特征在于,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行如权利要求1至8任一项所述的资源分析方法。
CN202111304338.2A 2021-11-05 2021-11-05 资源分析方法、装置、电子设备及存储介质 Pending CN114064467A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111304338.2A CN114064467A (zh) 2021-11-05 2021-11-05 资源分析方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111304338.2A CN114064467A (zh) 2021-11-05 2021-11-05 资源分析方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN114064467A true CN114064467A (zh) 2022-02-18

Family

ID=80274329

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111304338.2A Pending CN114064467A (zh) 2021-11-05 2021-11-05 资源分析方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN114064467A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114666102A (zh) * 2022-03-03 2022-06-24 华云数据控股集团有限公司 一种资源许可方法及***

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114666102A (zh) * 2022-03-03 2022-06-24 华云数据控股集团有限公司 一种资源许可方法及***
CN114666102B (zh) * 2022-03-03 2024-02-06 华云数据控股集团有限公司 一种资源许可方法及***

Similar Documents

Publication Publication Date Title
CN108595342B (zh) 单元测试方法和装置
US9411575B2 (en) Systems and methods for quality assurance automation
CN108446223B (zh) 一种基于动态编译的业务场景自动化测试方法
US11651272B2 (en) Machine-learning-facilitated conversion of database systems
US20170199737A1 (en) Efficient detection of architecture related bugs during the porting process
CN112241360A (zh) 一种测试用例生成方法、装置、设备及存储介质
CN115454869A (zh) 界面自动化测试方法、装置、设备及存储介质
CN105159718A (zh) 固件升级方法及装置
US20210048999A1 (en) Automated generation of status chains for software updates
CN103649924A (zh) 嵌入式装置、程序产生装置和程序
CN114064467A (zh) 资源分析方法、装置、电子设备及存储介质
CN108287720B (zh) 软件编译方法、装置、设备及存储介质
CN112486544B (zh) 一种软件升级方法及装置
CN110007946B (zh) 一种算法模型的更新方法、装置、设备及介质
CN113254326A (zh) 利用Jenkins发布固态硬盘固件代码的方法和***
CN115981718A (zh) 一种代码发布方法、装置、计算机设备和存储介质
CN110580216B (zh) 一种应用提测的方法和装置
US20190317877A1 (en) Application state monitoring
CN113918162A (zh) 一种基于集中式管理模式下的前端代码自动化校验方法
CN115168175A (zh) 程序错误解决方法、装置、电子设备和存储介质
CN111506339A (zh) 软件开发工具包sdk的变更信息处理方法及装置
CN111897794A (zh) 数据库的维护方法、装置、电子设备和存储介质
CN111142965A (zh) 语言配置方法、装置、电子设备及存储介质
CN111629200A (zh) 一种快速检测差分包可靠性的方法、装置及可读存储介质
CN110022244B (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