统计Java源文件代码行数的方法及系统技术方案

技术编号:26504056 阅读:19 留言:0更新日期:2020-11-27 15:31
本发明专利技术公开一种统计Java源文件代码行数的方法及系统,包括如下步骤:(1)当Java虚拟机开始加载类文件,实时获取已被加载的类文件数组;(2)根据目标类文件的特征参数判断已获取到的所述类文件数组中是否包含有所述目标类文件,若是,则进入步骤(3),若否,则返回步骤(1),其中所述目标类文件是需要统计代码行数的源文件编译后的类文件,所述目标类文件的特征参数被预先添加在Java虚拟机;(3)获取所述目标类文件中所有实例方法和静态方法的字节码信息,并从所述字节码信息中得到对应的行号字段值并比较出最大行号值,进而得到需要统计代码行数的源文件的代码行数。本发明专利技术还公开了一种统计Java源文件代码行数的装置及可读存储介质。

【技术实现步骤摘要】
统计Java源文件代码行数的方法及系统
本专利技术涉及计算机
,具体涉及一种统计Java源文件代码行数的方法及系统。
技术介绍
目前,统计Java代码行数的技术主要是通过文件流一行行读取Java源代码文件,使用这种方法会误将多行或单行的代码注释及一些无效的代码所在行当作代码行数进行统计,这样统计的代码行数不准确。同时,在遇到一些比较大的Java源文件时,使用文件流一行行读取文件内容来计算,会一定程度影响统计效率,并且读取的文件内容需要临时存储在内存中,导致了内存资源被额外消耗。此外,Java源文件具有一定的可变性,这种特性容易导致在统计代码行数时出现前后结果不一致的情况,容易给使用者带来一定的误导。
技术实现思路
本专利技术的目的在于提供一种统计Java源文件代码行数的方法、系统、装置及可读存储介质,有利于提高Java源文件代码行数统计准确性和统计效率,同时不会额外损耗内存资源去存储临时内容。为实现上述目的,本专利技术提供了一种统计Java源文件代码行数的方法,包括如下步骤:(1)当Java虚拟机开始加载类文件,实时获取已被加载的类文件数组;(2)根据目标类文件的特征参数判断已获取到的所述类文件数组中是否包含有所述目标类文件,若是,则进入步骤(3),若否,则返回步骤(1),其中所述目标类文件是需要统计代码行数的源文件编译后的类文件,所述目标类文件的特征参数被预先添加在Java虚拟机;(3)获取所述目标类文件中所有实例方法和静态方法的字节码信息,并从所述字节码信息中得到对应的行号字段值并比较出最大行号值。较佳地,在步骤(1)之前,还包括安装“统计代码行数”程序包的步骤。较佳地,步骤(1)中,所述“实时获取已被加载的类文件数组”通过JavaAgent技术执行。较佳地,所述步骤(2)包括如下步骤:启用异步线程开启对所述类文件数组的分析;获取预先添加的所述目标类文件的特征参数;遍历已加载的所述类文件数组;根据所述目标类文件的特征参数判断所述类文件数组中是否包含有所述目标类文件,若是,则进入步骤(3),若否,则返回步骤(1)。较佳地,所述特征参数为需要统计代码行数的所述源文件和所述目标类文件的名称。较佳地,所述“根据所述目标类文件的特征参数判断所述类文件数组中是否包含有所述目标类文件,若是,则进入步骤(3),若否,则返回步骤(1)”具体为:判断所述类文件数组中是否存在所述目标类文件的名称,若是,则根据所述目标类文件的名称从所述类文件数组中筛选出所述目标类文件并进入步骤(3),若否,则返回步骤(1)。较佳地,步骤(3)中,通过ASM字节码操纵框架获取所述目标类文件中所有实例方法和静态方法的字节码信息。为实现上述目的,本专利技术还提供了一种统计Java源文件代码行数的系统,包括:类文件收集模块,用于当Java虚拟机开始加载类文件,实时获取已被加载的类文件数组;分析模块,用于根据目标类文件的特征参数判断已获取到的所述类文件数组中是否包含有所述目标类文件,若是,则进入统计模块,若否,则返回类文件收集模块,其中所述目标类文件是需要统计代码行数的源文件编译后的类文件,所述目标类文件的特征参数被预先添加在Java虚拟机;统计模块,用于获取所述目标类文件中所有实例方法和静态方法的字节码信息,并从所述字节码信息中得到对应的行号字段值并比较出最大行号值。为实现上述目的,本专利技术还提供了一种统计Java源文件代码行数的装置,包括:处理器;存储器,其中存储有所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至7任一项所述的统计Java源文件代码行数的方法。为实现上述目的,本专利技术还提供了一种可读存储介质,其上存储有程序,所述程序被处理器执行时实现如上所述的统计Java源文件代码行数的方法。与现有技术相比,本专利技术通过直接对Java类文件进行数据分析,有效提高了统计的准确性。而且,由于本专利技术是在程序运行时动态分析类文件信息,而不是一行行读取文件内容,无论类文件内容有多大都不会影响程序本身的速度。另外,因为每一个Java类文件均包含自身的类文件信息,并不需要额外地消耗内存去存储临时内容,所以减少了资源损耗。附图说明图1是本专利技术实施例统计Java源文件代码行数的方法的流程图。图2是本专利技术实施例统计Java源文件代码行数的系统的示意框图。图3是本专利技术实施例类文件收集模块的执行流程图。图4是本专利技术实施例分析模块的执行流程图。图5是本专利技术实施例统计模块的执行流程图。图6是本专利技术实施例统计Java源文件代码行数的装置的示意框图。具体实施方式为了详细说明本专利技术的
技术实现思路
、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。Java源文件就是程序员们所编写出来的文件,程序员们能看懂的文件,后缀为.java。Java类文件是利用java虚拟机生成的编译文件,用来给机器看的机器语言,扩展名为.class。Java类文件也就是class文件是可以运行在任何支持Java虚拟机的硬件平台和操作系统上的二进制文件,也被称为字节码文件。两者的联系是Java源文件经过编译之后就会生成对应的Java类文件。而且一旦Java源文件编译之后生成了Java类文件,那么相对应的Java类文件通常情况下是不能被手动修改的,即不能进行添加代码或者删除代码操作,但是Java源文件则可以任意添加代码或者删除代码。所以基于此,可以通过统计Java类文件(.class)的代码行数来实现统计Java源文件代码行数,进而避免直接统计Java源文件代码行数所带来的技术问题。实施例一。请参阅图1,本专利技术公开了一种统计Java源文件代码行数的方法,包括如下步骤:S101、当Java虚拟机开始加载类文件,实时获取已被加载的类文件数组。具体地,“实时获取已被加载的类文件数组”是通过JavaAgent技术执行。具体地,如果类文件数组不为空,则开始进入步骤S102,反之,继续等待类文件被加载来收集类文件数组。S102、根据目标类文件的特征参数判断已获取到的类文件数组中是否包含有目标类文件,若是,则进入步骤S103,若否,则返回步骤S101,其中目标类文件是需要统计代码行数的源文件编译后的类文件,目标类文件的特征参数被预先添加在Java虚拟机。具体地,步骤S102包括如下步骤:启用异步线程开启对类文件数组的分析;获取预先添加的目标类文件的特征参数;遍历已加载的类文件数组;根据目标类文件的特征参数判断类文件数组中是否包含有目标类文件,若是,则进入步骤S103,若否,则返回步骤S101。具体地,特征参数为需要统计代码行数的源文件和目标类文件的名称。由于源文件与目标类文件的命名通常一致,因此可以直接使用需要统计代本文档来自技高网
...

【技术保护点】
1.一种统计Java源文件代码行数的方法,其特征在于,包括如下步骤:/n(1)当Java虚拟机开始加载类文件,实时获取已被加载的类文件数组;/n(2)根据目标类文件的特征参数判断已获取到的所述类文件数组中是否包含有所述目标类文件,若是,则进入步骤(3),若否,则返回步骤(1),其中所述目标类文件是需要统计代码行数的源文件编译后的类文件,所述目标类文件的特征参数被预先添加在Java虚拟机;/n(3)获取所述目标类文件中所有实例方法和静态方法的字节码信息,并从所述字节码信息中得到对应的行号字段值并比较出最大行号值。/n

【技术特征摘要】
1.一种统计Java源文件代码行数的方法,其特征在于,包括如下步骤:
(1)当Java虚拟机开始加载类文件,实时获取已被加载的类文件数组;
(2)根据目标类文件的特征参数判断已获取到的所述类文件数组中是否包含有所述目标类文件,若是,则进入步骤(3),若否,则返回步骤(1),其中所述目标类文件是需要统计代码行数的源文件编译后的类文件,所述目标类文件的特征参数被预先添加在Java虚拟机;
(3)获取所述目标类文件中所有实例方法和静态方法的字节码信息,并从所述字节码信息中得到对应的行号字段值并比较出最大行号值。


2.如权利要求1所述的统计Java源文件代码行数的方法,其特征在于,
在步骤(1)之前,还包括安装“统计代码行数”程序包的步骤。


3.如权利要求1所述的统计Java源文件代码行数的方法,其特征在于,步骤(1)中,所述“实时获取已被加载的类文件数组”通过JavaAgent技术执行。


4.如权利要求1所述的统计Java源文件代码行数的方法,其特征在于,所述步骤(2)包括如下步骤:
启用异步线程开启对所述类文件数组的分析;
获取预先添加的所述目标类文件的特征参数;
遍历已加载的所述类文件数组;
根据所述目标类文件的特征参数判断所述类文件数组中是否包含有所述目标类文件,若是,则进入步骤(3),若否,则返回步骤(1)。


5.如权利要求4所述的统计Java源文件代码行数的方法,其特征在于,所述特征参数为需要统计代码行数的所述源文件和所述目标类文件的名称。


6.如权利要求5所述的统计Java源文件代码行数的方法,其特征在于,所述...

【专利技术属性】
技术研发人员:胡娇娇万振华王颉董燕李华
申请(专利权)人:深圳开源互联网安全技术有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1