CN116795355A - 代码修改方法、装置、设备和可读存储介质 - Google Patents
代码修改方法、装置、设备和可读存储介质 Download PDFInfo
- Publication number
- CN116795355A CN116795355A CN202310814556.3A CN202310814556A CN116795355A CN 116795355 A CN116795355 A CN 116795355A CN 202310814556 A CN202310814556 A CN 202310814556A CN 116795355 A CN116795355 A CN 116795355A
- Authority
- CN
- China
- Prior art keywords
- class
- component
- names
- code
- file
- 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
- 238000002715 modification method Methods 0.000 title abstract description 15
- 238000000034 method Methods 0.000 claims abstract description 36
- 238000012986 modification Methods 0.000 claims abstract description 24
- 230000004048 modification Effects 0.000 claims abstract description 24
- 230000008676 import Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 6
- 238000001914 filtration Methods 0.000 claims description 4
- 238000011161 development Methods 0.000 description 18
- 230000006870 function Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 6
- 238000012795 verification Methods 0.000 description 6
- 238000013515 script Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 239000010751 BS 2869 Class A2 Substances 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种代码修改方法、装置、设备和可读存储介质,其中,方法包括遍历工程项目中的组件,建立组件名和类名的对应关系,其中,组件包括类,组件名和类名的对应关系用于表征每个类所属的组件;在第一类的头文件引用代码中,获取第一类引用的第二类;基于组件名和类名的对应关系,若确定第一类与第二类不属于同一个组件,且第一类的头文件引用代码中未指定第二类归属的组件,修改头文件引用代码,以在头文件引用代码中指定第二类归属的组件。可以提高修改效率。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种代码修改方法、装置、设备和可读存储介质。
背景技术
为了提高编译效率,很多工程项目引入了二进制开发。同时,鉴于swift语言的开发方便性和代码维护性,在二进制开发中,越来越多的使用了swift语言进行开发。在二进制开发过程中使用swift语言进行开发,要求工程项目中的各个类在进行头文件引用时,需要指定头文件名和头文件所在组件的组件名。但在一些工程项目中,在进行头文件引用时,只指定了头文件名,未指定组件名,这在编译过程中会报错。因此,有必要对工程项目中的这些头文件引用不规范的代码进行检查和修改。
目前,在对这些工程项目中的头文件引用代码进行修改时,是使用Xcode 10(或Xcode 10以上版本)新建工程项目的.project文件,然后在.project文件中把配置信息一一配置后,设置USER_HEADER_SEARCH_PATHS参数,再通过Xcode 10(或Xcode 10以上版本)对工程项目进行编译,找出因头文件引用代码不符合规范引发的编译错误,以逐一修改。这种修改方式效率较低。
发明内容
有鉴于此,本发明实施方式提供了一种代码修改方法、代码修改装置、电子设备和计算机可读存储介质,可以提高修改效率。
本发明一方面提供了一种代码修改方法,所述方法包括:
遍历工程项目中的组件,建立组件名和类名的对应关系,其中,所述组件包括类,所述组件名和类名的对应关系用于表征每个类所属的组件;
在第一类的头文件引用代码中,获取所述第一类引用的第二类;
基于所述组件名和类名的对应关系,若确定所述第一类与所述第二类不属于同一个组件,且所述第一类的所述头文件引用代码中未指定所述第二类归属的组件,修改所述头文件引用代码,以在所述头文件引用代码中指定所述第二类归属的组件。
在一些实施例中,所述遍历工程项目中的组件,建立组件名和类名的对应关系,包括:
对于所述工程项目中的任一目标组件,在所述目标组件包括的文件中,查找后缀名为.h或.swift的目标文件,其中,目标文件用于表征所述目标组件包括的类;
建立所述目标组件的组件名与所述目标文件的文件名之间的对应关系,作为所述目标组件的组件名和类名的对应关系。
在一些实施例中,所述工程项目由管理工具进行管理,所述管理工具包括podfile文件,所述podfile文件用于记录所述工程项目包括的组件;
在遍历工程项目中的组件之前,所述方法还包括:
在所述podfile文件中查找组件的组件名;
在所述工程项目中,将与查找到的组件名同名的文件作为待遍历的组件。
在一些实施例中,所述podfile文件包括各个组件的指向,所述指向用于表征所述组件的来源渠道;
所述在所述podfile文件中查找组件的组件名,包括:
在所述podfile文件中,查找指向所述源码地址的组件,并将相应组件的组件名作为查找到的组件名。
在一些实施例中,所述在第一类的头文件引用代码中,获取所述第一类引用的第二类,包括:
在所述头文件引用代码中过滤预设字符;
在过滤完成的所述头文件引用代码中获取所述第一类引用的所述第二类。
在一些实施例中,在所述第一类的所述头文件引用代码中获取所述第一类引用的所述第二类之前,所述方法还包括:
在所述第一类的代码中,将以#import或@import开头的代码作为所述第一类的所述头文件引用代码。
在一些实施例中,在所述第一类与所述第二类属于同一个组件的情况下,所述方法还包括:
若所述第一类的所述头文件引用代码中未指定所述第二类归属的组件,跳过所述头文件引用代码的修改。
本发明另一方面还提供了一种代码修改装置,所述装置包括:
遍历模块,用于遍历工程项目中的组件,建立组件名和类名的对应关系,其中,所述组件包括类,所述组件名和类名的对应关系用于表征每个类所属的组件;
类获取模块,用于在第一类的头文件引用代码中,获取所述第一类引用的第二类;
修改模块,用于基于所述组件名和类名的对应关系,若确定所述第一类与所述第二类不属于同一个组件,且所述第一类的所述头文件引用代码中未指定所述第二类归属的组件,修改所述头文件引用代码,以在所述头文件引用代码中指定所述第二类归属的组件。
本发明另一方面还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序被处理器进行时,实现如上所述的方法。
本发明另一方面还提供了一种电子设备,所述电子设备包括处理器和存储器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器进行时,实现如上所述的方法。
在本申请一些实施例的技术方案中,通过遍历工程项目中的组件,建立组件名和类名的对应关系,再基于组件名和类名的对应关系,对第一类的头文件引用代码进行检查修改。如此,可以无需重新创建工程项目的.project文件,达到提高修改效率的目的。
附图说明
通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
图1示出了管理工具对工程项目进行管理时的目录结构示意图;
图2示出了本申请的一个实施例提供的代码修改方法的流程示意图;
图3示出了本申请的一个实施例提供的代码修改装置的模块示意图;
图4示出了本申请的一个实施例提供的电子设备的示意图。
具体实施方式
为使本发明实施方式的目的、技术方案和优点更加清楚,下面将结合本发明实施方式中的附图,对本发明实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。
在对本申请的方案进行阐述前,先对本申请涉及的相关概念进行说明。
工程项目,用于执行一个或多个功能的代码集合。每个功能对应的代码模块可以称为一个组件。比如,在一个可以完成登录验证、消息发送的工程项目中,实现登录验证的代码模块和实现短发发送的代码模块可以分别称为一个组件。每个组件可以具有对应的组件名,不同组件的组件名不同。
每个组件对应的代码模块又可以划分为一个或多个子代码模块。每个子代码模块可以称为一个类。每个类用于实现一个子功能。比如,在实现登录验证的组件中,进一步可以划分出实现密码验证的子代码模块和实现消息验证的子代码模块,每个子代码模块可以称为一个类。
不同的组件之间可以相互进行功能调用。比如,进行消息发送的组件可以调用登录验证的组件,以在消息发送过程中对用户身份进行验证。具体的,每个组件中的类可以包括头文件。头文件可以是后缀名为.h或.swift的文件,用于保存所对应类的声明。头文件的名称为所对应类的类名。每个组件中的类通过调用其它组件中的类的头文件,可以实现对其它组件中的相应类的功能调用。比如,组件A中的类1调用组件B中的类2的头文件时,可以实现对组件B的类2的功能调用。每个组件用于调用其它组件头文件的代码,可以称为头文件引用代码。
物理层隔离,就是不同组件的代码位于不同文件夹中。
编译,就是将源代码转换为目标语言代码的过程,比如将C语言代码转换为汇编语言代码。编译过程中,会先得到中间代码,将中间代码进行串联后,可以得到最终的.ipa安装包。该中间代码可以是二进制代码。
组件的中间代码一般可以打包成.a文件或.framework文件。.a文件和.framework文件可以是一种特殊形式的文件夹,其文件名为组件名。在将中间代码打包成.a文件时,组件的头文件位于.a文件外,即实际得到的打包产物包括头文件和.a文件;在将中间代码打包成.framework文件时,组件的头文件位于.framework文件内,即实际得到的打包产物只有一个.framework文件,.framework文件包括头文件。通常,对于以swift语言开发的组件,其中间代码一般只能打包成.framework文件。
二进制开发,就是基于中间代码进行的开发,这种开发方式可以大大提高编译效率。比如,在迭代开发中,在V1版本的基础上新增了两个功能,该两个新增功能对应的代码可以是源代码(比如用C语言编写的代码),其它代码就可以使用V1版本编译得到的中间代码。如此,在编译过程中,新增功能代码之外的其它代码可以无需再从源代码编译为中间代码,从而达到了提高编译效率的目的。
综上所述,由于对以swift语言开发的源代码进行编译时,组件的中间代码只能打包成.framework文件。这种情况下,组件的头文件位于.framework文件内。因此,若要在二进制开发中使用swift语言开发,且在不同组件之间进行头文件引用时,其头文件的引用格式通常应该是“#import<组件名/类名.h>”,或“@import<组件名/类名.h>”。由于类名与类的头文件名相同,故<组件名/类名.h>即<组件名/头文件名.h>。这样,在代码的编译过程中,便可基于各个组件的头文件引用代码,准确找到组件待引用的头文件。比如,假设在组件A引用组件B的类1的头文件,且组件B的组件名为M1(即组件B对应的.framework文件的文件名为M1),类1的类名为F1(即类1对应的头文件名为F1)。那么,组件A的头文件引用代码应该写成“#import<M1/F1.h>”。如此,基于头文件引用代码中的M1,可以找到名称为M1的.framework文件,然后在.framework文件中找到名称为F1的类。
另外,在基于一些管理工具对工程项目进行管理时,也要求组件的头文件引用代码必须按照“#import<组件名/类名.h>”的格式进行头文件引用。比如,在基于管理工具cocoapods对工程项目进行管理时,对应的目录结构可以如图1所示。其中,主工程可以用于存放工程最上层的代码,比如初始化代码、功能配置代码、调用业务组件代码等。Pods里面可以存放每个组件的代码。在这种目录结构下,如果组件A依赖组件B的能力,那么在组件A中的某一类需要引入组件B的头文件时,头文件引用代码的正规写法通常是#import<组件B/X.h>,其中,X表示组件B中某一类的类名(即头文件名)。
但是,在一些工程项目中,存在头文件引用代码不规范的问题。比如,在一些技术中,虽然原代码做到了物理层隔离(即不同组件的代码位于不同的文件夹里),但对原代码进行编译后得到的中间代码依然位于同一个容器中(即中间代码并未做到物理层隔离)。这样,在不同组件之间进行功能引用时,按照“#import<类名.h>”的格式进行头文件引用,也不会出现编译报错的问题。但这种头文件引用的方式,在二进制开发中使用swift语言开发的场景下,就会出现编译报错的问题。因此,有必要对工程项目中的头文件引用代码进行检查并修改,使之符合规范。以下对一些技术中的检查修改方案进行说明。
检查修改方案1:考虑到使用Xcode 10(或Xcode 10以上版本)新建工程项目的.project文件时,可以设置USER_HEADER_SEARCH_PATHS参数,由Xcode 10在编译时自动进行头文件引用代码的检查和修改。因此,在对这些工程项目中的头文件引用代码进行检查和修改时,通常是使用Xcode 10(或Xcode 10以上版本)重新创建工程项目的.project文件,然后在.project文件中进行信息配置后,设置USER_HEADER_SEARCH_PATHS参数,再通过Xcode 10(或Xcode 10以上版本)对工程项目进行编译,找出因头文件引用代码不符合规范引发的编译错误,以逐一修改。
检查修改方案2:与上述检查修改方案1基本类似,主要区别在于在处理组件二进制时,不采用全局配置,让每个组件在独有的开发环境下生成中间代码,然后以二进制方式引入到主工程,也称为【搭积木】模式组装工程。
上述两个修改方案均需要重新创建.project文件,效率较低,且第二个修改方案还需要对每个组件进行独立编译、开发、生成二进制,最后集成到主工程,效率会进一步降低。同时,上述两个修改方案还容易导致以下两个问题:
1)重新创建工程项目的.project文件,也必然会重新进行相关的信息配置。对于一些历史工程项目来说,很多涉及到SDK、功能权限等的基础配置,可能会因文档不全,无法确保新创建的.project文件跟原工程项目中的.project文件保持一致,这很容易引发线上严重问题。
2)在改造过程中,肯定有很多功能在并行开发,如果对工程的代码层级架构进行改造,势必会造成改造后的代码无法跟现有代码进行合并。
鉴于此,本申请提供一种代码修改方法,可以提高修改效率。代码修改方法可应用于电子设备,电子设备包括但不限于平板电脑、笔记本电脑等。电子设备中可以安装用于编译工程项目的应用软件。工程项目可以是基于管理工具cocoapods进行管理的。管理工具cocoapods将不同组件的代码放置于不同的文件夹内。在应用软件对工程项目进行编译之前,可以首先按照代码修改方法对代码进行检查修改,以降低编译报错的概率。
请参阅图2,为本申请的一个实施例提供的代码修改方法的流程示意图。图2中,代码修改方法可以包括如下步骤:
步骤S21,遍历工程项目中的组件,建立组件名和类名的对应关系,其中,组件包括类,组件名和类名的对应关系用于表征每个类所属的组件。
具体的,组件名和类名的对应关系,可以使用key:value的形式进行存储。其中,key表示类名,value表示类所属的组件名。举例来说,假设工程项目包括组件A和组件B,组件A包括类A1、类A2,组件B包括类B1、类B2和类B3,那么组件名和类名的对应关系可以如下所示:
A1:A;A2:A;B1:B;B2:B;B3:B
可以理解的是,对于任一类来所,由于该类的类名与该类的头文件名相同,因此,建立了组件名和类名的对应关系,就相当于建立了组件名和头文件名的对应关系。
在建立组件名和类名的对应关系后,可以对工程项目中的类进行遍历,针对每个类分别执行步骤S22~步骤S23。
步骤S22,在第一类的头文件引用代码中,获取第一类引用的第二类。
具体的,第一类和第二类可以是属于同一个组件的两个不同类,也可以是属于不同组件的两个类。
在第一类和第二类属于同一个组件的情况下,由于这两个类位于同一个文件夹内,因此,在第一类引用第二类时,可以在头文件引用代码中只指定第二类的类名,无需指定组件名,即可以按照<类名.h>这个格式进行头文件引用。
在第一类和第二类属于不同组件的情况下,由于这两个类位于不同的文件夹内,因此,在第一类引用第二类时,需要在头文件引用代码中同时指定第二类所属的组件名和第二类的类名,才能查找到所需引用的头文件。即需要按照<组件名/类名.h>这个格式进行头文件引用。
步骤S23,基于组件名和类名的对应关系,若确定第一类与第二类不属于同一个组件,且第一类的头文件引用代码中未指定第二类归属的组件,修改头文件引用代码,以在头文件引用代码中指定第二类归属的组件。
具体的,在步骤S21建立的组件名和类名的对应关系中,若第一类和第二类对应的value相同,可以确定第一类与第二类属于同一个组件;若第一类和第二类对应的value不相同,可以确定第一类与第二类属于不同的组件。
基于步骤S22的相关描述可以得知,在第一类和第二类不属于同一个组件的情况下,第一类的头文件引用代码需要按照<组件名/类名.h>这个格式引用第二类的头文件。若第一类的头文件引用代码中未指定第二类归属的组件,可以确定该头文件引用代码错误,进而可以基于组件名和类名的对应关系,查找第二类归属的组件,以对第一类的头文件引用代码进行修改(即在头文件引用代码中指定第二类归属的组件)。如此,以避免后续的编译错误。
综上所述,在本申请一些实施例的技术方案中,通过遍历工程项目中的组件,建立组件名和类名的对应关系,再基于组件名和类名的对应关系,对第一类的头文件引用代码进行检查修改。如此,可以无需重新创建工程项目的.project文件,达到提高修改效率的目的。由于可以无需再创建.project文件,也避免了重新创建的.project文件跟原工程项目中的.project文件无法保持一致的问题,降低了引发线上问题的概率。同时,也可以无需存在两套代码(即改造后的代码和现有代码),避免了改造后的代码无法跟现有代码进行合并的问题。
在一些实施例中,在使用管理工具cocoapods对工程项目进行管理的情况下,管理工具cocoapods可以包括podfile文件,podfile文件用于记录工程项目包括的组件。基于podfile文件的特性,可以在遍历工程项目中的组件之前,在podfile文件中查找组件的组件名,然后在工程项目中,将与查找到的组件名同名的文件作为待遍历的组件。如此,可以遍历组件的过程中,快速查找出工程项目包括的组件,效率较高。
进一步的,对于迭代开发的工程项目来说,工程项目可以包括当前版本开发的组件(比如使用C语言开发的代码),以及历史版本开发的组件。其中,在二进制开发中,历史版本开发的组件可以是中间代码,当前版本开发的组件可以是基于swift语言开发的代码。由于历史版本开发的组件直接使用中间代码,故在编译时,针对这部分组件可以无需再执行从源代码到中间代码的编译过程,达到提高编译效率的目的。
为了区分当前版本和历史版本的组件,管理工具cocoapods的podfile文件可以包括各个组件的指向。指向可以用于表征组件的来源渠道。具体的,当前版本开发的组件可以指向源代码地址,历史版本开发的组件指向版本号。在组件指向版本号的情况下,表征组件是在相应版本被开发的。其中,对于历史版本的组件来说,可以认为这些组件中的头文件引用代码已经在历史版本中进行过检查和修改,即默认历史版本中的头文件引用代码为正确的代码。在头文件引用代码的检查和修改时,可以只检查和修改当前版本的组件,忽略历史版本的组件。鉴于此,在遍历工程项目中的组件,建立组件名和类名的对应关系时,也可以只遍历当前版本的组件,建立当前版本的组件名与类名的对应关系。
综上所述,在一些实施例中,在遍历工程项目中的组件之前,可以在podfile文件中,查找指向源码地址的组件,并将相应组件的组件名作为查找到的组件名,以便于在工程项目中,将与查找到的组件名同名的文件作为待遍历的组件,从而建立组件名与类名的对应关系。如此,可以减少数据处理量,提高效率。
在一些实施例中,考虑到每个类的头文件与类同名,且头文件是后缀名为.h或.swift的文件,故建立组件名和类名的对应关系,可以转换为建立组件名和头文件名的对应关系。具体的,上述遍历工程项目中的组件,建立组件名和类名的对应关系,可以包括:
对于工程项目中的任一目标组件,在目标组件包括的文件中,查找后缀名为.h或.swift的目标文件,其中,目标文件用于表征目标组件包括的类;
建立目标组件的组件名与目标文件的文件名之间的对应关系,作为目标组件的组件名和类名的对应关系。
通过查找后缀名为.h或.swift的目标文件来表征目标组件包括的类,在代码实现上具有较好的可实施性。
在一些实施例中,可以在第一类的代码中,将以#import或@import开头的代码作为第一类的头文件引用代码。上述在第一类的头文件引用代码中,获取第一类引用的第二类,可以包括:
在头文件引用代码中过滤预设字符;
在过滤完成的头文件引用代码中获取第一类引用的第二类。
其中,预设字符可以包括但不限于空格、双引号、尖括号等字符。在完成字符过滤后,可以将后缀名为.h或.swift的文件名作为第一类引用的第二类的类名。
到此,完成代码修改方法的相关阐述。
本申请的代码修改方法可以通过运行脚本的方式来实现。其中,脚本可以包括程序代码。通过运行脚本中的程序代码,可以实现代码修改方法。具体的,在编译工程项目的应用软件中,可以包括路径配置参数。在路径配置参数中可以配置脚本的存储位置。应用软件在编译工程项目时,可以首先运行脚本中的程序代码,对工程项目中的头文件引用代码进行检查和修改后,再执行编译操作。如此,可以降低编译报错的概率。
请参阅图3,为本申请的一个实施例提供的代码修改装置的模块示意图。图3中,代码修改装置包括:
遍历模块,用于遍历工程项目中的组件,建立组件名和类名的对应关系,其中,组件包括类,组件名和类名的对应关系用于表征每个类所属的组件;
类获取模块,用于在第一类的头文件引用代码中,获取第一类引用的第二类;
修改模块,用于基于组件名和类名的对应关系,若确定第一类与第二类不属于同一个组件,且第一类的头文件引用代码中未指定第二类归属的组件,修改头文件引用代码,以在头文件引用代码中指定第二类归属的组件。
请参阅图4,为本申请的一个实施例提供的电子设备的示意图。电子设备包括处理器和存储器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器执行时,实现上述的方法。
其中,处理器可以为中央处理器(Central Processing Unit,CPU)。处理器还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施方式中的方法对应的程序指令/模块。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施方式中的方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本申请一个实施方式还提供一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序被处理器执行时,实现上述的方法。
虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (10)
1.一种代码修改方法,其特征在于,所述方法包括:
遍历工程项目中的组件,建立组件名和类名的对应关系,其中,所述组件包括类,所述组件名和类名的对应关系用于表征每个类所属的组件;
在第一类的头文件引用代码中,获取所述第一类引用的第二类;
基于所述组件名和类名的对应关系,若确定所述第一类与所述第二类不属于同一个组件,且所述第一类的所述头文件引用代码中未指定所述第二类归属的组件,修改所述头文件引用代码,以在所述头文件引用代码中指定所述第二类归属的组件。
2.如权利要求1所述的方法,其特征在于,所述遍历工程项目中的组件,建立组件名和类名的对应关系,包括:
对于所述工程项目中的任一目标组件,在所述目标组件包括的文件中,查找后缀名为.h或.swift的目标文件,其中,目标文件用于表征所述目标组件包括的类;
建立所述目标组件的组件名与所述目标文件的文件名之间的对应关系,作为所述目标组件的组件名和类名的对应关系。
3.如权利要求1所述的方法,其特征在于,所述工程项目由管理工具进行管理,所述管理工具包括podfile文件,所述podfile文件用于记录所述工程项目包括的组件;
在遍历工程项目中的组件之前,所述方法还包括:
在所述podfile文件中查找组件的组件名;
在所述工程项目中,将与查找到的组件名同名的文件作为待遍历的组件。
4.如权利要求3所述的方法,其特征在于,所述podfile文件包括各个组件的指向,所述指向用于表征所述组件的来源渠道;
所述在所述podfile文件中查找组件的组件名,包括:
在所述podfile文件中,查找指向源码地址的组件,并将相应组件的组件名作为查找到的组件名。
5.如权利要求1所述的方法,其特征在于,所述在第一类的头文件引用代码中,获取所述第一类引用的第二类,包括:
在所述头文件引用代码中过滤预设字符;
在过滤完成的所述头文件引用代码中获取所述第一类引用的所述第二类。
6.如权利要求5所述的方法,其特征在于,在所述第一类的所述头文件引用代码中获取所述第一类引用的所述第二类之前,所述方法还包括:
在所述第一类的代码中,将以#import或@import开头的代码作为所述第一类的所述头文件引用代码。
7.如权利要求1所述的方法,其特征在于,在所述第一类与所述第二类属于同一个组件的情况下,所述方法还包括:
若所述第一类的所述头文件引用代码中未指定所述第二类归属的组件,跳过所述头文件引用代码的修改。
8.一种代码修改装置,其特征在于,所述装置包括:
遍历模块,用于遍历工程项目中的组件,建立组件名和类名的对应关系,其中,所述组件包括类,所述组件名和类名的对应关系用于表征每个类所属的组件;
类获取模块,用于在第一类的头文件引用代码中,获取所述第一类引用的第二类;
修改模块,用于基于所述组件名和类名的对应关系,若确定所述第一类与所述第二类不属于同一个组件,且所述第一类的所述头文件引用代码中未指定所述第二类归属的组件,修改所述头文件引用代码,以在所述头文件引用代码中指定所述第二类归属的组件。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,所述计算机程序被处理器进行时,实现如权利要求1至7中任一所述的方法。
10.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,所述存储器用于存储计算机程序,所述计算机程序被所述处理器进行时,实现如权利要求1至7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310814556.3A CN116795355A (zh) | 2023-07-04 | 2023-07-04 | 代码修改方法、装置、设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310814556.3A CN116795355A (zh) | 2023-07-04 | 2023-07-04 | 代码修改方法、装置、设备和可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116795355A true CN116795355A (zh) | 2023-09-22 |
Family
ID=88044829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310814556.3A Pending CN116795355A (zh) | 2023-07-04 | 2023-07-04 | 代码修改方法、装置、设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116795355A (zh) |
-
2023
- 2023-07-04 CN CN202310814556.3A patent/CN116795355A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108459962B (zh) | 代码规范性检测方法、装置、终端设备及存储介质 | |
CN108845940B (zh) | 一种企业级信息系统自动化功能测试方法和系统 | |
CN109445837B (zh) | 一种应用程序的发布方法及设备 | |
CN111061678B (zh) | 业务数据处理方法、装置、计算机设备和存储介质 | |
US10445214B2 (en) | System and method for tracking callback functions for error identification | |
WO2020232883A1 (zh) | 脚本缺陷扫描方法、装置、计算机设备和存储介质 | |
CN110543427B (zh) | 测试用例存储方法、装置、电子设备及存储介质 | |
CN113704790A (zh) | 一种异常日志信息汇总方法及计算机设备 | |
CN110750310B (zh) | 基于ios系统组件化开发的二进制和源码切换方法 | |
CN105468511A (zh) | 网页脚本错误定位方法及装置 | |
US10459698B2 (en) | Framework for generating adapters in an integrated development environment | |
CN114398293A (zh) | 接口测试用例生成方法、电子设备和存储介质 | |
CN107222363B (zh) | 一种存储协议一致性测试方法及系统 | |
CN116257438A (zh) | 接口测试用例的更新方法及相关设备 | |
CN112749043B (zh) | 一种数据库灾备的方法、系统、设备及介质 | |
CN108595656B (zh) | 一种数据的处理方法及系统 | |
CN114328250A (zh) | 软件系统自动自检方法、介质和装置 | |
CN111857752B (zh) | 一种PostgreSQL数据库安装方法、装置及设备 | |
CN111078213A (zh) | 一种代码生成方法及代码生成装置 | |
US10606569B2 (en) | Declarative configuration elements | |
CN116627669A (zh) | 一种异业合作适配api方法、装置、设备和介质 | |
CN116880825A (zh) | 代码生成方法、装置、电子设备和存储介质 | |
CN116795355A (zh) | 代码修改方法、装置、设备和可读存储介质 | |
CN113721918A (zh) | 一种基于koji进行编译和软件源制作的方法和装置 | |
US20180270114A1 (en) | Multi Platform Static Semantic Consistency Checking of Network Configurations |
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 |