关于缺陷与源代码不自然性之间关系的实证研究
《ACM Transactions on Software Engineering and Methodology》:An Empirical Study on the Relationship between Defects and Source Code’s Unnaturalness
【字体:
大
中
小
】
时间:2025年11月07日
来源:ACM Transactions on Software Engineering and Methodology
编辑推荐:
自然语言和编程语言具有重复性与可预测性,buggy代码偏离自然模式。本研究通过多语言大型代码库及自动注入缺陷,发现修复后代码自然性提升有限,不同语言缺陷影响相似,自动缺陷与真实缺陷影响相当,但仅凭自然性检测bug精度低于1%。
摘要
自然语言之所以被称为“自然语言”,是因为其中的文本具有重复性和可预测性。最近的研究表明,编程语言也具有类似的特性(即自然性),源代码中同样存在重复性和可预测性的模式。值得注意的是,研究发现有错误的代码会偏离这些自然模式,因为有错误的代码明显不如无错误的代码自然。在本文中,我们进行了一项大规模且全面的实证研究,以探讨代码缺陷是否会导致源代码失去自然性。与以往的研究不同,我们利用了多个大规模且高质量的漏洞库,在这些库中,修复漏洞的提交中与漏洞无关的更改已被明确排除在外。所研究的软件应用涵盖了多种编程语言,实证研究既包括真实的软件缺陷,也包括通过已知变异操作符自动引入的缺陷。一方面,我们的评估结果证实了以往的研究结论:有错误的代码行通常不如无错误的代码行自然。另一方面,我们的研究也发现了一些有趣的新现象。首先,修复漏洞并不能显著提高代码行的自然性,修复后的代码行平均而言仍然和有错误的代码行一样不自然。这一发现可能表明,软件缺陷并非导致源代码失去自然性的根本原因,尽管软件缺陷与源代码的自然性之间存在统计学上的显著相关性。其次,不同编程语言中的缺陷对源代码自然性的影响是相似的。无论使用哪种编程语言,结论(即有错误的代码不自然,但修复漏洞并不能提高代码的自然性)都是成立的。第三,通过已知变异操作符自动引入缺陷并不会显著降低相关代码行的自然性。这表明,自动引入的缺陷对源代码自然性的影响可能与开发者无意中引入的真实世界缺陷类似。第四,不同类别的软件缺陷对源代码自然性的影响略有差异。虽然平均而言修复漏洞并不能显著提高相关代码的自然性,但修复与“检查”相关的漏洞却能显著提升代码的自然性。最后,仅根据自然性来定位有错误的代码行是不准确的,其精确度极低(低于1%)。
生物通微信公众号
生物通新浪微博
今日动态 |
人才市场 |
新技术专栏 |
中国科学人 |
云展台 |
BioHot |
云讲堂直播 |
会展中心 |
特价专栏 |
技术快讯 |
免费试用
版权所有 生物通
Copyright© eBiotrade.com, All Rights Reserved
联系信箱:
粤ICP备09063491号