一种查重方法及装置与流程

文档序号:17473977发布日期:2019-04-20 06:00阅读:170来源:国知局
一种查重方法及装置与流程

本发明涉及数据处理技术领域,特别是涉及一种查重的方法及装置。



背景技术:

在系统开发过程中,分类可以在不改变原有类的实现情况下,动态给为该类增加方法,对于一些已经存在,但无法获得源代码的类应用广泛。

同一目录的库中分类较多,进而增加的方法也可以很多,通常通过调用类及对应的方法名称,进而实现对该方法的调用。针对同一个类,如果方法名称重复,由于调用过程中不调用对应的分类名称,因此,在调用过程中将会出现错误,因此需要对同一个类中各个分类对应的方法名称进行查重。

发明人在研究上述现有技术的过程中发现,上述现有技术方案存在如下缺点:目前没有针对同一类的方法名称进行查重的途径,由于同一目录中同一个类的分类较多,导致同一个类中各个分类对应的方法名称查重不便。



技术实现要素:

本发明提供一种查重的方法及装置,旨在针对预设目录,方便快捷的展示同一个类的各个分类中重复的方法名称。

第一方面,本发明实施例提供了一种查重的方法,所述方法包括:

在预设目录中确定目标库;所述目标库包括:至少1个分类;

在所述目标库中获取同一个类的各个分类对应的各个方法名称;

在同一个类的所述各个方法名称中查找重复的方法名称;

展示重复的方法名称。

优选的,若所述目标库为多架构的目标库,所述在所述目标库中获取同一个类的各个分类对应的各个方法名称的步骤之前,还包括:

将所述多架构的目标库分离为单一架构的目标库;

所述在所述目标库中获取同一个类的各个分类对应的各个方法名称的步骤,包括:

在任一单一架构的目标库中获取同一个类的各个分类对应的各个方法名称。

优选的,所述在预设目录中确定目标库的步骤,包括:

在所述预设目录中确定存在分类标识的目标库;所述分类标识为表征分类的预设字符。

优选的,所述在所述目标库中获取同一个类的各个分类对应的各个方法名称的步骤,包括:

在所述目标库中获取同一个类对应的各个分类;

获取所述各个分类对应的各个方法名称。

优选的,所述方法还包括:

展示所述重复的方法名称对应的分类名称。

第二方面,本发明实施例提供了一种查重装置,所述装置包括:

目标库确定模块,用于在预设目录中确定目标库;所述目标库包括:至少1个分类;

方法名称确定模块,用于在所述目标库中获取同一个类的各个分类对应的各个方法名称;

重复方法名称查找模块,用于在同一个类的所述各个方法名称中查找重复的方法名称;

重复方法名称展示模块,用于展示重复的方法名称。

优选的,若所述目标库为多架构的目标库,所述装置还包括:

架构分离模块,用于将所述多架构的目标库分离为单一架构的目标库;

所述方法名称确定模块包括:

方法名称第一确定单元,用于在任一单一架构的目标库中获取同一个类的各个分类对应的各个方法名称。

优选的,所述目标库确定模块包括:

目标库确定单元,用于在所述预设目录中确定存在分类标识的目标库;所述分类标识为表征分类的预设字符。

优选的,所述方法名称确定模块包括:

分类确定单元,用于在所述目标库中获取同一个类对应的各个分类;

方法名称第二确定单元,用于获取所述各个分类对应的各个方法名称。

优选的,所述装置还包括:

分类名称展示模块,用于展示所述重复的方法名称对应的分类名称。

第三方面,本发明实施例还提供了一种终端,该终端包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现本发明所述的查重方法的步骤。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现本发明所述的查重方法的步骤。

在本发明实施例中,在预设目录中确定目标库;所述目标库包括:至少1个分类;在所述目标库中获取同一个类的各个分类对应的各个方法名称;在同一个类的所述各个方法名称中查找重复的方法名称;展示重复的方法名称。由于重复的方法名称的前提通常在于该类包括至少1个分类,因此根据是否存在分类确定目标库,减少对一些无关库的操作,提升了确定重复方法名称的效率,查找得到同一个类对应的重复方法名称并展示,方便后续在众多的方法中快速调整重复的方法名称。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1示出了本发明实施例一中的一种查重的方法的流程图;

图2示出了本发明实施例二中的一种查重的方法的流程图;

图3示出了本发明实施例三中的一种查重装置的结构框图;

图4示出了本发明实施例三中的另一种查重装置的结构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

参照图1,示出了本发明实施例一的查重的方法的流程图,具体可以包括如下步骤:

步骤101,在预设目录中确定目标库;所述目标库包括:至少1个分类。

在本发明实施例中,预设目录可以为存储有库且需要查重的空间。例如,若f盘存储有库且需要对f盘的库进行查重,则该预设目录可以为f盘。在本发明实施例中,对此不作具体限定。

在本发明实施例中,该预设目录中可以存储多个库,该库可以为动态库,还可以为静态库,各个库中可以包括类,各个类中可能包括分类,各个分类中可以包括方法,通常通过调用类的名称及对应的方法名称,进而实现对该类中该方法的调用,即,在调用过程中没有携带分类的信息,例如,若类a1包括分类a11和分类a12,分类a11包括方法a111,分类a12包括方法a111,通过调用类a1及方法a111的名称调用a1中方法a111,由于在对类a1的方法a11调用过程中,没有携带分类的相关信息,无法确定是对类a1中的那一个分类中的方法a111进行调用,进而会导致错误。因此,针对同一个类,如果不同分类包括的方法名称重复,在调用过程中将会出现错误。因此,查重的前提可以为一个类包括至少一个分类,而类存在于库中,因此,查重的前提可以为该库包括至少一个分类。

在本发明实施例中,可以将具有分类的库确定为目标库,或者将包括至少1个分类的库确定为目标库。例如,预设目录中包括库a、库b、库c、库d,库a中包括类a1和类b1,类a1包括分类a11、分类a12,分类a11包括方法a111和方法a112,分类a12包括方法a111,类b1包括分类b11,分类b11包括方法b111;库b中包括类b1和类c1,类b1包括分类b12,分类b12包括方法b111;库b中的类c1没有分类;库c中包括类c1,类c1包括分类c11,分类c11包括方法c111;库d中包括类d1,库d中的类d1没有分类。可以得出,库a包括3个分类,分别为:分类a11、分类a12和分类b11;库b包括1个分类,分类b12;库c包括1个分类,分类c11;库d没有分类;由于查重的方法名称的前提在于该库包括至少1个的分类,由于库d中没有分类,因此针对库d也就没有查找重复的方法名称的必要,可以将库d排除,则确定的该预设目录的目标库可以为:库a、库b、库c。

具体应用中,可以获取该预设目录中各个库对应的全部的节和段等内容,该各个库全部节和段等内容可以是每一个库中的所有类、所有分类、所有方法、所有变量等的字符串总和。通过各个库对应的全部的字和段等内容,确定各个库是否包括分类,进而确定目标库。获取预设目录中各个库对应的全部节和段等内容,具体可以通过命令行工具“otool”等,在本发明实施例中,对此不作具体限定。

在本发明实施例中,通过判断各个库是否包括分类,进而可以快速的将没有包括分类的库排除掉,以避免对无关库的操作,以提升效率。针对上述例子,由于库d中没有分类,因此针对库d也就没有查找重复的方法名称的必要,可以将库d排除,确定的该预设目录的目标库可以为:库a、库b、库c。避免了后续对库d的无关操作。

步骤102,在所述目标库中获取同一个类的各个分类对应的各个方法名称。

在本发明实施例中,在预设目录中确定的目标库中获取同一个类的各个分类对应的各个方法名称。具体应用中,可以在上述各个库对应的全部的节和段等内容的字符串中,查找同一个类的各个分类对应的各个方法名称。在本发明实施例中,对此不作具体限定。

在本发明实施例中,针对上述例子,在预设目录中确定的目标库为库a、库b、库c,库a中包括类a1和类b1,类a1包括分类a11、分类a12,分类a11包括方法a111和方法a112,分类a12包括方法a111,类b1包括分类b11,分类b11包括方法b111;库b中包括类b1和类c1,类b1包括分类b12,分类b12包括方法b111;库b中的类c1没有分类;库c中包括类c1,类c1包括分类c11,分类c11包括方法c111。上述库a、库b、库c包括的类为:类a1、类b1、类c1,上述库a、库b、库c中类a1的各个分类为:分类a11、分类a12,而分类a11包括方法a111和方法a112,分类a12包括方法a111,则在上述目标库,库a、库b、库c中获取的类a1的各个分类对应的各个方法名称可以为:分类a11对应的方法a111、分类a11对应的方法a112和分类a12对应的方法a111;在上述目标库,库a、库b、库c中获取的类b1的各个分类对应的各个方法名称可以为:分类b11对应的方法b111,分类b12对应的方法b111;在上述目标库,库a、库b、库c中获取的类c1的各个分类对应的各个方法名称可以为:分类c11对应的方法c111。

步骤103,在同一个类的所述各个方法名称中查找重复的方法名称。

在本发明实施例中,上述目标库中的同一个类的各个方法名称中查找重复的方法名称。具体的,可以针对各个方法名称采用字符串查找的方式,将同一个类的各个方法名称中重复的方法名称确定出来。在本发明实施例中,对此不作具体限定。

在本发明实施例中,针对上述例子,在上述目标库,库a、库b、库c中获取的类a1的各个分类对应的各个方法名称可以为:分类a11对应的方法a111、分类a11对应的方法a112和分类a12对应的方法a111;在上述目标库,库a、库b、库c中获取的类b1的各个分类对应的各个方法名称可以为:分类b11对应的方法b111,分类b12对应的方法b111;在上述目标库,库a、库b、库c中获取的类c1的各个分类对应的各个方法名称可以为:分类c11对应的方法c111。

在本发明实施例中,针对上述目标库,库a、库b、库c类a1的各个分类对应的各个方法名称:分类a11对应的方法a111、分类a11对应的方法a112和分类a12对应的方法a111,方法a111在同一个类a1中出现了两次,即,在类a1中方法a111重复。则在类a1的各个方法名称中查找重复的方法名称即可以为方法a111;类b1的各个分类对应的各个方法名称:分类b11对应的方法b111,分类b12对应的方法b111,方法b111在同一个类b1中出现了两次,即,在类b1中方法b111重复。则在类b1的各个方法名称中查找重复的方法名称即可以为方法b111;类c1的各个分类对应的各个方法名称可以为:分类c11对应的方法c111,针对类c1没有查找到重复的方法名称。

步骤104,展示重复的方法名称。

在本发明实施例中,同一个类的方法名称中存在重复的方法名称,在调用过程中会出现错误,针对同一个类的各个方法名称中查找到重复的方法名称后,可以将重复的方法名称进行展示,以方便后续调整。上述展示可以是将该预设目录中,同一个类中重复的方法名称进行集中展示。

例如,针对上述例子,可以展示为:类a1重复的方法名称为方法a111;类b1重复的方法名称为方法b111。

在本发明实施例中,在预设目录中确定目标库;所述目标库包括:至少1个分类;在所述目标库中获取同一个类的各个分类对应的各个方法名称;在同一个类的所述各个方法名称中查找重复的方法名称;展示重复的方法名称。由于重复的方法名称的前提通常在于该类包括至少1个分类,因此根据是否存在分类确定目标库,减少对一些无关库的操作,提升了确定重复方法名称的效率,查找得到同一个类对应的重复方法名称并展示,方便后续在众多的方法中快速调整重复的方法名称。

实施例二

参照图2,示出了本发明实施例二的查重的方法的流程图,具体可以包括如下步骤:

步骤201,在所述预设目录中确定存在分类标识的目标库;所述分类标识为表征分类的预设字符;所述目标库包括:至少1个分类。

在本发明实施例中,该步骤201可以参照上述步骤101的有关记载,需要说明的是,分类通常可以具有对应的分类标识,该分类标识可以是表征该库具有分类的标志等,具体,该分类标识可以为表征分类的预设字符,例如,字符:“category”,可以获取该预设目录中各个库对应的全部的节和段等内容,该各个库全部节和段等内容可以是每一个库中的所有类、所有分类、所有方法、所有变量等的字符串总和。具体可以通过命令行工具“otool”等,在本发明实施例中,对此不作具体限定。

在获取到预设目录中各个库对应的全部的节和段等内容后,可以在各个库对应的全部的节和段等字符串总和中查找,每一个库是否具有分类标识,例如,上述字符“category”。如果一个库对应的全部的节和段等内容中存在分类标识,则该库的某一个类中至少包括一个分类,可以将包括分类个数大于等于1的类确定为目标类。具体应用中,可以通过命令行工具”grep”等,在获取到预设目录中各个库对应的全部的节和段等内容中,每一个库是否具有分类标识。在本发明实施例中,对此不作具体限定。

例如,针对上述例子,预设目录中包括库a、库b、库c、库d,库a中包括类a1和类b1,类a1包括分类a11、分类a12,分类a11包括方法a111和方法a112,分类a12包括方法a111,类b1包括分类b11,分类b11包括方法b111;库b中包括类b1和类c1,类b1包括分类b12,分类b12包括方法b111;库b中的类c1没有分类;库c中包括类c1,类c1包括分类c11,分类c11包括方法c111;库d中包括类d1,库d中的类d1没有分类。可以得出,库a包括3个分类,分别为:分类a11、分类a12和分类b11;库b包括1个分类,分类b12;库c包括1个分类,分类c11;库d没有分类。则预设目录的库a中可以包括分类标识;库b中可以包括分类标识;库c可以包括分类标识;库d没有分类标识;由于查重的方法名称的前提在于该库包括至少1个的分类,由于库d没有分类标识,因此针对库d也就没有查找重复的方法名称的必要,可以将库d排除,则确定的该预设目录的目标库可以为:库a、库b、库c。

在本发明实施例中,一个库具有分类,通常具有分类标识,可以通过某一个库是否具有分类标识,快速的将没有分类的库排除,提升了确定目标库的速度。

步骤202,若所述目标库为多架构的目标库,将所述多架构的目标库分离为单一架构的目标库。

本发明实施例中,多架构的库是能够支持多个不同类型的平台。例如,若目标库能够支持32位的平台、64位的平台、128位的平台,则可以认为该目标库为3架构的库。通常多架构的库中很多目标库是重复的,因此,可以将多架构的目标库分离为单一架构的目标库,即,将支持多类型平台的目标库分离为只支持某一类型平台的目标库。

例如,若目标库支持32位的平台、64位的平台、128位的平台,可以将该目标库分离为只支持32位的平台的单一架构的目标库、只支持64位的平台的单一架构的目标库、只支持128位的平台的单一架构的目标库。

本发明实施例中,将多架构的目标库分离为单一架构的目标库可以才采用命令行工具“lipo”进行,在本发明实施例中,对此不作具体限定。

步骤203,在任一单一架构的目标库中获取同一个类的各个分类对应的各个方法名称。

在本发明实施例中,通常多架构的库中很多目标库是重复的,即各个单一架构的目标库中很多目标库是重复的,因此,可以将多架构的目标库分离为单一架构的目标库,通常单一架构的目标库中若同一个类存在重复的方法名称,则多架构的目标库中对应的类中也存在重复的方法名称,因此,只需要在任一单一架构的目标库中获取同一个类的各个分类对应的方法名称即可,可以避免对重复目标库的操作,以提升确定同一个类重复方法名称的速度。

例如,针对上述例子,针对支持32位的平台、64位的平台、128位平台的目标库,可以将该目标库分离为只支持32位的平台的单一架构的目标库、只支持64位的平台的单一架构的目标库、只支持128位的平台的单一架构的目标库,该步骤中可以在只支持32位的平台的单一架构的目标库中获取同一个类的各个分类对应的各个方法名称,或者可以在只支持64位的平台的单一架构的目标库中获取同一个类的各个分类对应的各个方法名称,或者在只支持128位的平台的单一架构的目标库中获取同一个类的各个分类对应的各个方法名称。若在只支持32位的平台的单一架构的目标库中获取同一个类的各个分类对应的各个方法名称,可以避免对只支持64位的平台的单一架构的目标库和只支持128位的平台的单一架构的目标库的重复操作。

在本发明实施例中,可选的,在目标库中获取同一个类的各个分类对应的各个方法名称的步骤,可以包括:在所述目标库中获取同一个类对应的各个分类;获取所述各个分类对应的各个方法名称。具体的,可以在各个目标库对应的全部的节和段等内容,该各个目标库全部节和段等内容可以是每一个目标库中的所有类、所有分类、所有方法、所有变量等的字符串总和。可以从在各个目标库的上述字符串总和中,可以根据分类的命名规则,以及分类与类的分布规则等,获取同一个类的对应的各个分类。具体的,针对分类,其命名中通常可以包括字符“category”等,通常分类定义在类中等,进而可以通过相应字符串匹配以及对应的分布规则等,获取各个目标库中同一个类对应的各个分类。可以在同一个类的各个分类对应的字符串总和中,根据各个方法的命名规则,以及方法与分类的分布规则等,获取同一个类的各个分类对应的各个方法名称。针对方法,其命名通常可以包括字符“method”等,通常方法定义在分类中,进而可以通过相应字符串匹配以及对应的分布规则等,获取各个目标库中同一个类的各个分类对应的各个方法名称。

步骤204,在同一个类的所述各个方法名称中查找重复的方法名称。

步骤205,展示重复的方法名称。

在本发明实施例中,上述步骤204和步骤205可以分别参照上述步骤103和步骤104的相关记载,为了避免重复,此处不再赘述。

步骤206,展示所述重复的方法名称对应的分类名称。

在本发明实施例中,为了便于后续调整同一个类重复的方法名称,还可以将同一个类的重复方法名称对应的分类名称也进行展示。

例如,针对上述例子,可以展示为:类a1重复的方法名称a111对应的分类为分类a11和分类a12;类b1重复的方法名称b111对应的分类为分类b11和分类b12。进而可以快速地在类中准确的找到重复的方法。

在本发明实施例中,在预设目录中确定目标库;所述目标库包括:至少1个分类;在所述目标库中获取同一个类的各个分类对应的各个方法名称;在同一个类的所述各个方法名称中查找重复的方法名称;展示重复的方法名称。由于重复的方法名称的前提通常在于该类包括至少1个分类,因此根据是否存在分类确定目标库,减少对一些无关库的操作,提升了确定重复方法名称的效率,查找得到同一个类对应的重复方法名称并展示,方便后续在众多的方法中快速调整重复的方法名称。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定都是本申请实施例所必须的。

实施例三

参照图3所示,本发明实施例提供了一种查重装置300,上述查重装置300具体可以包括:

目标库确定模块301,用于在预设目录中确定目标库;所述目标库包括:至少1个分类;

方法名称确定模块303,用于在所述目标库中获取同一个类的各个分类对应的各个方法名称;

重复方法名称查找模块304,用于在同一个类的所述各个方法名称中查找重复的方法名称;

重复方法名称展示模块305,用于展示重复的方法名称。

优选的,参照图4所示,在上述图3的基础上,若所述目标库为多架构的目标库,所述装置可以还包括:

架构分离模块302,用于将所述多架构的目标库分离为单一架构的目标库;

所述方法名称确定模块303可以包括:

方法名称第一确定单元3031,用于在任一单一架构的目标库中获取同一个类的各个分类对应的各个方法名称。

优选的,所述目标库确定模块301可以包括:

目标库确定单元3011,用于在所述预设目录中确定存在分类标识的目标库;所述分类标识为表征分类的预设字符。

优选的,所述方法名称确定模块303可以包括:

分类确定单元,用于在所述目标库中获取同一个类对应的各个分类;

方法名称第二确定单元,用于获取所述各个分类对应的各个方法名称。

优选的,所述装置还可以包括:

分类名称展示模块306,用于展示所述重复的方法名称对应的分类名称。

本发明实施例提供的查重装置能够实现图1至图2的方法实施例中装置实现的各个过程,为避免重复,这里不再赘述。

在本发明实施例中,在预设目录中确定目标库;所述目标库包括:至少1个分类;在所述目标库中获取同一个类的各个分类对应的各个方法名称;在同一个类的所述各个方法名称中查找重复的方法名称;展示重复的方法名称。由于重复的方法名称的前提通常在于该类包括至少1个分类,因此根据是否存在分类确定目标库,减少对一些无关库的操作,提升了确定重复方法名称的效率,查找得到同一个类对应的重复方法名称并展示,方便后续在众多的方法中快速调整重复的方法名称。

另外,本发明实施例还提供了一种终端,该终端包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,高计算机程序被所述处理器执行时实现本发明上述的查重方法的步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。

同时,本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储计算机程序,该计算机程序被处理器执行时实现本发明上述的查重方法的步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,上述的计算机可读存储介质,如只读存储器(read-onlymemory,简称rom)、随机存取存储器(randomaccessmemory,简称ram)、磁碟或者光盘等。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

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