一种基于词法分析技术的代码注释率统计方法技术

技术编号:33637612 阅读:20 留言:0更新日期:2022-06-02 01:52
本发明专利技术提供了一种基于词法分析技术的代码注释率统计方法,包括加载源代码,基于词法分析工具对源代码进行解析,获得词法符号列表;每个词法符号包含的信息有:词法类型、词法文本内容,以及所在行号、列号信息;其中,词法类型包括关键字、块注释、行注释、字符串、括号、加减运算符;遍历词法符号列表,如果该词法符号的词法类型是块注释或者行注释,则进行下一步分析;本发明专利技术在词法分析阶段借助词法符号信息分析代码注释率,不需要经过语法分析阶段,即不需生成抽象语法树以及遍历语法树,相对于基于抽象语法树的分析方法能提升分析速度,节省内存空间。省内存空间。省内存空间。

【技术实现步骤摘要】
一种基于词法分析技术的代码注释率统计方法


[0001]本专利技术涉及代码分析领域,具体是一种基于词法分析技术的代码注释率统计方法。

技术介绍

[0002]代码注释率统计的意义:
[0003]代码注释率是衡量代码工程可维护性的重要指标之一,代码注释可以帮助开发人员回顾历史代码,还可以帮助其他维护人员理解代码含义,进而节省项目代码的维护成本。在很多优秀的开源项目中,核心模块的注释代码往往比程序代码还要多。
[0004]现有代码注释率统计方法:
[0005]1、基于文本匹配:匹配以//开头的代码行,/**/注释代码块匹配等;
[0006]2、基于抽象语法树结合排除法统计:抽象语法树中仅包含有效代码节点信息,不包含注释代码以及空行、空格等信息。在分析语法树时,可以统计出有效代码行数。另外基于文本分析可以得到文件的总代码行、空代码行,然后可根据公式计算得到:
[0007]注释行=总代码行

空行

有效代码行;
[0008]以上方法的优缺点:
[0009]方法1:基于文本匹配,方式简单、速度快,但是统计不够准确,对于行中间或者末尾的注释无法准确处理,因为缺乏代码符号的位置信息进行辅助分析;
[0010]方法2:较方法1准确性有所提升,但是需要处理抽象语法树,内存开销较大以及效率相对低一些,并且针对行中间的注释代码以及文件头注释不能准确区分统计。

技术实现思路

[0011]本专利技术的目的在于提供一种基于词法分析技术的代码注释率统计方法,以解决上述
技术介绍
中提出的问题。
[0012]为实现上述目的,本专利技术提供如下技术方案:
[0013]一种基于词法分析技术的代码注释率统计方法,包括以下步骤:
[0014]步骤一、加载源代码,基于词法分析工具对源代码进行解析,获得词法符号列表;
[0015]每个词法符号包含的信息有:词法类型、词法文本内容,以及所在行号、列号信息;
[0016]其中,词法类型包括关键字、块注释、行注释、字符串、括号、加减运算符;
[0017]步骤二、遍历词法符号列表,如果该词法符号的词法类型是块注释或者行注释,则进行下一步分析;
[0018]步骤三、如果该词法符号的前一个词法符号不是常规代码符号,则表示该词法符号是文件头部注释,这部分注释是对整个文件的功能说明,从而区别于其他代码块注释;
[0019]如果该词法符号的行号与下一个词法符号所在行号相等,则表示该词法符号是位于代码行中间,从而将该行视为注释行;
[0020]步骤四、如果某一行出现多种注释类型,则该行仅算做一行注释代码;
[0021]步骤五、遍历完词法符号列表,即可获得代码文件所有的注释行;通过最后一个词法符号的行号信息即可获得代码总行数,从而准确获得代码文件的代码行注释率,进而计算整个项目的代码行注释率。
[0022]与现有技术相比,本专利技术的有益效果是:
[0023]本专利技术采用上述方法后,在词法分析阶段借助词法符号信息分析代码注释率,不需要经过语法分析阶段,即不需生成抽象语法树以及遍历语法树,相对于基于抽象语法树的分析方法能提升分析速度,节省内存空间。根据此方法除了能识别普通块注释,行注释,还能准确识别文件头注释,代码行中间注释,进一步提升代码注释率统计的准确性。
附图说明
[0024]图1为一种基于词法分析技术的代码注释率统计方法的流程图。
[0025]图2为一种基于词法分析技术的代码注释率统计方法中词法分析的流程图。
具体实施方式
[0026]下面结合具体实施方式对本专利的技术方案作进一步详细地说明。
[0027]请参阅图1

2,一种基于词法分析技术的代码注释率统计方法,包括以下步骤:
[0028]步骤一、加载源代码,基于词法分析工具对源代码进行解析,获得词法符号流,即词法符号列表;
[0029]每个词法符号包含的信息有:词法类型、词法文本内容,以及所在行号、列号等信息;
[0030]其中,词法类型包括关键字、块注释、行注释、字符串、括号、加减运算符等;
[0031]步骤二、遍历词法符号列表,如果该词法符号的词法类型是块注释(Comment)或者行注释(Line Comment),则进行下一步分析;
[0032]步骤三、如果该词法符号的前一个词法符号不是常规代码符号,则表示该词法符号是文件头部注释(HeadDoc),这部分注释是对整个文件的功能说明,从而区别于其他代码块注释;
[0033]如果该词法符号的行号与下一个词法符号所在行号相等,则表示该词法符号是位于代码行中间,从而将该行视为注释行;
[0034]步骤四、如果某一行出现多种注释类型,则该行仅算做一行注释代码;
[0035]步骤五、遍历完词法符号列表,即可获得代码文件所有的注释行;通过最后一个词法符号的行号信息即可获得代码总行数,从而准确获得代码文件的代码行注释率,进而计算整个项目的代码行注释率。
[0036]最后,基于分析所得数据,可结合注释率分析公式计算得到代码注释率,如果不想把文件头注释计入代码注释率,可根据需要去掉头部注释进行计算。
[0037]在本实施例中,“词法分析”是代码从文本到生成机器可执行程序的一个阶段,具体流程见图2。
[0038]本专利技术的工作原理是:本专利技术基于词法分析技术进行统计:借助词法分析工具对源代码进行词法分析,可得到一系列词法符号(Token):
[0039]每个词法符号至少包含如下信息:
[0040]1.词法类型(关键字、块注释、行注释、字符串、括号、加减运算符等)
[0041]2.词法文本内容
[0042]3.所在行号,列号等信息
[0043]基于以上获得的词法符号信息,经过遍历分析可过滤出类型为块注释或者行注释的符号列表,根据词法符号的行信息可以识别注释代码行并统计代码注释率。
[0044]上面对本专利的较佳实施方式作了详细说明,但是本专利并不限于上述实施方式,在本领域的普通技术人员所具备的知识范围内,还可以在不脱离本专利宗旨的前提下做出各种变化。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于词法分析技术的代码注释率统计方法,其特征在于,包括以下步骤:步骤一、加载源代码,基于词法分析工具对源代码进行解析,获得词法符号列表;每个词法符号包含的信息有:词法类型、词法文本内容,以及所在行号、列号信息;其中,词法类型包括关键字、块注释、行注释、字符串、括号、加减运算符;步骤二、遍历词法符号列表,如果该词法符号的词法类型是块注释或者行注释,则进行下一步分析;步骤三、如果该词法符号的前一个词法符号不是常规代码符号,则表示该词...

【专利技术属性】
技术研发人员:何军
申请(专利权)人:北京简单一点科技有限公司
类型:发明
国别省市:

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

1