不再重复造轮子,AI 给你推荐更好的代码,还没bug( 二 )


将代码的结构与CASS集成在一起后 , 算法就会根据代码要执行的工作计算相似性分数 。 即使两段代码表面上不同 , 如果执行相同的功能 , 模型就会将它们评估为相似 。
CASS可以配置特定的上下文 , 从而能够捕获描述代码的更高级别信息 。 而且CASS可以在不使用编译器的情况下对代码进行评级(编译器将人类可读的源代码转换为计算机可执行的机器代码) , 甚至可以对不完整的代码片段进行评估 。
MISIM-GNN的架构如下图所示 。 对于这种方法 , 输入代码的CASS表征被转换为图 。 然后 , 将图中的每个节点嵌入一个可训练的向量 , 作为该节点的初始状态 。 接下来 , 使用GNN迭代更新每个节点的状态 。 最后 , 应用全局读取函数从节点的最终状态提取整个图的向量表征 。
不再重复造轮子,AI 给你推荐更好的代码,还没bug
本文插图
MISIM-GNN 架构
2
不再重复造轮子
研究人员仍然在扩展MISIM的特征集 , 目的是创建一个代码推荐引擎 , 它能够识别算法背后的意图 , 并提供语义上相似但性能有所提高的候选代码 。 系统可以指示程序员使用库函数 , 而不用再重复造轮子 。
像MISIM这样的以AI为动力的代码建议和审查工具有望大幅削减开发成本 , 同时使编码人员能够专注于更具创造性、减少重复性的任务 。
英特尔实验室首席科学家兼机器编程研究总监Justin Gottschlich表示:“如果该系统能取得成功 , 我们的最终目标之一就是实现全民编程 。 ”
或许有一天 , 代码相似性检测可以扩展到自然语言中 , 到时候要实现全民编程 , 就不再是难事 。
3 相关论文
不再重复造轮子,AI 给你推荐更好的代码,还没bug
本文插图
论文地址:https://arxiv.org/pdf/2006.05265.pdf
不再重复造轮子,AI 给你推荐更好的代码,还没bug
本文插图
代码相似检测系统的准确率比较 , 结果是运行3次的平均值和相对于平均值的最小/最大值 。
不再重复造轮子,AI 给你推荐更好的代码,还没bug
本文插图
code2vec、NCC、Aroma、MISIM在POJ-104测试集上的准确率结果 。 条形高度表示运行3次测量值的平均值 , 误差条由测量值的最小值和最大值确定 。
【不再重复造轮子,AI 给你推荐更好的代码,还没bug】 参考资料:
https://venturebeat.com/2020/07/29/intel-researchers-create-ai-system-that-rates-similarity-of-two-pieces-of-code/
https://www.theregister.com/2020/07/31/intel_wants_to_build_an/
不再重复造轮子,AI 给你推荐更好的代码,还没bug
本文插图
更多交流


推荐阅读