[发明专利]一种自动检测注释和代码一致性的方法及其系统有效
申请号: | 201711456698.8 | 申请日: | 2017-12-28 |
公开(公告)号: | CN108170468B | 公开(公告)日: | 2021-04-20 |
发明(设计)人: | 刘志勇;陈湘萍;林格 | 申请(专利权)人: | 中山大学 |
主分类号: | G06F8/75 | 分类号: | G06F8/75;G06F11/36 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 510006 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 自动检测 注释 代码 一致性 方法 及其 系统 | ||
本发明实施例公开了一种自动检测注释和代码一致性的方法及其系统,所述方法包括:提取海量代码,进行分块处理,并对变化前后的代码块一一对应,获得代码数据集;获取代码数据集,进行特征提取处理,获得代码数据集中的代码文本特征、代码片段的变化特征、注释特征、注释与代码关联特征的特征向量集;对所述特征向量集进行分类处理,获得的分类结果即为注释和代码的检测结果。在实施本发明实施例中,通过对注释和代码片段的文本信息进行交叉融合,计算注释和代码的语义相似度;使用启发式规则,对代码进行分块,以更小的粒度检测注释和代码的一致性,能够使检测结果具有更高的准确率和更精确的检测范围,更便捷、且适用性极高。
技术领域
本发明涉及程序理解、代码分析、机器学习技术领域,尤其涉及一种自动检测注释和代码一致性的方法及其系统。
背景技术
近年来,随着软件产业的发展,软件的规模和复杂性在不断提高,软件的生命周期也越来越长。在软件生命周期中,软件维护的工作量占据了整个生命周期的70%以上。如何减少软件维护的工作量,降低软件维护成本,提高软件的可维护性就成了提高软件生产效率和软件质量的关键,而在软件维护的过程中,软件维护人员主要依赖源代码及其相关代码注释以理解软件的设计及实现,从而对软件进行维护。其中,代码注释包括软件API文档、源代码中的注释信息、版本库中的提交注释信息等,这些代码注释在软件维护和程序理解中扮演了重要的角色,有研究表明,质量良好的代码注释可以显著提高开发和维护人员对程序理解的效率。因此,提高代码注释的质量将有效提高软件的可维护性,进而提高软件的质量。
代码注释的质量对软件的可维护性具有显著影响,一段与程序行为不符的注释将误导开发和维护人员,并对程序进行错误的理解和使用。而一段无意义的注释或者注释掉代码行的注释则会影响开发和维护人员的阅读,其非但没有提供有用的信息,反而增加了额外的阅读工作。对代码注释进行检查,过滤掉那些“坏”注释,可以有效的提高源代码的质量。传统的代码注释检查主要关注注释的长度和注释中是否包含代码两方面,这可以在一定程度上检查出质量低的注释,其问题在于没有检查出那些与程序行为不符的注释,而这种注释往往对软件的可维护性造成很大影响。
常见的注释和代码的一致性检测方法,主要分为以下三类:测试驱动的检测、基于自然语言处理的检测以及基于机器学习的检测。测试驱动的检测比较局限,只能检测特定类型和格式的注释和代码的一致性。基于自然语言处理的检测不能很好的处理自然语言和编程语言之间语义鸿沟的问题。基于机器学习的检测可以处理不同类型和不同格式的注释和代码,但其比较依赖于模型的特征选择。
测试驱动的检测方法通过分析注释和代码的结构,然后根据这些结构特征动态生成测试用例并运行,将通过测试的注释和代码认为是一致的,未通过测试的注释和代码认为是不一致的。其中,利用一个名为@tComment的工具进行检测Javadoc类型的注释与代码的一致性。其使用Randoop工具,根据方法的参数和返回值以及注释中的@return和@Exception标签动态生成测试用例,检测该方法是否满足注释中的@return和@Exception标签所描述的约束条件。如果满足,则认为注释和代码是一致的。反之则为不一致。
基于自然语言处理的方法是通过自然语言处理的技术,首先对注释和代码做预处理,然后从中提取用于验证注释和代码一致性的规则,最后通过这些规则来验证注释和代码的一致性。如一种面向对象程序的注释质量评价和注释建议方法,该方法首先从类和方法中提取类和方法的信息以及与之相关联的注释信息,然后根据制定的分析规则对不满足规则的注释给出相应的建议。另外还有利用一个名为iComment的工具检测特定主题的注释和代码的一致性。该工具首先通过自然语言处理的技术,从注释中提取与代码编写者的意图或需求相关的规则,然后验证代码是否满足这些规则,满足则认为是一致的,不满足则认为注释是“坏注释”或者“bug”。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中山大学,未经中山大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201711456698.8/2.html,转载请声明来源钻瓜专利网。