发布信息

AI 助力程序员告别 debug 噩梦,节省时间和成本

作者:软荐小编      2024-07-13 16:03:01     141

程序员写出的代码大部分都不是像书法一样一气呵成的,而是需要反复查找bug,直到开始怀疑自己的人生。

代码相似度检测 软件_相似代码检测度软件是什么_代码相似度检测工具

剑桥大学贾奇商学院发布的一项研究显示,程序员50.1%的工作时间用于编程,一半的时间用于调试,调试的总成本估计为每年3120亿美元。

现代软件系统越来越复杂,往往一个小小的错误就会导致系统崩溃,造成巨大的损失,因此,不仅程序员,企业也在为调试付出巨大的代价。但现在,AI带来了好消息。

英特尔、麻省理工学院和佐治亚理工学院的研究人员合作开发了一种自动化代码相似性检测系统 MISIM,该系统可以根据两段代码是否执行相似的任务、是否具有相似的代码特征,判断两段代码之间的相似性,即使这两段代码使用不同的结构和算法。

代码相似性检测可以应用于代码推荐和自动修复bug。代码推荐的应用过程有点像输入法的单词推荐。由于MISIM可以评估不完整的代码片段,当它检测到不完整和有bug的代码时,它会从其他地方选择具有相同功能的无bug代码来替换原始代码。

而且MISIM会将代码转换成统一的形式,并确定代码功能,这样就可以不受书写方式影响地比较代码片段。由于MISIM不受编程语言的限制,因此也可以用于代码语言的转换。

在对 45,780 个程序进行实验评估时,MISIM 识别了学生编写的用于解决 104 个编码问题的 C 和 C++ 程序中的代码。如果两个程序都解决了同一个问题,则在数据集中将它们标记为相似。MISIM 的表现始终优于三个最先进的系统,最高可达 40.6 倍。

自动代码生成一直是研究热点,无论是工业界还是学术界都在朝这个方向努力。OpenAI 的 GPT-3 语言模型甚至可以根据自然语言描述生成网页布局的代码。代码相似性检测可以重用现有的代码,让优质代码得到更有效的利用。

相似代码检测度软件是什么_代码相似度检测工具_代码相似度检测 软件

输入“创建一个像西瓜一样的按钮”,GPT-3 会生成上图中绿色表皮、红色葫芦的按钮原型。或者输入“欢迎使用大字体阅读我的新闻通讯”,GPT-3 会生成上图中红色的大字体。

当然,代码相似性检测也可以用来检查重复代码。所以,计算机科学专业的学生,​​要注意你的功课!虽然现在有非人工智能的代码重复检查系统,但谁知道人工智能什么时候会赶上来呢?

MISIM 架构

代码相似度检测 软件_相似代码检测度软件是什么_代码相似度检测工具

MISIM 架构概述

MISIM 由两个核心组件组成。首先,MISIM 具有一种新颖的上下文感知语义结构 (CASS),该结构使用机器学习算法通过捕获描述代码上下文的信息(例如,代码是函数调用还是操作等)来确定给定源代码的用途。其次,MISIM 还具有基于神经网络的代码相似性评估算法,该算法可以通过各种神经网络架构实现。

一旦构建了 CASS,它就会被矢量化并用作神经网络的输入,神经网络会生成特征向量。一旦生成了特征向量,就可以执行代码相似性评估(例如,向量点积、余弦相似性等)。

对于 MISIM 的相似度评估算法,研究人员研究了三种神经网络方法:GNN、RNN 和 BoF 神经网络。其中,使用 GNN 的 MISM 总体表现最佳,能够以超过 75% 的准确率识别两个程序之间的相似性。

一旦代码结构与 CASS 集成,算法就会根据代码的功能计算相似度分数。即使两段代码表面上不同,如果它们执行相同的功能,模型也会将它们评估为相似。

CASS 可以配置特定的上下文,使其能够捕获描述代码的更高级信息,并且可以在不使用编译器(将人类可读的源代码转换为计算机可以执行的机器代码)的情况下对代码进行评级代码相似度检测 软件,甚至可以对不完整的代码片段进行评级。

MISIM-GNN 的架构如下图所示。对于该方法,输入代码的 CASS 表示被转换为图。然后代码相似度检测 软件,图中的每个节点都嵌入一个可训练向量作为节点的初始状态。接下来,使用 GNN 迭代更新每个节点的状态。最后,应用全局读取函数从节点的最终状态中提取整个图的向量表示。

代码相似度检测工具_相似代码检测度软件是什么_代码相似度检测 软件

MISIM-GNN 架构

不再重新发明轮子

研究人员仍在扩展 MISIM 的功能集,目标是创建一个代码推荐引擎,可以识别算法背后的意图,并推荐语义相似且性能更佳的候选代码。该系统可以指导程序员使用库函数,而不是重新发明轮子。

MISIM 等人工智能代码建议和审查工具有望大幅降低开发成本,同时使程序员能够专注于更有创造性、更少重复的任务。

英特尔实验室首席科学家兼机器编程研究主任 Justin Gottschlich 表示:“如果这个系统成功了,我们的最终目标之一就是让每个人都能编程。”

也许有一天,代码相似性检测可以扩展到自然语言中,到时候实现通用编程就不再是难事了。

3 相关论文

代码相似度检测 软件_代码相似度检测工具_相似代码检测度软件是什么

论文地址:

代码相似度检测工具_代码相似度检测 软件_相似代码检测度软件是什么

代码相似性检测系统的准确率比较。结果是 3 次运行的平均值以及相对于平均值的最小/最大值。

相似代码检测度软件是什么_代码相似度检测 软件_代码相似度检测工具

code2vec、NCC、Aroma 和 MISIM 在 POJ-104 测试集上的准确度结果。条形图的高度代表 3 次测量的平均值,误差条形图由测量的最小值和最大值决定。

参考:

代码相似度检测 软件_代码相似度检测工具_相似代码检测度软件是什么

相关内容 查看全部