CN111782220A - 一种文件的检测方法和装置 - Google Patents
一种文件的检测方法和装置 Download PDFInfo
- Publication number
- CN111782220A CN111782220A CN202010834101.4A CN202010834101A CN111782220A CN 111782220 A CN111782220 A CN 111782220A CN 202010834101 A CN202010834101 A CN 202010834101A CN 111782220 A CN111782220 A CN 111782220A
- Authority
- CN
- China
- Prior art keywords
- file
- target
- name
- target file
- source code
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供了一种文件的检测方法及装置,所述方法通过在应用程序开发的过程中,尤其是在通过分类添加新的方法后,提取目标文件类型的目标文件,并根据目标文件的文件标识与文件内容对应用程序的工程文件进行异常检测,避免由于源代码不规范导致应用功能缺失以及程序崩溃的问题,提高了工程文件代码的规范性,保证了应用程序的稳定性。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种文件的检测方法和一种文件的检测装置。
背景技术
分类为Objective-C语言的一种写法,可以按照功能分组,使类结构更清晰,相当于某个类按不同功能进行扩展。在IOS开发过程中,当原有类的方法不够用时,可以通过category(分类)在现有类的基础上添加新的方法,具体可以将项目的分类方法插入到类的方法列表。然而,如果方法列表中已经存在与分类方法相同类名的函数方法,则会优先调用新的函数方法,从而容易导致原函数方法被覆盖,进而导致原有功能不可用,或导致覆盖注销方法,使得程序属性未及时释放而导致应用程序的崩溃。
发明内容
本发明实施例是提供一种文件的检测方法,以解决现有技术中应用程序通过分类添加新的方法后,容易出现应用功能缺失以及程序崩溃的问题。
相应的,本发明实施例还提供了一种文件的检测装置,用以保证上述方法的实现及应用。
为了解决上述问题,本发明实施例公开了一种文件的检测方法,其特征在于,包括:
获取目标工程文件;
按照预设文件类型,从所述目标工程文件中提取目标文件,所述目标文件包括文件标识与文件内容;
根据所述文件标识与所述文件内容,对所述目标文件进行检测,生成检测结果,所述检测结果至少包括所述目标文件出现源代码异常的结果。
可选地,所述预设文件类型至少包括第一文件类型与第二文件类型,所述按照预设文件类型,从所述目标工程文件中提取目标文件,包括:
从所述目标工程文件中,提取文件类型为所述第一文件类型的源代码文件,以及文件类型为所述第二文件类型的静态库文件。
可选地,所述文件标识包括所述目标文件的文件名以及文件类型,所述根据所述文件标识与所述文件内容,对所述目标文件进行检测,包括:
若所述目标文件的文件名不在预设白名单中,则根据所述文件类型,从所述目标文件的文件内容中提取所述目标文件中的函数方法,并获取所述函数方法的方法名称;
根据所述方法名称,对所述目标文件进行检测,生成检测结果。
可选地,所述根据所述文件类型,从所述目标文件的文件内容中提取所述目标文件中的函数方法,并获取所述函数方法的方法名称,包括:
获取针对所述第一文件类型的提取信息;
按照所述提取信息,从所述源代码文件的文件内容中提取函数方法,并获取所述函数方法的方法名称。
可选地,所述根据所述文件类型,从所述目标文件的文件内容中提取所述目标文件中的函数方法,并获取所述函数方法的方法名称,包括:
从所述静态库文件的文件内容中提取符号表;
从所述符号表中,提取所述目标文件的函数方法,以及所述函数方法的方法名称。
可选地,所述根据所述方法名称,对所述目标文件进行检测,生成检测结果之前,还包括:
若所述源代码文件中包含预设声明信息,则确定所述源代码文件为分类文件。
可选地,所述根据所述方法名称对所述目标文件进行检测,生成检测结果之前,还包括:
若所述符号表中包含预设数据格式,则确定所述静态库文件为分类文件。
可选地,所述根据所述方法名称,对所述目标文件进行检测,生成检测结果,包括:
若所述分类文件中存在相同的方法名称,则输出针对所述目标文件的源代码异常信息。
可选地,所述根据所述方法名称,对所述目标文件进行检测,生成检测结果,包括:
以所述分类文件的文件名为数据键,将所述分类文件中的各个方法名称作为所述数据键对应的数据值;
若所述数据键对应的数据值中存在相同的数据值,则输出针对所述目标文件的源代码异常信息。
可选地,所述根据所述方法名称,对所述目标文件进行检测,生成检测结果,包括:
若所述目标文件不是分类文件,则以所述目标文件的文件名为数据键,将所述分类文件中的各个方法名称作为所述数据键对应的数据值;
若所述数据键所对应的数据值中存在相同的数据值,则输出针对所述目标文件的源代码异常信息。
本发明实施例还公开了一种文件的检测装置,包括:
工程文件获取模块,用于获取目标工程文件;
目标文件提取模块,用于按照预设文件类型,从所述目标工程文件中提取目标文件,所述目标文件包括文件标识与文件内容;
文件检测模块,用于根据所述文件标识与所述文件内容,对所述目标文件进行检测,生成检测结果,所述检测结果至少包括所述目标文件出现源代码异常的结果。
可选地,所述预设文件类型至少包括第一文件类型与第二文件类型,所述目标文件提取模块具体用于:
从所述目标工程文件中,提取文件类型为所述第一文件类型的源代码文件,以及文件类型为所述第二文件类型的静态库文件。
可选地,所述文件标识包括所述目标文件的文件名以及文件类型,所述文件检测模块包括:
方法名称获取子模块,用于若所述目标文件的文件名不在预设白名单中,则根据所述文件类型,从所述目标文件的文件内容中提取所述目标文件中的函数方法,并获取所述函数方法的方法名称;
检测结果生成子模块,用于根据所述方法名称,对所述目标文件进行检测,生成检测结果。
可选地,所述方法名称获取子模块具体用于:
获取针对所述第一文件类型的提取信息;
按照所述提取信息,从所述源代码文件的文件内容中提取函数方法,并获取所述函数方法的方法名称。
可选地,所述方法名称获取子模块具体用于:
从所述静态库文件的文件内容中提取符号表;
从所述符号表中,提取所述目标文件的函数方法,以及所述函数方法的方法名称。
可选地,所述文件检测模块还包括:
第一分类文件确定子模块,用于若所述源代码文件中包含预设声明信息,则确定所述源代码文件为分类文件。
可选地,所述文件检测模块还包括:
第二分类文件确定子模块,用于若所述符号表中包含预设数据格式,则确定所述静态库文件为分类文件。
可选地,所述根据所述方法名称,对所述目标文件进行检测,生成检测结果,包括:
若所述分类文件中存在相同的方法名称,则输出针对所述目标文件的源代码异常信息。
可选地,所述检测结果生成子模块具体用于:
以所述分类文件的文件名为数据键,将所述分类文件中的各个方法名称作为所述数据键对应的数据值;
若所述数据键对应的数据值中存在相同的数据值,则输出针对所述目标文件的源代码异常信息。
可选地,所述检测结果生成子模块具体用于:
若所述目标文件不是分类文件,则以所述目标文件的文件名为数据键,将所述分类文件中的各个方法名称作为所述数据键对应的数据值;
若所述数据键所对应的数据值中存在相同的数据值,则输出针对所述目标文件的源代码异常信息。
本发明实施例还公开了一种电子设备,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如上所述的方法。
本发明实施例还公开了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如上所述的方法。
本发明实施例包括以下优点:
在本发明实施例中,通过在应用程序开发的过程中,尤其是在通过分类添加新的方法后,提取目标文件类型的目标文件,并根据目标文件的文件标识与文件内容对应用程序的工程文件进行异常检测,避免由于源代码不规范导致应用功能缺失以及程序崩溃的问题,提高了工程文件代码的规范性,保证了应用程序的稳定性。
附图说明
图1是本发明的一种文件的检测方法实施例的步骤流程图;
图2是本发明的一种文件的检测方法实施例的步骤流程图;
图3是本发明实施例中文件检测的流程示意图;
图4是本发明的一种文件的检测装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
分类:Objective-C语言的一种写法,用于按功能分组,使类结构更清晰,相当于某个类按不同功能进行扩展。
注销方法:一个文件生命周期结束时运行的方法。
Key-Value(键值对):即一个字典中的索引和对应的值。
静态库文件:只暴露接口,不暴露源码的文件;源代码文件:开发人员使用任何编程语言编写的代码。其中,对于源代码文件,可以直接通过读取代码的方式,获得源代码文件中的函数方法,而对于静态库文件,则可以通过获取对应的符号表,从而获得源代码文件中的函数方法。
符号表:包括静态库文件中的许多信息,如方法列表等,方法列表中可以包括一个静态库文件所有的函数方法,通过函数方法的方法名称可以判断分类中是否有同名的函数方法。
正则表达式:可以用来检索符合某个模式(规则)的文本。
在IOS开发过程中,由于IOS语言的特性,在objc setup阶段,会把分类方法插入到类的方法列表中,若分类中有和原有类同名的方法,则会优先调用分类中的方法,就会忽略原有类的方法,从而可能会覆盖原方法,导致原有功能不可用,严重的话可能会覆盖注销方法,使得属性未及时释放导致崩溃。
因此,本发明实施例的核心发明点之一在于当对应用程序的工程文件开发完毕后,从所开发的工程文件中提取目标文件类型的目标文件,并根据目标文件的文件标识与文件内容进行异常检测,从而在开发编译阶段检测报错,如果有异常情况则告知开发者编译失败,将异常情况扼杀在开发阶段,避免由于源代码不规范导致应用功能缺失以及程序崩溃的问题,提高了工程文件代码的规范性,保证了应用程序的稳定性。
具体的,参照图1,示出了本发明的一种文件的检测方法实施例的步骤流程图,具体可以包括如下步骤:
步骤101,获取目标工程文件;
作为一种示例,一个应用程序可以对应一个工程文件,开发者可以创建一个空的工程文件,并在该工程文件编写用于执行不同程序功能的源代码,从而完成工程文件的编译。其中,在IOS开发过程中,category(分类)可以按照功能分组,使类结构更清晰,其可以在现有类的基础上添加新的方法,可以为开发者提供一定程度的便利性。然而,若方法列表中存在相同类名的函数方法,则容易导致原函数方法被覆盖,进而导致原有功能不可用,或导致覆盖注销方法,使得程序属性未及时释放而导致应用程序的崩溃。因此,在本发明实施例中,在应用程序的开发过程中,在编译工程文件源代码之前,运行对应的脚本对工程文件进行检测,若脚本检测出异常,则直接报错,取消对工程文件的编译;若脚本检测无异常,则对工程文件进行编译,从而在开发编译阶段检测报错,如果有异常情况则告知开发者编译失败,将异常情况扼杀在开发阶段,避免由于源代码不规范导致应用功能缺失以及程序崩溃的问题
步骤102,按照预设文件类型,从所述目标工程文件中提取目标文件,所述目标文件包括文件标识与文件内容;
在本发明实施例中,工程文件中可以包括不同文件类型的目标文件,例如文件类型可以包括.m、.mm、.a以及.framework等类型,每个目标文件则具有唯一的文件标识以及对应的文件内容,文件标识可以用于表示一个目标文件的文件名称与文件类型,文件内容可以包括一个目标文件所记录的内容,例如函数方法等。
在具体实现中,得到目标工程文件后,可以按照预设文件类型,从目标工程文件中提取目标文件,可以理解的是,并非所有的目标文件都与category关联,则通过从目标工程文件中提取特定文件类型的目标文件,有利于提高文件检测的效率。
步骤103,根据所述文件标识与所述文件内容,对所述目标文件进行检测,生成检测结果,所述检测结果至少包括所述目标文件出现源代码异常的结果。
在本发明实施例中,对于目标工程文件的检测,可以通过各个目标文件的文件标识与文件内容,进行源代码的异常检测,从而判断目标文件中是否出现源代码异常,进而确定工程文件是否出现异常,避免由于源代码不规范导致应用功能缺失以及程序崩溃的问题,提高了工程文件代码的规范性,保证了应用程序的稳定性。
在具体实现中,可以通过文件标识对目标文件的文件类型进行识别,确定各个目标文件的文件类型后,可以依据对应的文件类型,采用不同的信息提取方式,对文件内容进行信息提取,进而根据所提取的信息对目标文件进行异常检测,从而判断目标文件中是否出现源代码异常,进而确定工程文件是否出现异常。
在本发明实施例中,通过在应用程序开发的过程中,尤其是在通过分类添加新的方法后,提取目标文件类型的目标文件,并根据目标文件的文件标识与文件内容对应用程序的工程文件进行异常检测,避免由于源代码不规范导致应用功能缺失以及程序崩溃的问题,提高了工程文件代码的规范性,保证了应用程序的稳定性。
参照图2,示出了本发明的一种文件的检测方法实施例的步骤流程图,具体可以包括如下步骤:
步骤201,获取目标工程文件;
在IOS应用程序开发过程中,当完成工程文件的开发后,可以在编译时自动检测工程中是否存在分类的同名方法,若检测出同名方法,则报错,提醒开发者所写代码不规范,以便提高工程文件的代码规范性,避免应用功能缺失以及程序崩溃的问题,保证了应用程序的稳定性。
步骤202,按照预设文件类型,从所述目标工程文件中提取目标文件,所述目标文件包括文件标识与文件内容;
在本发明实施例中,工程文件中可以包括不同文件类型的目标文件,例如文件类型可以包括.m、.mm、.a以及.framework等类型,每个目标文件则具有唯一的文件标识以及对应的文件内容,文件标识可以用于表示一个目标文件的文件名称与文件类型,文件内容可以包括一个目标文件所记录的内容,例如行数方法等。
在具体实现中,文件类型至少可以包括第一文件类型与第二文件类型,则可以从目标工程文件中,提取文件类型为第一文件类型的源代码文件,以及文件类型为第二文件类型的静态库文件。例如,第一文件类型可以为.m、.mm等,第二文件类型可以.a、.framework等,则在检测过程中,可以对目标工程文件进行遍历,并提取出属于第一文件类型与第二文件类型的目标文件。
需要说明的是,.m与.mm等为源代码文件,其可以包括Objective-C和C代码等,.a与.framework等为静态库文件,只提供接口,而不暴露源码的文件。此外,工程文件中目标文件的文件类型较多,但能够产生分类异常的目标文件,其文件类型为.m、.mm、.a以及.framework等文件,因此通过提取这类型的目标文件,可以有效减少对所有的目标文件进行检测的时间,提高检测效率。
在一种示例中,可以通过遍历目标工程文件,提取文件类型为.m、.mm、.a以及.framework的目标文件,并获取各个目标文件的文件标识与文件内容。其中,文件标识可以由文件名称以及文件类型组成,例如File.m,则文件名称为File,文件类型为.m,文件内容可以包括一个目标文件所记录的内容,例如行数方法等。
步骤203,若所述目标文件的文件名不在预设白名单中,则根据所述文件类型,从所述目标文件的文件内容中提取所述目标文件中的函数方法,并获取所述函数方法的方法名称;
在本发明实施例中,当提取对应的目标文件后,可以根据目标文件的文件名,判断其是否处于白名单中,若处于白名单中,则忽略该目标文件,不进行异常检测;否则根据目标文件的文件类型,从文件内容中提取目标文件中的函数方法,并获取函数方法的方法名称。其中,由于文件类型的不同,则需要通过不同的提取方式对目标文件进行函数方法的提取。
在一种示例中,当目标文件为第一文件类型时,则可以通过获取针对第一文件类型的提取信息,接着按照提取信息,从源代码文件的文件内容中提取源代码文件中的函数方法,并获取函数方法的方法名称。例如,提取信息可以为正则表达式,通过正则表达式特定的规则,对.m以及.mm等源代码文件的文本内容进行匹配,从而提取出源代码文件中的函数方法,并获取各个函数方法的方法名称。
在另一种示例中,当目标文件为第二文件类型时,则可以从静态库文件的文件内容中提取静态库文件的符号表,接着从符号表中,提取目标文件的函数方法,以及函数方法的方法名称。例如,可以通过Python指令“nm-j”提取静态库文件的符号表,并从提取出符号表中的函数方法,以及获取各个函数方法的方法名称。
需要说明的是,本发明实施例包括但不限于上述示例,可以理解的是,在本发明实施例的思想指导下,本领域技术人员可以根据实际情况对函数方法的提取方式进行设置,本发明对此不作限制。
步骤204,根据所述方法名称,对所述目标文件进行检测,生成检测结果。
在本发明实施例中,通过判断目标文件中是否存在相同的方法名称,对目标文件进行检测,从而确定工程文件是否出现异常,避免由于源代码不规范导致应用功能缺失以及程序崩溃的问题,提高了工程文件代码的规范性,保证了应用程序的稳定性。
在具体实现中,对目标文件进行检测之前,可以先判断目标文件是否为分类文件,可以通过不同的判断方式对不同文件类型的目标文件进行识别。具体的,若源代码文件中包含预设声明信息,则确定源代码文件为分类文件;若静态库文件的符号表中包含预设数据格式,则确定静态库文件为分类文件,从而在识别出目标文件是否为分类文件后,可以进一步对目标文件是否存在同名的函数方法进行检测。
在一种示例中,在第一文件类型的源代码文件中,分类文件的特征为:文本内容的实现包括一个声明:@interface BaseName(Category)…具体实现@end,其中,BaseName为分类的基础名称,Category为这个分类的名字,则源代码文件的文本内容有上述的声明,则可将该文件视为分类文件;否则,为普通文件。
在另一种示例中,在第二文件类型的静态库文件中,分类文件的特征为:静态库文件的符号表包括满足+/-[BaseName(Category)Method],即静态库文件中包括满足+或-[xxx(xxx)]的格式,视为分类文件;否则,为普通文件。
需要说明的是,对于分类文件与普通文件,其区别在于文件名称的不同,普通文件的文件名称中不包括分类标识,而分类文件的文件名称中包括分类标识,例如,分类标识可以为文件名称中用于指示目标文件为分类文件的标识,如“(Category)”等,则分类文件的文件名称可以为BaseName(Category),而普通文件的文件名称可以为BaseName等,其中,BaseName为目标文件的基础名称,本发明对此不作限制。
在具体实现中,对目标文件进行文件类型识别完毕后,无论是否为分类文件,均可以将目标文件的文件名称作为数据键,并将目标文件中各个函数方法的方法名称作为数据值,建立针对目标文件的数组,若同一个数据键下存在相同的数据值,表示目标文件中存在同名方法,输出针对目标文件的源代码异常信息;若同一个数据键下不存在相同的数据值,则将所提取的函数方法添加至对应数据键下,并进行下一轮遍历。
需要说明的是,对于分类文件与非分类文件之间分类同名方法检测的区别在于:两者的文件名称不同,由于分类文件的文件名称中携带分类标识,则需要从文件名称中提取基础名称,非分类文件则可以直接以文件名称作为数据键,当提取目标文件对应的基础名称后,检测过程相同,在此不再赘述。
在一种示例中,若目标文件为普通文件,则可以直接取目标文件的基础文件名称作为字典的Key;若目标文件为分类文件,则可以从目标文件的文件名称中提取基础文件名称(不包含分类标识)作为字典的Key,然后根据以所获取的各个函数方法的方法名称作为Value,建立与目标文件的数组,并判断同一个Key下是否存在同名的方法名称,若存在分类同名方法,则输出源代码错误信息;若不存在分类同名方法,则将所提取出的方法名称放入该Key下的数组,并进行下一轮遍历,从而避免由于源代码不规范导致应用功能缺失以及程序崩溃的问题,提高了工程文件代码的规范性,保证了应用程序的稳定性。
需要说明的是,本发明实施例包括但不限于上述示例,可以理解的是,在本发明实施例的思想指导下,本领域技术人员可以根据实际情况进行设置,本发明对此不作限制。
在本发明实施例中,通过在应用程序开发的过程中,尤其是在通过分类添加新的方法后,提取目标文件类型的目标文件,并根据目标文件的文件标识与文件内容对应用程序的工程文件进行异常检测,避免由于源代码不规范导致应用功能缺失以及程序崩溃的问题,提高了工程文件代码的规范性,保证了应用程序的稳定性。
为了使本领域技术人员更好的理解本发明实施例的技术方案,下面通过一个例子对本发明实施例进行解释:
参考图3,示出了本发明实施例中文件检测的流程示意图,在对工程文件的检测过程中,可以包括如下过程:
S301,遍历工程文件,提取工程文件中特定文件类型的目标文件,并获取各个目标文件的文件名称,其中,目标文件可以为.m、.mm、.a以及.framework等文件;
S302,判断目标文件是否在白名单中,若是,则忽略该文件,返回S301;若否,则执行S303;
S303,判断是否为静态库文件,若是否,则执行S305,若是则执行S304;
S304,执行命令获得静态库文件中对应的符号表,并通过符号表提取静态库文件中所有函数方法的方法名;
S305,提取源代码文件内的所有函数方法的方法名,对于源代码文件,则通过正则表达式获取函数方法的方法名;
S306,判断是否为分类文件,若否,则执行S307,若是,则执行S308;
S307,以目标文件的文件名为Key;
S308,以目标文件的基础名称为Key;
S309,判断该Key下的数组是否存在相同的方法名,若是,则执行S311,若否,则执行S130,并进行下一次遍历。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图4,示出了本发明的一种文件的检测装置实施例的结构框图,具体可以包括如下模块:
工程文件获取模块401,用于获取目标工程文件;
目标文件提取模块402,用于按照预设文件类型,从所述目标工程文件中提取目标文件,所述目标文件包括文件标识与文件内容;
文件检测模块403,用于根据所述文件标识与所述文件内容,对所述目标文件进行检测,生成检测结果,所述检测结果至少包括所述目标文件出现源代码异常的结果。
在本发明的一种可选实施例中,所述预设文件类型至少包括第一文件类型与第二文件类型,所述目标文件提取模块402具体用于:
从所述目标工程文件中,提取文件类型为所述第一文件类型的源代码文件,以及文件类型为所述第二文件类型的静态库文件。
在本发明的一种可选实施例中,所述文件标识包括所述目标文件的文件名以及文件类型,所述文件检测模块403包括:
方法名称获取子模块,用于若所述目标文件的文件名不在预设白名单中,则根据所述文件类型,从所述目标文件的文件内容中提取所述目标文件中的函数方法,并获取所述函数方法的方法名称;
检测结果生成子模块,用于根据所述方法名称,对所述目标文件进行检测,生成检测结果。
在本发明的一种可选实施例中,所述方法名称获取子模块具体用于:
获取针对所述第一文件类型的提取信息;
按照所述提取信息,从所述源代码文件的文件内容中提取函数方法,并获取所述函数方法的方法名称。
在本发明的一种可选实施例中,所述方法名称获取子模块具体用于:
从所述静态库文件的文件内容中提取符号表;
从所述符号表中,提取所述目标文件的函数方法,以及所述函数方法的方法名称。
在本发明的一种可选实施例中,所述文件检测模块还包括:
第一分类文件确定子模块,用于若所述源代码文件中包含预设声明信息,则确定所述源代码文件为分类文件。
在本发明的一种可选实施例中,所述文件检测模块还包括:
第二分类文件确定子模块,用于若所述符号表中包含预设数据格式,则确定所述静态库文件为分类文件。
在本发明的一种可选实施例中,所述根据所述方法名称,对所述目标文件进行检测,生成检测结果,包括:
若所述分类文件中存在相同的方法名称,则输出针对所述目标文件的源代码异常信息。
在本发明的一种可选实施例中,所述检测结果生成子模块具体用于:
以所述分类文件的文件名为数据键,将所述分类文件中的各个方法名称作为所述数据键对应的数据值;
若所述数据键对应的数据值中存在相同的数据值,则输出针对所述目标文件的源代码异常信息。
在本发明的一种可选实施例中,所述检测结果生成子模块具体用于:
若所述目标文件不是分类文件,则以所述目标文件的文件名为数据键,将所述分类文件中的各个方法名称作为所述数据键对应的数据值;
若所述数据键所对应的数据值中存在相同的数据值,则输出针对所述目标文件的源代码异常信息。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本发明实施例还提供了一种电子设备,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行本发明实施例所述的方法。
本发明实施例还提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行本发明实施例所述的方法。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种文件的检测方法和一种文件的检测装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (13)
1.一种文件的检测方法,其特征在于,包括:
获取目标工程文件;
按照预设文件类型,从所述目标工程文件中提取目标文件,所述目标文件包括文件标识与文件内容;
根据所述文件标识与所述文件内容,对所述目标文件进行检测,生成检测结果,所述检测结果至少包括所述目标文件出现源代码异常的结果。
2.根据权利要求1所述的方法,其特征在于,所述预设文件类型至少包括第一文件类型与第二文件类型,所述按照预设文件类型,从所述目标工程文件中提取目标文件,包括:
从所述目标工程文件中,提取文件类型为所述第一文件类型的源代码文件,以及文件类型为所述第二文件类型的静态库文件。
3.根据权利要求2所述的方法,其特征在于,所述文件标识包括所述目标文件的文件名以及文件类型,所述根据所述文件标识与所述文件内容,对所述目标文件进行检测,包括:
若所述目标文件的文件名不在预设白名单中,则根据所述文件类型,从所述目标文件的文件内容中提取所述目标文件中的函数方法,并获取所述函数方法的方法名称;
根据所述方法名称,对所述目标文件进行检测,生成检测结果。
4.根据权利要求3所述的方法,其特征在于,所述根据所述文件类型,从所述目标文件的文件内容中提取所述目标文件中的函数方法,并获取所述函数方法的方法名称,包括:
获取针对所述第一文件类型的提取信息;
按照所述提取信息,从所述源代码文件的文件内容中提取函数方法,并获取所述函数方法的方法名称。
5.根据权利要求3所述的方法,其特征在于,所述根据所述文件类型,从所述目标文件的文件内容中提取所述目标文件中的函数方法,并获取所述函数方法的方法名称,包括:
从所述静态库文件的文件内容中提取符号表;
从所述符号表中,提取所述目标文件的函数方法,以及所述函数方法的方法名称。
6.根据权利要求4所述的方法,其特征在于,所述根据所述方法名称,对所述目标文件进行检测,生成检测结果之前,还包括:
若所述源代码文件中包含预设声明信息,则确定所述源代码文件为分类文件。
7.根据权利要求5所述的方法,其特征在于,所述根据所述方法名称对所述目标文件进行检测,生成检测结果之前,还包括:
若所述符号表中包含预设数据格式,则确定所述静态库文件为分类文件。
8.根据权利要求6或7所述的方法,其特征在于,所述根据所述方法名称,对所述目标文件进行检测,生成检测结果,包括:
若所述分类文件中存在相同的方法名称,则输出针对所述目标文件的源代码异常信息。
9.根据权利要求8所述的方法,其特征在于,所述根据所述方法名称,对所述目标文件进行检测,生成检测结果,包括:
以所述分类文件的文件名为数据键,将所述分类文件中的各个方法名称作为所述数据键对应的数据值;
若所述数据键对应的数据值中存在相同的数据值,则输出针对所述目标文件的源代码异常信息。
10.根据权利要求6或7所述的方法,其特征在于,所述根据所述方法名称,对所述目标文件进行检测,生成检测结果,包括:
若所述目标文件不是分类文件,则以所述目标文件的文件名为数据键,将所述分类文件中的各个方法名称作为所述数据键对应的数据值;
若所述数据键所对应的数据值中存在相同的数据值,则输出针对所述目标文件的源代码异常信息。
11.一种文件的检测装置,其特征在于,包括:
工程文件获取模块,用于获取目标工程文件;
目标文件提取模块,用于按照预设文件类型,从所述目标工程文件中提取目标文件,所述目标文件包括文件标识与文件内容;
文件检测模块,用于根据所述文件标识与所述文件内容,对所述目标文件进行检测,生成检测结果,所述检测结果至少包括所述目标文件出现源代码异常的结果。
12.一种电子设备,其特征在于,包括:
一个或多个处理器;和
其上存储有指令的一个或多个机器可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如权利要求1-10任一项所述的方法。
13.一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010834101.4A CN111782220A (zh) | 2020-08-18 | 2020-08-18 | 一种文件的检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010834101.4A CN111782220A (zh) | 2020-08-18 | 2020-08-18 | 一种文件的检测方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111782220A true CN111782220A (zh) | 2020-10-16 |
Family
ID=72762623
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010834101.4A Pending CN111782220A (zh) | 2020-08-18 | 2020-08-18 | 一种文件的检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111782220A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112925707A (zh) * | 2021-02-25 | 2021-06-08 | 上海华元创信软件有限公司 | Elf二进制库文件符号冲突检测方法、系统及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656561A (zh) * | 2018-10-25 | 2019-04-19 | 北京奇艺世纪科技有限公司 | 一种查重方法及装置 |
CN110347384A (zh) * | 2019-07-17 | 2019-10-18 | 广东科徕尼智能科技有限公司 | 一种基于Object_C语言分类实现多样式弹窗的方法 |
CN110780882A (zh) * | 2019-11-08 | 2020-02-11 | 网易(杭州)网络有限公司 | 代码文件的处理方法及装置、系统、电子设备、存储介质 |
-
2020
- 2020-08-18 CN CN202010834101.4A patent/CN111782220A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109656561A (zh) * | 2018-10-25 | 2019-04-19 | 北京奇艺世纪科技有限公司 | 一种查重方法及装置 |
CN110347384A (zh) * | 2019-07-17 | 2019-10-18 | 广东科徕尼智能科技有限公司 | 一种基于Object_C语言分类实现多样式弹窗的方法 |
CN110780882A (zh) * | 2019-11-08 | 2020-02-11 | 网易(杭州)网络有限公司 | 代码文件的处理方法及装置、系统、电子设备、存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112925707A (zh) * | 2021-02-25 | 2021-06-08 | 上海华元创信软件有限公司 | Elf二进制库文件符号冲突检测方法、系统及介质 |
CN112925707B (zh) * | 2021-02-25 | 2024-03-26 | 上海华元创信软件有限公司 | Elf二进制库文件符号冲突检测方法、系统及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109474488B (zh) | 接口测试方法、装置及计算机设备 | |
CN103257919B (zh) | 脚本程序检查方法和装置 | |
US10049031B2 (en) | Correlation of violating change sets in regression testing of computer software | |
JP2008191963A (ja) | ソースコード検証システム、ソースコード検証方法、およびソースコード検証用プログラム | |
JP2018026135A (ja) | 静的解析警告の効率的な運用のための原因ポイント解析のためのシステム及び方法 | |
CN112596739B (zh) | 一种数据的处理方法和装置 | |
CN110096442B (zh) | 代码调试方法、用户设备、存储介质及装置 | |
Blasi et al. | Replicomment: identifying clones in code comments | |
CN111782220A (zh) | 一种文件的检测方法和装置 | |
CN110286912B (zh) | 代码检测方法、装置及电子设备 | |
CN112084108A (zh) | 一种测试脚本生成方法、装置及相关组件 | |
JP6451417B2 (ja) | デバッグ支援装置、デバッグ支援システム、デバッグ支援方法、および、デバッグ支援プログラム | |
JP2013030017A (ja) | テストプログラム生成方法、テストプログラム生成装置、及びテストプログラム生成プログラム | |
CN107291436B (zh) | Sdk包产生方法、装置及终端 | |
CN106909500B (zh) | 机载软件开发过程中引入错误的检测方法和系统 | |
US11740895B2 (en) | Generation of software program repair explanations | |
CN110515653B (zh) | 文档生成方法、装置、电子设备及计算机可读存储介质 | |
CN111813695A (zh) | 代码检测方法、装置、介质及电子设备 | |
CN113672512A (zh) | 代码检查规则生成方法、代码检查方法、装置、介质 | |
KR102176133B1 (ko) | 소프트웨어 테스트 케이스 자동 생성 방법 및 장치 | |
CN113392016A (zh) | 对程序异常情况处理的规约生成方法、装置、设备及介质 | |
CN116541305B (zh) | 一种异常检测的方法、装置、电子设备及存储介质 | |
CN112035367B (zh) | 一种大数据平台工作流正确性的校验方法及系统 | |
CN111309311B (zh) | 一种漏洞检测工具生成方法、装置、设备及可读存储介质 | |
CN113946347B (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 |