【技术实现步骤摘要】
一种基于程序图和图神经网络的代码可读性评估方法
[0001]本专利技术属于软件理论、软件工程与服务领域,涉及一种代码可读性评估方法,具体涉及一种基于程序图和图神经网络的代码可读性评估方法。本专利技术引入基于图神经网络的图表征学习相关领域方法,能够有效提取语法语义信息,进而获得更加准确的代码可读性评估结果。
技术介绍
[0002]现代软件的运维与开发要求程序员能够在原有代码基础上进行扩展或修改,因此,程序员能否正确、有效地理解源代码决定其工作效率。换言之,代码的可读性越高,软件就越容易维护与再开发。其中,代码可读性被定义为衡量开发者阅读和理解源代码的难易程度。代码可读性评估与软件质量紧密相关,极大地影响可移植性、可重用性等软件特性。
[0003]在代码可读性评估研究中,模型评估结果是对代码可读性水平的预测。考虑到代码可读性的重要性,近年来的研究提出了诸多代码可读性模型。代码表征是可读性评估的基础和前提,现有的可读性模型在代码表征方面存在以下两个问题。首先,传统的基于特征工程的表征方案主观性强、泛化能力差,难以和当前广泛 ...
【技术保护点】
【技术特征摘要】
1.一种基于程序图和图神经网络的代码可读性评估方法,其特征在于:该方法的步骤如下:步骤1:数据预处理;步骤1.1:数据收集,收集已标注的可读、中立和不可读代码数据集;步骤1.2:图表征,对步骤1.1中所得的已标注数据集进行编码;步骤2:基于预训练模型和独热编码的图节点嵌入;步骤2.1:对步骤1.1中所得的代码数据集,用Bert类预训练模型进行向量表示,将源代码分成代码和注释作为模型输入,训练后得到一个一维的代码信息表示向量;步骤2.2:根据步骤1.2中所得的图表征,用独热编码的方式对图中节点类型进行变换,表示成一维向量;步骤2.3:对步骤2.1和2.2中所得的一维信息向量,以拼接的方式进行组合,得到一维的向量表示;步骤3:基于图神经网络的代码可读性评估;步骤3.1:将步骤2.3中所得已组合的一维向量作为图的初始节点表示,同时步骤1.2中的程序图中的边用邻接矩阵进行表示;步骤3.2:将上述图的邻接矩阵和节点的初始表示输入到图卷积网络中进行训练;图卷积网络在节点结构层次上对其特征进行提取;步骤3.3:针对步骤3.2提取的特征,提供池化方法生成一个图级表示的超级节点;步骤3.4:对步骤3.3中池化机制所...
【专利技术属性】
技术研发人员:米庆,包擎航,詹怡,崔龙杰,翁涵,
申请(专利权)人:北京工业大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。