技术新讯 > 计算推算,计数设备的制造及其应用技术 > 一种代码可读性评价方法、系统、设备及介质  >  正文

一种代码可读性评价方法、系统、设备及介质

  • 国知局
  • 2024-07-31 23:13:32

本发明属于代码可读性评价,特别是涉及一种代码可读性评价方法、系统、设备及介质。

背景技术:

1、代码主要由自然语言文本组成,包括标识符和注释等,是一种特殊的文本形式。代码可读性是指使代码对于用户(包括程序员、测试人员和维护人员)来说清晰易懂的能力。

2、代码可读性与软件质量息息相关,例如可修改性、可理解性、可重用性和可维护性。软件开发人员一直在阅读代码,每个软件演化和维护任务的第一步是仔细阅读和理解代码。即使维护者是代码的作者,也需要执行这一步骤。开发人员花费大量时间阅读代码,远远多于从头开始编写代码。因此,如果代码可读,那么开始更改它就很容易,并且可以在不同的模块甚至类似的新项目中重复使用。相反,不可读的代码会影响程序的理解,并可能导致bug的引入。这就是为什么“可读代码”在软件维护和演进的任何阶段都是基本的、非常需要的。

3、目前代码可读性评价主要分为人工评价和自动化评价两类方法。人工评价代码可读性具有局限性,效果取决于评价人员的水平及经验,且不适用于需要进行大量代码可读性评价的情况。近年来,机器学习技术被应用于代码可读性评价,机器学习框架能够组合使用数十甚至数千个特征,可以表达复杂的“决策空间”,能更好地捕捉许多变量之间复杂的相互作用,通过将丰富的代码特征与机器学习的各种算法框架相结合为新的模型,可以自动化进行代码可读性评价。

4、而现有结合机器学习的评价技术存在以下缺点:

5、(1)部分现有技术的特征提取不够全面,大多数只考虑了常见的代码结构特征,不能充分表述代码可读性。

6、(2)现有的使用深度神经网络进行代码可读性评价的技术,模型参数过多,训练耗时,运行效率低。

技术实现思路

1、本发明的目的是提供一种代码可读性评价方法、系统、设备及介质,以解决上述现有技术存在的问题。

2、为实现上述目的,本发明提供了一种代码可读性评价方法,包括:

3、获取待评价代码片段及对应可读性标签;

4、基于所述待评价代码片段及对应可读性标签构建可读性评价数据集;

5、将所述可读性评价数据集输入代码可读性评价模型中进行评价预测,得到可读性评价分数;其中,所述代码可读性评价模型包括依次连接的特征提取模块、基学习器模块和代码特征堆叠模块。

6、可选的,所述代码可读性评价模型的训练过程包括:

7、获取训练数据,所述训练数据包括可读性评价数据训练集及对应的可读性评价分数;

8、构建初始代码可读性评价模型,将所述训练数据输入所述初始代码可读性评价模型中进行评价预测,并以评价预测后的初始训练结果与所述可读性评价数据训练集对应的可读性评价分数之间的损失最小为目标,进行训练,得到所述代码可读性评价模型。

9、可选的,所述代码可读性评价模型的处理过程包括:

10、将可读性评价数据集输入所述特征提取模块中提取特征,得到代码特征数据;其中,所述代码特征数据包括文本特征数据和结构特征数据;

11、对所述文本特征数据和所述结构特征数据进行标准化处理;

12、将标准化处理后的各特征数据分别输入基学习器模块中进行特征学习和预测,得到各特征数据对应的预测输出数据;

13、将预测输出数据作为输入特征数据输入所述代码特征堆叠模块中,所述代码特征堆叠模块自适应学习不同输入特征数据的权重,输出可读性评价分数。

14、可选的,所述文本特征数据包括待评价代码片段的注释和标识符一致性特征aic、标识符完整性特征ii、标识符狭义性特征in、标识符多义性特征ia以及注释可读性特征cr。

15、可选的,所述结构特征数据包括待评价代码片段的空行比例特征blr、括号数特征bp、标识符长度特征il、代码体积特征cv和字符熵特征ce。

16、一种代码可读性评价系统,包括:

17、数据采集模块,用于获取待评价代码片段及对应可读性标签;基于所述待评价代码片段及对应可读性标签构建可读性评价数据集;

18、代码可读性评价模块,用于将所述可读性评价数据集输入代码可读性评价模型中进行评价预测,得到可读性评价分数;其中,所述代码可读性评价模型包括依次连接的特征提取模块、基学习器模块和代码特征堆叠模块。

19、一种电子设备,包括存储器及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行所述的一种代码可读性评价方法。

20、一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现所述的一种代码可读性评价方法。

21、本发明的技术效果为:

22、本发明同时考虑了代码文本特征和代码结构特征,并且组合学习不同代码特征的基学习器构建了代码特征堆叠模块。构建两个学习不同代码特征的基学习器和一个特征堆叠模块,将学习不同代码特征的基学习器的预测输出作为新的特征输入到一个代码特征堆叠模块中,代码特征堆叠模块能自适应学习不同代码特征的权重,输出最终的可读性评价分数,该方法能够提高代码可读性评价的准确性和稳定性。

技术特征:

1.一种代码可读性评价方法,其特征在于,包括:

2.根据权利要求1所述的一种代码可读性评价方法,其特征在于,所述代码可读性评价模型的训练过程包括:

3.根据权利要求1所述的一种代码可读性评价方法,其特征在于,所述文本特征数据包括待评价代码片段的注释和标识符一致性特征aic、标识符完整性特征ii、标识符狭义性特征in、标识符多义性特征ia以及注释可读性特征cr。

4.根据权利要求1所述的一种代码可读性评价方法,其特征在于,所述结构特征数据包括待评价代码片段的空行比例特征blr、括号数特征bp、标识符长度特征il、代码体积特征cv和字符熵特征ce。

5.一种代码可读性评价系统,其特征在于,包括:

6.一种电子设备,其特征在于,包括存储器及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行根据权利要求1-4中任一项所述的一种代码可读性评价方法。

7.一种计算机可读存储介质,其特征在于,其存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-4中任一项所述的一种代码可读性评价方法。

技术总结本发明属于代码可读性评价技术领域,并公开了一种代码可读性评价方法、系统、设备及介质,包括:获取待评价代码片段及对应可读性标签;基于所述待评价代码片段及对应可读性标签构建可读性评价数据集;将所述可读性评价数据集输入代码可读性评价模型中进行评价预测,得到可读性评价分数;其中,所述代码可读性评价模型包括依次连接的特征提取模块、基学习器模块和代码特征堆叠模块。本发明所述技术方案能够全面提取特征,提高了代码可读性评价的准确性和稳定性。技术研发人员:谢国波,程林峰,黄荍,苏庆,林志毅,黄剑锋,卢致晖,陈浩畅,张若辰受保护的技术使用者:广东工业大学技术研发日:技术公布日:2024/7/29

本文地址:https://www.jishuxx.com/zhuanli/20240730/196531.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。