CN103927212B - 自动分析源文件信息的方法及装置 - Google Patents

自动分析源文件信息的方法及装置 Download PDF

Info

Publication number
CN103927212B
CN103927212B CN201310011128.3A CN201310011128A CN103927212B CN 103927212 B CN103927212 B CN 103927212B CN 201310011128 A CN201310011128 A CN 201310011128A CN 103927212 B CN103927212 B CN 103927212B
Authority
CN
China
Prior art keywords
source file
file
legal
source
information
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.)
Active
Application number
CN201310011128.3A
Other languages
English (en)
Other versions
CN103927212A (zh
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 CN201310011128.3A priority Critical patent/CN103927212B/zh
Publication of CN103927212A publication Critical patent/CN103927212A/zh
Application granted granted Critical
Publication of CN103927212B publication Critical patent/CN103927212B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种自动分析源文件信息的方法及装置,所述方法包括:读取包含有源代码的源文件或源文件包;通过分析所述源文件或源文件包中的子文件的后缀名,判断所述源文件或源文件包中的子文件的语言类型以及合法性并获取源文件信息集合;通过与所述源文件或源文件包中的子文件的语言类型对应的语法规则,判断合法的源文件或者源文件包中的合法子文件是否为合法的类文件,获取类文件信息集合;通过解析合法的类文件中的代码,获取代码信息集合;输出所述源文件信息集合、所述类文件信息集合、所述代码信息集合。本发明能够在系统接收或查找到文件包后自动扫描文件并得到源文件的相关信息,提高了效率,降低了成本。

Description

自动分析源文件信息的方法及装置
技术领域
本发明涉及计算机技术领域,特别涉及一种自动分析源文件信息的方法及装置。
背景技术
随着计算机技术的快速发展,在实际工作过程中需要对越来越多的源文件或者源文件包进行分析,现有的分析方法往往采用的是人工分析方法,但是,人工分析方法不仅效率很低而且人工成本和时间成本都很高。
发明内容
本发明的目的在于,提供一种有效的自动分析源文件信息的方法及装置。
本发明实施方式提供一种自动分析源文件信息的方法,包括:读取包含有源代码的源文件或源文件包;通过分析所述源文件或源文件包中的子文件的后缀名,判断所述源文件或源文件包中的子文件的语言类型以及合法性并获取源文件信息集合;通过解析合法的类文件中的代码,获取代码信息集合;输出所述源文件信息集合、所述类文件信息集合、所述代码信息集合。
本发明另一种实施方式提供一种自动分析源文件信息的装置,包括:读取模块,用于读取包含有源代码的源文件或源文件包;源文件信息获取模块,用于通过分析所述源文件或源文件包中的子文件的后缀名,判断所述源文件或源文件包中的子文件的语言类型以及合法性并获取源文件信息集合;类文件信息获取模块,用于通过与所述源文件或源文件包中的子文件的语言类型对应的语法规则,判断合法的源文件或者源文件包中的合法子文件是否为合法的类文件,获取类文件信息集合;代码信息获取模块,用于通过解析合法的类文件中的代码,获取代码信息集合;输出模块,用于输出所述源文件信息集合、所述类文件信息集合、所述代码信息集合。
与现有技术相比,本发明实施方式提供的自动分析源文件信息的方法及装置可以在系统接收或查找到文件或文件包后开始扫描文件,通过分析所述源文件或源文件包中的子文件的后缀名,判断所述源文件或源文件包中的子文件的语言类型以及合法性并获取源文件信息集合、通过与所述源文件或源文件包中的子文件的语言类型对应的语法规则,判断合法的源文件或者源文件包中的合法子文件是否为合法的类文件,获取类文件信息集合、通过解析合法的类文件中的代码,获取代码信息集合这几个步骤得到源文件的相关信息,例如,包括语言类型、合法源文件的名称及个数,非源文件的名称及个数,合法类文件的名称及个数,所述非类文件的名称及个数,已被注释的方法名称、个数、行号或者行数,未被注释的方法名称、个数、行号或行数,非冗余方法的名称、个数、行号或行数,冗余方法的名称、个数、行号或行数,进而可以根据这些信息得到更多的源文件信息。解决了现有技术通过人工分析源文件过程中效率低、成本高的问题,有效的提高了效率,降低了成本。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例1提供的一种自动分析源文件信息的方法的流程图。
图2是图1中步骤S12的具体流程图。
图3是图1中步骤S13的具体流程图。
图4是图1中步骤S14的具体流程图。
图5是本发明实施例2提供的一种自动分析源文件信息的装置的结构图。
图6是图5中源文件信息获取模块12的具体结构图。
图7是图5中类文件信息获取模块13的具体结构图。
图8是图5中代码信息获取模块14的具体结构图。
具体实施方式
为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的自动分析源文件信息的方法及装置其具体实施方式、方法、步骤、结构、特征及其功效,详细说明如下。
有关本发明的前述及其他技术内容、特点及功效,在以下配合参考图式的较佳实施例的详细说明中将可清楚呈现。通过具体实施方式的说明,当可对本发明为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图式仅是提供参考与说明之用,并非用来对本发明加以限制。
请参考图1,图1是本发明实施例1提供的一种自动分析源文件信息的方法的流程图。于本实施例中,自动分析源文件信息的方法包括:
步骤S11,读取包含有源代码的源文件或源文件包。
于读取包含有源代码的源文件或源文件包前,首先提供用户接口,用于接收输入的源文件或源文件包。这里所说的源文件可以是浏览上传的本地文件,也可以是根据地址进行自动查找添加等,也就是说接口的形式不限。
步骤S12,通过分析所述源文件或源文件包中的子文件的后缀名,判断所述源文件或源文件包中的子文件的语言类型以及合法性并获取源文件信息集合。
请参照图2,于此步骤中,进一步可以包括以下步骤:
步骤S121:分析所述源文件或所述源文件包中的子文件的后缀名得到文件类型的占比,将占比最多的类型设定为所述源文件或所述源文件包的子文件的语言类型。
例如,以文件后缀名为依据,比如java程序文件名需要以“.java”为后缀,python程序文件名需要以“.py”为后缀,等等,以此类推其他类型语言。计算得出文件类型占比,占比最多的类型即设定为该源文件或者源文件包的子文件的语言类型。
步骤S122:将所述语言类型存储于所述源文件信息集合。
步骤S123:打开当前源文件或源文件包中的子文件,根据所述当前源文件或源文件包中的子文件的后缀名判断其是否是合法的源文件,如果是合法的源文件则将其信息加入至合法源文件名集合,否则,将其信息加入至非源文件名集合并停止分析所述当前源文件或源文件包的子文件,扫描下一个被所述接口接收的文件,所述合法源文件名集合包括合法源文件的名称及个数,所述非源文件名集合包括所述非源文件的名称及个数。判断当前源文件或源文件包中的子文件是否是合法的源文件主要依据是文件的后缀是否属于该源文件或者源文件包的子文件的语言类型,也就是占比最多的语言类型。例如,通过遍历文件后缀名,计算出不同后缀名的文件占比,如果是“.java”后缀名文件居多,设定该源文件或源文件包中的子文件的语言类型为java,判断当前源文件或源文件包中的子文件是否是合法的源文件也就是判断文件后缀是否为“.java”,逐个遍历文件,以“.java”为后缀的文件可以初步认定是合法的源文件。
步骤S124:将所述合法源文件名集合以及所述非源文件名集合存储于所述源文件信息集合。
步骤S13:通过与所述源文件或源文件包中的子文件的语言类型对应的语法规则,判断合法的源文件或者源文件包中的合法子文件是否为合法的类文件,获取类文件信息集合。
请参照图3,具体的,于步骤S13中,进一步可以包括以下步骤:
步骤S131:打开当前合法源文件或源文件包中的合法子文件,通过与所述源文件或源文件包中的子文件的语言类型对应的语法规则判断其是否是合法的类文件,如果是合法的类文件则将其信息加入至合法类文件名集合,否则,将其信息加入至非类文件名集合并停止分析所述当前合法源文件或源文件包中的合法子文件,扫描下一个合法源文件或者源文件包中的合法子文件,所述合法类文件名集合包括所述合法类文件的名称及个数,所述非类文件名集合包括所述非类文件的名称及个数。
具体的分析过程可以以各编程语言的语法规则为依据,如java程序分析是否是合法类文件需要满足a)、b)条件:a)至少有一行内容同时包含“class”和“{”关键字,满足则继续,反之终止;b)行内容符合要求:“以一个或多个空格开头,加0到1个’public’,加1到任意个空格,加0到1个’final’,加1到任意个空格,加1个’class’,加1到任意个空格,加任意个字母,加1到任意个空格,加0到1个’extends’,加1到任意个空格,加任意个字母,加1到任意个空格,加0到1个’implements’,加1到任意个空格,加任意个字母,加1个‘{’”。其他类型语言的分析也可以依照此类方法进行,这里不再赘述。
步骤S132:将所述合法类文件名集合以及所述非类文件名集合存储于所述类文件信息集合。
步骤S14:通过解析合法的类文件中的代码,获取代码信息集合。
请参照图4,于步骤S14中进一步可以包括以下步骤:
步骤S141,打开当前合法类文件,通过与所述源文件或源文件包中的子文件的语言类型对应的语法规则判断所述合法类文件中的方法是否是合法的方法,如果是合法的方法则将其信息加入至合法方法名集合,否则,将其信息加入至非方法名集合并停止分析当前行,扫描下一行。
具体的分析过程可以以各编程语言的语法规则为依据,如java程序判断是否是合法方法需要至少有一行内容符合双引号内要求:“以一个或多个空格开头,加0到1个’public’或0到1个‘private’或0到1个‘protected’,加0到1个‘final’或0到1个‘static’,加1个‘void’或1个‘int’或1个‘char’或1个‘double’或1个其他基本数据类型或类类型,加1到任意个空格,加任意个字母,加1个‘(’,加0到任意个字母,加1个‘)’,加1个‘{’”。满足则取出该行中“以空格开头,以‘(’为结尾”之间的单词加入方法名集合B准备下一步分析,反之终止,扫描下一行。其他类型语言的分析也可以依照此类方法进行,这里不再赘述。
步骤S142,将所述合法方法名集合以及所述非方法名集合存储于所述代码信息集合。
步骤S143,判断所述合法方法名集合中的每个方法声明所在行是否有行注释标识符,如果有则终止对当前方法的分析并将其信息加入已被注释方法集合,扫描下一个方法,否则,将所述其信息加入未被注释方法名集合,所述已被注释方法集合包括已被注释的方法名称、个数、行号或者行数,所述未被注释方法集合包括未被注释的方法名称、个数、行号或行数。
步骤S144,判断所述未被注释方法名集合中的每个方法所在行的上一行是否有块注释标识符,如果有则终止对当前方法的分析并将其信息加入至所述已被注释方法名集合,扫描下一个方法。
步骤S145,将所述已被注释方法集合以及所述未被注释方法集合存储于所述代码信息集合。
步骤S146,逐个文件逐行搜索以所述未被注释方法名集合中的方法名为后缀的代码,并记录该代码所在行是否有行注释标示、该代码所在方法是否有块注释标示,如果有则将其信息加入非冗余方法集合,否则,将其信息加入冗余方法集合,其中,所述非冗余方法集合包括非冗余方法的名称、个数、行号或行数,所述冗余方法集合包括冗余方法的名称、个数、行号或行数。
步骤S147,将所述非冗余方法集合以及所述冗余方法集合存储于所述代码信息集合。
步骤S146实质上也是检验未被注释方法名集合中的方法是否被类文件调用过,如果是,则认为当前方法为非冗余的方法,如果否,则认为当前的方法为冗余的方法。例如,可以逐个文件逐行搜索未被注释方法名集合中的“.方法名1”、“.方法名2”、.“方法名N”…等关键字,找到匹配结果后分析该句代码所在行是否有行注释标示、该句代码所在方法是否有块注释标示。由此,还可以得到调用指定方法所在类文件、调用指定方法所在方法名、调用指定方法所在行号等信息。
步骤S15:输出所述源文件信息集合、所述类文件信息集合、所述代码信息集合。最后,输出所有分析结果的合集,分析结果包括上面提到的源文件或所述源文件包的子文件的语言类型,所述合法源文件名集合所包括的合法源文件的名称及个数,所述非源文件名集合所包括的所述非源文件的名称及个数,所述合法类文件名集合所包括的所述合法类文件的名称及个数,所述非类文件名集合所包括的所述非类文件的名称及个数,所述已被注释方法集合所包括的已被注释的方法名称、个数、行号或者行数,所述未被注释方法集合所包括的未被注释的方法名称、个数、行号或行数,所述非冗余方法集合所包括的非冗余方法的名称、个数、行号或行数,所述冗余方法集合所包括的冗余方法的名称、个数、行号或行数。继而还可以根据这些信息推算得出其他相关信息,这里不再一一列举。
也就是说,本实施提供的自动分析源文件信息的方法可以在系统接收或查找到文件或文件包后开始扫描文件,通过分析所述源文件或源文件包中的子文件的后缀名,判断所述源文件或源文件包中的子文件的语言类型以及合法性并获取源文件信息集合、通过与所述源文件或源文件包中的子文件的语言类型对应的语法规则,判断合法的源文件或者源文件包中的合法子文件是否为合法的类文件,获取类文件信息集合、通过解析合法的类文件中的代码,获取代码信息集合这几个步骤得到源文件的相关信息,例如,包括语言类型、合法源文件的名称及个数,非源文件的名称及个数,合法类文件的名称及个数,所述非类文件的名称及个数,已被注释的方法名称、个数、行号或者行数,未被注释的方法名称、个数、行号或行数,非冗余方法的名称、个数、行号或行数,冗余方法的名称、个数、行号或行数,进而可以根据这些信息得到更多的源文件信息。解决了现有技术通过人工分析源文件过程中效率低、成本高的问题,有效的提高了效率,降低了成本。
请参照图5,图5是本发明实施例2提供的一种自动分析源文件信息的装置的结构图。于本实施例中,自动分析源文件信息的装置10包括:读取模块11、源文件信息获取模块12、类文件信息获取模块13、代码信息获取模块14以及输出模块15。
其中,读取模块11用于读取包含有源代码的源文件或源文件包。
源文件信息获取模块12用于通过分析所述源文件或源文件包中的子文件的后缀名,判断所述源文件或源文件包中的子文件的语言类型以及合法性并获取源文件信息集合。
类文件信息获取模块13用于通过与所述源文件或源文件包中的子文件的语言类型对应的语法规则,判断合法的源文件或者源文件包中的合法子文件是否为合法的类文件,获取类文件信息集合。
代码信息获取模块14用于通过解析合法的类文件中的代码,获取代码信息集合。
输出模块15用于输出所述源文件信息集合、所述类文件信息集合、所述代码信息集合。
所述装置10进一步还可以包括一个接口16,用于接收输入的源文件或源文件包。
请参照图6,所述源文件信息获取模块12包括:类型分析模块121,用于分析所述源文件或所述源文件包中的子文件的后缀名得到文件类型的占比,将占比最多的类型设定为所述源文件或所述源文件包的子文件的语言类型;语言类型存储模块122,用于将所述语言类型存储于所述源文件信息集合。
进一步的,所述源文件信息获取模块12还包括:源文件分析子模块123用于打开当前源文件或源文件包中的子文件,根据所述当前源文件或源文件包中的子文件的后缀名判断其是否是合法的源文件,如果是合法的源文件则将其信息加入至合法源文件名集合,否则,将其信息加入至非源文件名集合并停止分析所述当前源文件或源文件包的子文件,扫描下一个被所述接口接收的文件,所述合法源文件名集合包括合法源文件的名称及个数,所述非源文件名集合包括所述非源文件的名称及个数。所述源文件分析结果存储模块124用于将所述合法源文件名集合以及所述非源文件名集合存储于所述源文件信息集合。
请参照图7,类文件信息获取模块13包括:类文件分析子模块131用于打开当前合法源文件或源文件包中的合法子文件,通过与所述源文件或源文件包中的子文件的语言类型对应的语法规则判断其是否是合法的类文件,如果是合法的类文件则将其信息加入至合法类文件名集合,否则,将其信息加入至非类文件名集合并停止分析所述当前合法源文件或源文件包中的合法子文件,扫描下一个合法源文件或者源文件包中的合法子文件,所述合法类文件名集合包括所述合法类文件的名称及个数,所述非类文件名集合包括所述非类文件的名称及个数;类文件分析结果存储模块132用于存储所述合法类文件名集合以及所述非类文件名集合。
请参照图8,所述代码信息获取模块14包括:方法分析子模块141、方法分析结果存储模块142,行注释分析子模块143、块注释分析子模块144、注释分析结果存储模块145、冗余信息分析子模块146、冗余信息分析结果存储模块147。
方法分析子模块141用于打开当前合法类文件,通过与所述源文件或源文件包中的子文件的语言类型对应的语法规则判断所述合法类文件中的方法是否是合法的方法,如果是合法的方法则将其信息加入至合法方法名集合,否则,将其信息加入至非方法名集合并停止分析当前行,扫描下一行。方法分析结果存储模块142用于将所述合法方法名集合以及所述非方法名集合存储于所述代码信息集合。
行注释分析子模块143用于判断所述合法方法名集合中的每个方法声明所在行是否有行注释标识符,如果有则终止对当前方法的分析并将其信息加入已被注释方法集合,扫描下一个方法,否则,将所述其信息加入未被注释方法名集合,所述已被注释方法集合包括已被注释的方法名称、个数、行号或者行数,所述未被注释方法集合包括未被注释的方法名称、个数、行号或行数。
块注释分析子模块144用于判断所述未被注释方法名集合中的每个方法所在行的上一行是否有块注释标识符,如果有则终止对当前方法的分析并将其信息加入至所述已被注释方法名集合,扫描下一个方法。
注释分析结果存储模块145用于将所述已被注释方法集合以及所述未被注释方法集合存储于所述代码信息集合。
冗余信息分析子模块146用于逐个文件逐行搜索以所述未被注释方法名集合中的方法名为后缀的代码,并记录该代码所在行是否有行注释标示、该代码所在方法是否有块注释标示,如果有则将其信息加入非冗余方法集合,否则,将其信息加入冗余方法集合,其中,所述非冗余方法集合包括非冗余方法的名称、个数、行号或行数,所述冗余方法集合包括冗余方法的名称、个数、行号或行数。
冗余信息分析结果存储模块147用于将所述非冗余方法集合以及所述冗余方法集合存储于所述代码信息集合。
本实施提供的自动分析源文件信息的装置可以在系统接收或查找到文件或文件包后开始扫描文件,通过分析所述源文件或源文件包中的子文件的后缀名,判断所述源文件或源文件包中的子文件的语言类型以及合法性并获取源文件信息集合、通过与所述源文件或源文件包中的子文件的语言类型对应的语法规则,判断合法的源文件或者源文件包中的合法子文件是否为合法的类文件,获取类文件信息集合、通过解析合法的类文件中的代码,获取代码信息集合这几个步骤得到源文件的相关信息,例如,包括语言类型、合法源文件的名称及个数,非源文件的名称及个数,合法类文件的名称及个数,所述非类文件的名称及个数,已被注释的方法名称、个数、行号或者行数,未被注释的方法名称、个数、行号或行数,非冗余方法的名称、个数、行号或行数,冗余方法的名称、个数、行号或行数,进而可以根据这些信息得到更多的源文件信息。解决了现有技术通过人工分析源文件过程中效率低、成本高的问题,有效的提高了效率,降低了成本。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (16)

1.一种自动分析源文件信息的方法,其特征在于,包括:
读取包含有源代码的源文件或源文件包;
通过分析所述源文件或源文件包中的子文件的后缀名,判断所述源文件或源文件包中的子文件的语言类型以及合法性并获取源文件信息集合;
通过与所述源文件或源文件包中的子文件的语言类型对应的语法规则,判断合法的源文件或者源文件包中的合法子文件是否为合法的类文件,获取类文件信息集合;
通过解析合法的类文件中的代码,获取代码信息集合;
输出所述源文件信息集合、所述类文件信息集合、所述代码信息集合。
2.根据权利要求1所述的方法,其特征在于,所述读取包含有源代码的源文件或源文件包之前进一步包括:
提供接口,用于接收输入的源文件或源文件包。
3.根据权利要求1所述的方法,其特征在于,所述通过分析所述源文件或源文件包中的子文件的后缀名,判断所述源文件或源文件包中的子文件的语言类型以及合法性并获取源文件信息集合的步骤,包括:
分析所述源文件或所述源文件包中的子文件的后缀名得到文件类型的占比,将占比最多的类型设定为所述源文件或所述源文件包的子文件的语言类型;
将所述语言类型存储于所述源文件信息集合。
4.根据权利要求3所述的方法,其特征在于,所述通过分析所述源文件或源文件包中的子文件的后缀名,判断所述源文件或源文件包中的子文件的语言类型以及合法性并获取源文件信息集合的步骤,进一步包括:
打开当前源文件或源文件包中的子文件,根据所述当前源文件或源文件包中的子文件的后缀名判断其是否是合法的源文件,如果是合法的源文件则将其信息加入至合法源文件名集合,否则,将其信息加入至非源文件名集合并停止分析所述当前源文件或源文件包的子文件,扫描下一个被接口接收的文件,所述合法源文件名集合包括合法源文件的名称及个数,所述非源文件名集合包括所述非源文件的名称及个数;
将所述合法源文件名集合以及所述非源文件名集合存储于所述源文件信息集合。
5.根据权利要求1所述的方法,其特征在于,所述通过与所述源文件或源文件包中的子文件的语言类型对应的语法规则,判断合法的源文件或者源文件包中的合法子文件是否为合法的类文件,获取类文件信息集合的步骤,包括:
打开当前合法源文件或源文件包中的合法子文件,通过与所述源文件或源文件包中的子文件的语言类型对应的语法规则判断其是否是合法的类文件,如果是合法的类文件则将其信息加入至合法类文件名集合,否则,将其信息加入至非类文件名集合并停止分析所述当前合法源文件或源文件包中的合法子文件,扫描下一个合法源文件或者源文件包中的合法子文件,所述合法类文件名集合包括所述合法类文件的名称及个数,所述非类文件名集合包括所述非类文件的名称及个数;
将所述合法类文件名集合以及所述非类文件名集合存储于所述类文件信息集合。
6.根据权利要求1所述的方法,其特征在于,所述通过解析合法的类文件中的代码,获取代码信息集合的步骤,包括:
打开当前合法类文件,通过与所述源文件或源文件包中的子文件的语言类型对应的语法规则判断所述合法类文件中的方法是否是合法的方法,如果是合法的方法则将其信息加入至合法方法名集合,否则,将其信息加入至非方法名集合并停止分析当前行,扫描下一行;
将所述合法方法名集合以及所述非方法名集合存储于所述代码信息集合。
7.根据权利要求6所述的方法,其特征在于,所述通过解析合法的类文件中的代码,获取代码信息集合的步骤,进一步包括:
判断所述合法方法名集合中的每个方法声明所在行是否有行注释标识符,如果有则终止对当前方法的分析并将其信息加入已被注释方法集合,扫描下一个方法,否则,将所述其信息加入未被注释方法名集合,所述已被注释方法集合包括已被注释的方法名称、个数、行号或者行数,所述未被注释方法集合包括未被注释的方法名称、个数、行号或行数;
判断所述未被注释方法名集合中的每个方法所在行的上一行是否有块注释标识符,如果有则终止对当前方法的分析并将其信息加入至所述已被注释方法名集合,扫描下一个方法;
将所述已被注释方法集合以及所述未被注释方法集合存储于所述代码信息集合。
8.根据权利要求7所述的方法,其特征在于,所述通过解析合法的类文件中的代码,获取代码信息集合的步骤,进一步包括:
逐个文件逐行搜索以所述未被注释方法名集合中的方法名为后缀的代码,并记录该代码所在行是否有行注释标示、该代码所在方法是否有块注释标示,如果有则将其信息加入非冗余方法集合,否则,将其信息加入冗余方法集合,其中,所述非冗余方法集合包括非冗余方法的名称、个数、行号或行数,所述冗余方法集合包括冗余方法的名称、个数、行号或行数;
将所述非冗余方法集合以及所述冗余方法集合存储于所述代码信息集合。
9.一种自动分析源文件信息的装置,其特征在于,包括:
读取模块,用于读取包含有源代码的源文件或源文件包;
源文件信息获取模块,用于通过分析所述源文件或源文件包中的子文件的后缀名,判断所述源文件或源文件包中的子文件的语言类型以及合法性并获取源文件信息集合;
类文件信息获取模块,用于通过与所述源文件或源文件包中的子文件的语言类型对应的语法规则,判断合法的源文件或者源文件包中的合法子文件是否为合法的类文件,获取类文件信息集合;
代码信息获取模块,用于通过解析合法的类文件中的代码,获取代码信息集合;
输出模块,用于输出所述源文件信息集合、所述类文件信息集合、所述代码信息集合。
10.根据权利要求9所述的装置,其特征在于,所述装置进一步包括:
接口,用于接收输入的源文件或源文件包。
11.根据权利要求9所述的装置,其特征在于,所述源文件信息获取模块包括:
类型分析模块,用于分析所述源文件或所述源文件包中的子文件的后缀名得到文件类型的占比,将占比最多的类型设定为所述源文件或所述源文件包的子文件的语言类型;
语言类型存储模块,用于将所述语言类型存储于所述源文件信息集合。
12.根据权利要求11所述的装置,其特征在于,所述源文件信息获取模块,进一步包括:
源文件分析子模块,用于打开当前源文件或源文件包中的子文件,根据所述当前源文件或源文件包中的子文件的后缀名判断其是否是合法的源文件,如果是合法的源文件则将其信息加入至合法源文件名集合,否则,将其信息加入至非源文件名集合并停止分析所述当前源文件或源文件包的子文件,扫描下一个被接口接收的文件,所述合法源文件名集合包括合法源文件的名称及个数,所述非源文件名集合包括所述非源文件的名称及个数;
源文件分析结果存储模块,用于将所述合法源文件名集合以及所述非源文件名集合存储于所述源文件信息集合。
13.根据权利要求9所述的装置,其特征在于,所述类文件信息获取模块包括:
类文件分析子模块,用于打开当前合法源文件或源文件包中的合法子文件,通过与所述源文件或源文件包中的子文件的语言类型对应的语法规则判断其是否是合法的类文件,如果是合法的类文件则将其信息加入至合法类文件名集合,否则,将其信息加入至非类文件名集合并停止分析所述当前合法源文件或源文件包中的合法子文件,扫描下一个合法源文件或者源文件包中的合法子文件,所述合法类文件名集合包括所述合法类文件的名称及个数,所述非类文件名集合包括所述非类文件的名称及个数;
类文件分析结果存储模块,用于将所述合法类文件名集合以及所述非类文件名集合存储于所述类文件信息集合。
14.根据权利要求9所述的装置,其特征在于,所述代码信息获取模块包括:
方法分析子模块,用于打开当前合法类文件,通过与所述源文件或源文件包中的子文件的语言类型对应的语法规则判断所述合法类文件中的方法是否是合法的方法,如果是合法的方法则将其信息加入至合法方法名集合,否则,将其信息加入至非方法名集合并停止分析当前行,扫描下一行;
方法分析结果存储模块,用于将所述合法方法名集合以及所述非方法名集合存储于所述代码信息集合。
15.根据权利要求14所述的装置,其特征在于,所述代码信息获取模块进一步包括:
行注释分析子模块,用于判断所述合法方法名集合中的每个方法声明所在行是否有行注释标识符,如果有则终止对当前方法的分析并将其信息加入已被注释方法集合,扫描下一个方法,否则,将所述其信息加入未被注释方法名集合,所述已被注释方法集合包括已被注释的方法名称、个数、行号或者行数,所述未被注释方法集合包括未被注释的方法名称、个数、行号或行数;
块注释分析子模块,用于判断所述未被注释方法名集合中的每个方法所在行的上一行是否有块注释标识符,如果有则终止对当前方法的分析并将其信息加入至所述已被注释方法名集合,扫描下一个方法;
注释分析结果存储模块,用于将所述已被注释方法集合以及所述未被注释方法集合存储于所述代码信息集合。
16.根据权利要求15所述的装置,其特征在于,所述代码信息获取模块进一步包括:
冗余信息分析子模块,用于逐个文件逐行搜索以所述未被注释方法名集合中的方法名为后缀的代码,并记录该代码所在行是否有行注释标示、该代码所在方法是否有块注释标示,如果有则将其信息加入非冗余方法集合,否则,将其信息加入冗余方法集合,其中,所述非冗余方法集合包括非冗余方法的名称、个数、行号或行数,所述冗余方法集合包括冗余方法的名称、个数、行号或行数;
冗余信息分析结果存储模块,用于将所述非冗余方法集合以及所述冗余方法集合存储于所述代码信息集合。
CN201310011128.3A 2013-01-11 2013-01-11 自动分析源文件信息的方法及装置 Active CN103927212B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310011128.3A CN103927212B (zh) 2013-01-11 2013-01-11 自动分析源文件信息的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310011128.3A CN103927212B (zh) 2013-01-11 2013-01-11 自动分析源文件信息的方法及装置

Publications (2)

Publication Number Publication Date
CN103927212A CN103927212A (zh) 2014-07-16
CN103927212B true CN103927212B (zh) 2018-06-12

Family

ID=51145441

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310011128.3A Active CN103927212B (zh) 2013-01-11 2013-01-11 自动分析源文件信息的方法及装置

Country Status (1)

Country Link
CN (1) CN103927212B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107992265A (zh) * 2016-10-27 2018-05-04 中兴通讯股份有限公司 一种应用程序的源文件的检验方法及装置
CN106789058B (zh) * 2016-12-09 2020-11-13 南京理工大学 一种代理重加密算法描述及解析方法
CN110795069A (zh) * 2018-08-02 2020-02-14 Tcl集团股份有限公司 代码分析方法、智能终端及计算机可读存储介质
CN109656561A (zh) * 2018-10-25 2019-04-19 北京奇艺世纪科技有限公司 一种查重方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1395171A (zh) * 2001-07-06 2003-02-05 华为技术有限公司 一种计算机软件程序的代码统计工具及其实现方法
CN1510569A (zh) * 2002-12-23 2004-07-07 华为技术有限公司 一种源代码中硬编码字符串的提取和集中方法
CN101017458A (zh) * 2007-03-02 2007-08-15 北京邮电大学 基于源代码静态分析的软件安全代码分析器及其检测方法
CN101582072A (zh) * 2008-05-16 2009-11-18 鸿富锦精密工业(深圳)有限公司 代码统计系统及方法
US8132154B2 (en) * 2007-10-04 2012-03-06 International Business Machines Corporation Displaying comment statistics information

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1395171A (zh) * 2001-07-06 2003-02-05 华为技术有限公司 一种计算机软件程序的代码统计工具及其实现方法
CN1510569A (zh) * 2002-12-23 2004-07-07 华为技术有限公司 一种源代码中硬编码字符串的提取和集中方法
CN101017458A (zh) * 2007-03-02 2007-08-15 北京邮电大学 基于源代码静态分析的软件安全代码分析器及其检测方法
US8132154B2 (en) * 2007-10-04 2012-03-06 International Business Machines Corporation Displaying comment statistics information
CN101582072A (zh) * 2008-05-16 2009-11-18 鸿富锦精密工业(深圳)有限公司 代码统计系统及方法

Also Published As

Publication number Publication date
CN103927212A (zh) 2014-07-16

Similar Documents

Publication Publication Date Title
US10394925B2 (en) Automating web tasks based on web browsing histories and user actions
US8335779B2 (en) Method and apparatus for gathering, categorizing and parameterizing data
CN103927212B (zh) 自动分析源文件信息的方法及装置
US20090204617A1 (en) Content acquisition system and method of implementation
US20140013205A1 (en) Methods for matching xml documents
CN103186639B (zh) 数据生成方法及系统
US20140222822A1 (en) Content revision using question and answer generation
CN102012857B (zh) 一种对Web页面进行自动化测试的装置及方法
TW201520813A (zh) 惡意程式清除之行動內容資料管理裝置和方法
CN106982150A (zh) 一种基于Hadoop的移动互联网用户行为分析方法
CN1526104A (zh) 分析结构化数据
CN104915262A (zh) 一种基于excel数据结构的校验系统及其方法
CN105808417A (zh) 自动化测试方法及代理服务器
CN101630315B (zh) 一种快速检索方法及系统
CN109918076A (zh) 代码文件处理方法、系统、计算机设备及可读存储介质
CN106469049A (zh) 一种文件扫描的方法及装置
CN106528794A (zh) 一种基于档案管理系统的电子文件归档方法
CN106055546A (zh) 基于Lucene的光盘库全文检索系统
Chaturvedi et al. Web service slicing: Intra and inter-operational analysis to test changes
WO2017092355A1 (zh) 一种数据服务系统
CN102945160A (zh) 一种不依赖于规则配置的导入excel数据的通用方法
CN104216986A (zh) 以数据更新周期进行预操作提高数据查询效率的装置及方法
CN104392506B (zh) 一种支持多终端平台的水电站水工巡检数据同步和数据管理方法
Di Lucca et al. Towards a better comprehensibility of web applications: Lessons learned from reverse engineering experiments
CN107463690B (zh) 一种实现快速链接的方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant