一种从项目中提取代码的方法及系统与流程

文档序号:11133643阅读:1397来源:国知局
一种从项目中提取代码的方法及系统与制造工艺



背景技术:

Objective-C是一种编程语言,主要用于苹果公司的移动端操作系统iOS和桌面操作系统Mac OS的程序开发。当基于Objective-C的iOS和Mac OS项目发展到一定规模,为了便于后续维护以及在其他项目中重复使用,需要提取其中的各业务模块的相关代码以构建新的组件。目前在Objective-C项目中提取相关代码的方法主要是开发人员根据自己的经验先分析目标模块可能包含的代码文件,然后手动将相关代码文件从原项目中一个个找出来,再组装成新的项目工程。如果目标模块包含的代码文件数量较多,则提取相关代码需要花费较长的时间和较高的人工成本。



技术实现要素:

针对现有技术中存在的缺陷,本发明的主要目的在于提供一种从项目中提取代码的方法,本发明的另一目的在于提供一种从项目中提取代码的系统,能够帮助开发者快速提取代码,节省时间和人工成本,提高项目开发效率。

本发明提供一种从项目中提取代码的方法,用于从Objective-C开发的项目中提取代码,所述项目包括目标源代码文件和工程文件,包括以下步骤:

S1.从所述工程文件中获取项目的所有头文件的文件名及所有头文件的原始存储路径;

S2.获取所述目标源代码文件导入的头文件的文件名,根据所述导入的头文件的文件名,从项目的所有头文件的文件名及其对应的原始存储路径中获取导入的头文件的原始存储路径;

S3.从所述导入的头文件的原始存储路径中提取所述导入的头文件的代码,并将所述代码存入目标存储路径。

在上述技术方案的基础上,步骤S1中,从所述工程文件中获取项目的所有头文件的扩展名为.h。

在上述技术方案的基础上,步骤S2中,所述导入的头文件为通过#import语句导入的头文件。

在上述技术方案的基础上,步骤S2中,所述导入的头文件包括所述目标源代码文件中通过#import语句导入的头文件以及所述导入的头文件中通过#import语句导入的头文件。

在上述技术方案的基础上,步骤S1中,创建路径列表,将项目的所有头文件的文件名及其对应的原始存储路径组成的键值对存入所述路径列表。

在上述技术方案的基础上,创建提取列表和待提取列表,所述提取列表用于存储所述导入的头文件的文件名及其对应的原始存储路径,所述待提取列表用于存储所述目标源代码文件及其导入的头文件的文件名;

步骤S2包括:

S2.1将所述目标源代码文件的文件名存入所述待提取列表;

S2.2从所述待提取列表中读取一个文件名,将该文件名从所述待提取列表中删除;

S2.3解析读取的所述文件名对应的文件,获取对应的文件中所有通过#import语句导入的头文件,将不包含在所述提取列表或者所述待提取列表中的导入的头文件的文件名存入所述待提取列表中;

S2.4判断读取的所述文件名是否在所述提取列表中,若是,进入S2.6;若否,进入S2.5;

S2.5从所述路径列表中获取读取的所述文件名对应的原始存储路径,将读取的所述文件名及其对应的原始存储路径组成的键值对存入所述提取列表中;

S2.6若所述文件名的扩展名为.h,则将其扩展名.h修改为.m,若所述文件名的扩展名为.m,则将其扩展名.m修改为.h;

S2.7判断修改后的所述文件名是否在所述提取列表中,若是,进入S2.8;若否,进入S2.9;

S2.8判断所述待提取列表是否为空,若是,进入S3;若否,进入S2.2;

S2.9将修改后的所述文件名存入所述待提取列表,进入S2.2。

在上述技术方案的基础上,步骤S3中,遍历所述提取列表,从所述导入的头文件的原始存储路径中提取所述导入的头文件的代码,并将所述代码存入目标存储路径。

本发明还提供一种从项目中提取代码的系统,用于从Objective-C开发的项目中提取代码,包括:

工程文件模块,用于从所述工程文件中获取项目的所有头文件的文件名及所有头文件的原始存储路径;

源代码模块,用于获取所述目标源代码文件导入的头文件的文件名,根据所述导入的头文件的文件名,从项目的所有头文件的文件名及其对应的原始存储路径中获取导入的头文件的原始存储路径;

提取模块,用于从所述导入的头文件的原始存储路径中提取所述导入的头文件的代码,并将所述代码存入目标存储路径。

在上述技术方案的基础上,从所述工程文件中获取项目的所有头文件的扩展名为.h。

在上述技术方案的基础上,所述导入的头文件包括所述目标源代码文件中通过#import语句导入的头文件以及所述导入的头文件中通过#import语句导入的头文件。

与现有技术相比,本发明的优点如下:

(1)本发明可以根据指定的目标源代码文件的文件名自动提取该目标源代码文件所导入的头文件的代码,能够帮助开发者快速提取代码,节省时间和人工成本,提高项目开发效率。

(2)本发明采用在目标源代码文件中获取通过#import语句导入的头文件,然后在导入的头文件中获取通过#import语句导入的头文件,由于#import语句确保相同的文件只会被导入一次,不但提高获取导入的头文件的效率,而且不会发生遗漏。

(3)本发明将目标源代码文件导入的头文件的文件名及其对应的原始存储路径存入提取列表,遍历提取列表,提取导入的头文件的代码,并存入目标存储路径,进一步提高提取代码的效率。

附图说明

图1是本发明实施例从项目中提取代码的方法流程图;

图2是步骤S2的具体流程图;

图3是本发明实施例从项目中提取代码的系统示意图。

具体实施方式

术语说明:

组件:提供特定业务逻辑或功能的一组代码。

#import语句:Objective-C中用于导入其他依赖的语句。

.pbxproj文件:iOS或Mac OS项目中保存工程信息的文件。

.h文件:Objective-C源代码文件之一。

.m文件:Objective-C源代码文件之一。

下面结合附图及具体实施例对本发明作进一步的详细描述。

在基于Objective-C的项目中,项目包括目标源代码文件和工程文件,目标源代码文件一般为一个扩展名为“.m”的文件,此文件的开始有一系列#import语句,这些#import语句表示目标源代码文件所依赖的所有代码文件。同时,项目中会有一个扩展名为“.pbxproj”的工程文件来描述项目工程结构以及所有文件的存储路径,例如项目的所有扩展名为.h的头文件及其存储路径,项目的所有头文件包括目标源代码文件通过#import语句导入的头文件,本发明提取代码的方法主要基于这两个文件。

基于上述原理,本发明实施例提供一种从项目中提取代码的方法,用于从Objective-C开发的项目中提取代码,项目包括目标源代码文件和工程文件,参见图1所示,包括以下步骤:

S1.从工程文件中获取项目的所有头文件的文件名及所有头文件的原始存储路径。

从工程文件中获取项目的所有头文件的扩展名为.h。

创建路径列表,将项目的所有头文件的文件名及其对应的原始存储路径组成的键值对存入路径列表。

S2.获取所述目标源代码文件导入的头文件的文件名,根据所述导入的头文件的文件名,从项目的所有头文件的文件名及其对应的原始存储路径中获取导入的头文件的原始存储路径。

导入的头文件为通过#import语句导入的头文件。

具体的,导入的头文件包括目标源代码文件中通过#import语句导入的头文件以及导入的头文件中通过#import语句导入的头文件。

例如,目标源代码文件为InputFileName,首先获取InputFileName通过#import语句导入的所有头文件ImportedInputFileName1,……,ImportedInputFileNamei,……,ImportedInputFileNameN,1≤i≤N,i和N均为正整数。对于任一个导入的头文件ImportedInputFileNamei,获取ImportedInputFileNamei通过#import语句导入的所有头文件FileName1,……,FileNamej,……,FileNameM,1≤j≤M,j和M均为正整数。如果FileName1,……,FileNamej,……,FileNameM中有与ImportedInputFileName1,……,ImportedInputFileNamei,……,ImportedInputFileNameN重复的文件,例如,ImportedInputFileNamei通过#import语句导入的所有头文件FileName1,……,FileNamej,……,FileNameM以及ImportedInputFileNamei,则删除ImportedInputFileNamei通过#import语句导入的ImportedInputFileNamei文件。对于任一个导入的头文件FileNamej,继续获取FileNamej通过#import语句导入的所有头文件,以此类推,直到从导入的头文件中获取所有通过#import语句导入的头文件。

本发明采用在目标源代码文件中获取通过#import语句导入的头文件,然后在导入的头文件中获取通过#import语句导入的头文件,由于#import语句确保相同的文件只会被导入一次,不但提高获取导入的头文件的效率,而且不会发生遗漏。

创建提取列表和待提取列表,提取列表用于存储导入的头文件的文件名及其对应的原始存储路径,待提取列表用于存储目标源代码文件及其导入的头文件的文件名。

参见图2所示,步骤S2包括:

S2.1将目标源代码文件的文件名存入待提取列表。

S2.2从待提取列表中读取一个文件名,将该文件名从待提取列表中删除。

S2.3解析读取的文件名对应的文件,获取对应的文件中所有通过#import语句导入的头文件,将不包含在提取列表或者待提取列表中的导入的头文件的文件名存入待提取列表中。

S2.4判断读取的文件名是否在提取列表中,若是,进入S2.6;若否,进入S2.5。

S2.5从路径列表中获取读取的文件名对应的原始存储路径,将读取的文件名及其对应的原始存储路径组成的键值对存入提取列表中。

例如,可以将文件名FileName1及其存储路径FilePath1按“FileName1-FilePath1”的键值对的方式写入提取列表。

S2.6若文件名的扩展名为.h,则将其扩展名.h修改为.m,若文件名的扩展名为.m,则将其扩展名.m修改为.h。

S2.7判断修改后的文件名是否在提取列表中,若是,进入S2.8;若否,进入S2.9。

S2.8判断待提取列表是否为空,若是,进入S3;若否,进入S2.2。

S2.9将修改后的文件名存入待提取列表,进入S2.2。

S3.从导入的头文件的原始存储路径中提取导入的头文件的代码,并将代码存入目标存储路径。

具体的,遍历提取列表,从导入的头文件的原始存储路径中提取导入的头文件的代码,并将代码存入目标存储路径。

本发明将目标源代码文件导入的头文件的文件名及其对应的原始存储路径存入提取列表,遍历提取列表,提取导入的头文件的代码,并存入目标存储路径,进一步提高提取代码的效率。

参见图3所示,本发明实施例提供一种从项目中提取代码的系统,用于从Objective-C开发的项目中提取代码,包括工程文件模块、源代码模块和提取模块。

工程文件模块用于从工程文件中获取项目的所有头文件的文件名及所有头文件的原始存储路径。

从工程文件中获取项目的所有头文件的扩展名为.h。

源代码模块用于获取目标源代码文件导入的头文件的文件名,根据导入的头文件的文件名,从项目的所有头文件的文件名及其对应的原始存储路径中获取导入的头文件的原始存储路径。

导入的头文件包括目标源代码文件中通过#import语句导入的头文件以及导入的头文件中通过#import语句导入的头文件。

提取模块用于从导入的头文件的原始存储路径中提取导入的头文件的代码,并将代码存入目标存储路径。

本发明可以根据指定的目标源代码文件的文件名自动提取该目标源代码文件所导入的头文件的代码,能够帮助开发者快速提取代码,节省时间和人工成本,提高项目开发效率,例如将斗鱼应用中的“开启直播”功能进行组件化之后,能够很方便地复用在斗鱼直播伴侣中,实现开启直播功能。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1