CN103927212A - 自动分析源文件信息的方法及装置 - Google Patents
自动分析源文件信息的方法及装置 Download PDFInfo
- Publication number
- CN103927212A CN103927212A CN201310011128.3A CN201310011128A CN103927212A CN 103927212 A CN103927212 A CN 103927212A CN 201310011128 A CN201310011128 A CN 201310011128A CN 103927212 A CN103927212 A CN 103927212A
- Authority
- CN
- China
- Prior art keywords
- file
- source 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.)
- Granted
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所述的装置,其特征在于,所述代码信息获取模块进一步包括:
冗余信息分析子模块,用于逐个文件逐行搜索以所述未被注释方法名集合中的方法名为后缀的代码,并记录该代码所在行是否有行注释标示、该代码所在方法是否有块注释标示,如果有则将其信息加入非冗余方法集合,否则,将其信息加入冗余方法集合,其中,所述非冗余方法集合包括非冗余方法的名称、个数、行号或行数,所述冗余方法集合包括冗余方法的名称、个数、行号或行数;
冗余信息分析结果存储模块,用于将所述非冗余方法集合以及所述冗余方法集合存储于所述代码信息集合。
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 true CN103927212A (zh) | 2014-07-16 |
CN103927212B 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) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789058A (zh) * | 2016-12-09 | 2017-05-31 | 南京理工大学 | 一种代理重加密算法描述及解析方法 |
CN107992265A (zh) * | 2016-10-27 | 2018-05-04 | 中兴通讯股份有限公司 | 一种应用程序的源文件的检验方法及装置 |
CN109656561A (zh) * | 2018-10-25 | 2019-04-19 | 北京奇艺世纪科技有限公司 | 一种查重方法及装置 |
CN110795069A (zh) * | 2018-08-02 | 2020-02-14 | Tcl集团股份有限公司 | 代码分析方法、智能终端及计算机可读存储介质 |
CN114443128A (zh) * | 2020-10-30 | 2022-05-06 | 北京字节跳动网络技术有限公司 | 一种语言元素分析方法、装置、电子设备和存储介质 |
Citations (5)
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 |
-
2013
- 2013-01-11 CN CN201310011128.3A patent/CN103927212B/zh active Active
Patent Citations (5)
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 | 鸿富锦精密工业(深圳)有限公司 | 代码统计系统及方法 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107992265A (zh) * | 2016-10-27 | 2018-05-04 | 中兴通讯股份有限公司 | 一种应用程序的源文件的检验方法及装置 |
CN106789058A (zh) * | 2016-12-09 | 2017-05-31 | 南京理工大学 | 一种代理重加密算法描述及解析方法 |
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 | 北京奇艺世纪科技有限公司 | 一种查重方法及装置 |
CN114443128A (zh) * | 2020-10-30 | 2022-05-06 | 北京字节跳动网络技术有限公司 | 一种语言元素分析方法、装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103927212B (zh) | 2018-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Trisovic et al. | A large-scale study on research code quality and execution | |
Gobeille | The fossology project | |
US8370799B2 (en) | Provision of code base modification using automatic learning of code changes | |
CN103927212A (zh) | 自动分析源文件信息的方法及装置 | |
US20090204617A1 (en) | Content acquisition system and method of implementation | |
CN102012857B (zh) | 一种对Web页面进行自动化测试的装置及方法 | |
CN110716866A (zh) | 代码质量扫描方法、装置、计算机设备及存储介质 | |
CN109918076A (zh) | 代码文件处理方法、系统、计算机设备及可读存储介质 | |
CN106599167A (zh) | 一种支持增量升级数据库的系统和方法 | |
CN100456292C (zh) | 合并电子文档的多个不同版本的方法和装置 | |
CN106919501A (zh) | 基于缺陷模式的静态分析方法和工具 | |
US11500619B1 (en) | Indexing and accessing source code snippets contained in documents | |
US11120005B2 (en) | Reliable workflow system provenance tracking at runtime | |
JP2021140430A (ja) | データベースマイグレーション方法、データベースマイグレーションシステム、及びデータベースマイグレーションプログラム | |
CN116756173A (zh) | 一种数据库转换方法、装置、设备、介质及程序产品 | |
CN117236304A (zh) | 一种基于模板配置的Excel通用导入的实现方法 | |
Curado Malta et al. | State of the art on methodologies for the development of a metadata application profile | |
CN112597040B (zh) | 一种界面自动化测试方法、装置及电子设备 | |
Nai et al. | ITH: An open database on Italian tenders 2016–2023 | |
Monaco | Methods for in-sourcing authority control with MarcEdit, SQL, and regular expressions | |
Bhalerao et al. | Hybrid agile project management practices: Novel approach for improving project management | |
CN117112021B (zh) | 路由配置生成方法、装置、设备及计算机可读存储介质 | |
CN117493712B (zh) | Pdf文档可导航目录提取方法、装置、电子设备及存储介质 | |
CN112445391B (zh) | 一种服务数据生成方法、装置和计算机可读存储介质 | |
Mane et al. | AMELIORATED METHODOLOGY FOR AUTOMATIC IRRIGATION & CROP PREDICTION SYSTEM |
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 |