通过基于上下文的深度代码表示来增强标识符重命名机会的识别

《IEEE Transactions on Reliability》:Boosting Identifier Renaming Opportunity Identification via Context-Based Deep Code Representation

【字体: 时间:2025年11月20日 来源:IEEE Transactions on Reliability 5.7

编辑推荐:

  代码重命名是软件重构的核心环节,现有方法仅针对特定类型标识符。本文提出结合上下文感知的Siamese网络模型,通过多注意力机制融合编程上下文与相关代码实体,构建语义嵌入向量并训练分类器,实现跨类型标识符重命名机会的自动检测。实验表明,在Apache社区10个Java项目共29255个标识符上的测试,较基线方法平均F1分数提升11.97%,其中引入相关代码实体策略使F1提升6.60%。

  

摘要:

源代码重构为正在开发的软件带来了许多好处,例如降低了未来开发失败的可能性,并简化了新功能的实现。在各种代码重构活动中,标识符重命名是开发者最常进行的活动之一,它在程序分析和理解中起着重要作用。然而,手动检测标识符重命名的机会既耗时又费力。最近,研究人员提出了一些自动识别标识符重命名机会的方法。然而,现有的方法仅关注一种或几种特定类型的标识符,而没有全面考虑所有类型的标识符。为了解决这个问题,我们提出了一种新的方法,通过充分利用编程上下文和相关代码实体的变化来检测标识符重命名的机会。具体来说,我们首先使用一个孪生网络(siamese network),该网络采用不同的注意力头(attention headers)来结合编程上下文和相关代码实体,从而生成具有语义意义的标识符嵌入向量。然后我们利用这些向量来训练一个分类器,用于预测标识符的重命名机会。在Apache社区的29个Java项目中对255个标识符进行的实验结果表明,我们的方法在识别所有类型标识符的重命名机会方面,平均F-Measure比现有的最佳方法高出11.97%。此外,我们还验证了我们方法中一些关键组件的有效性。例如,将相关代码实体纳入我们的方法中可以将平均F-Measure提高6.60%。

引言

源代码重构是开发者经常进行的一项重要的软件开发活动[1]、[2]、[3]、[4],其目的是在不改变外部行为(包括性能、可维护性、可扩展性和安全性[5])的情况下重构源代码。源代码重构可以为正在开发的软件带来很多好处,例如降低未来出现故障的可能性,简化新功能的实现,并减少升级和支持成本[6]、[7]。源代码重构可以在不同的层次上进行,从软件架构重构、类关系重建到代码实体重命名。在这些不同层次的源代码重构中,代码实体重命名是最常见的,因为它相对容易操作且引入故障的风险较低。研究人员进行了相关统计,发现标识符占代码实体的近70%,而其他类型的代码实体(如运算符和保留字)很少被重命名(因为它们具有固定的功能)[8]、[9],因此标识符重命名受到了开发者和研究人员的广泛关注。

相关新闻
生物通微信公众号
微信
新浪微博
  • 搜索
  • 国际
  • 国内
  • 人物
  • 产业
  • 热点
  • 科普
  • 急聘职位
  • 高薪职位

知名企业招聘

热点排行

    今日动态 | 人才市场 | 新技术专栏 | 中国科学人 | 云展台 | BioHot | 云讲堂直播 | 会展中心 | 特价专栏 | 技术快讯 | 免费试用

    版权所有 生物通

    Copyright© eBiotrade.com, All Rights Reserved

    联系信箱:

    粤ICP备09063491号