摘要:代码补全(code completion)是自动化软件开发的重要功能之一,是大多数现代集成开发环境和源代码编辑器的重要组件.代码补全提供即时类名、方法名和关键字等预测,辅助开发人员编写程序,直观提高软件开发效率.近年来,开源软件社区中源代码和数据规模不断扩大,人工智能技术取得了卓越进展,这对自动化软件开发技术产生了极大的促进作用.智能代码补全(intelligent code completion)根据源代码建立语言模型,从语料库学习已有代码特征,根据待补全位置的上下文代码特征在语料库中检索最相似的匹配项进行推荐和预测.相对于传统代码补全,智能代码补全凭借其高准确率、多补全形式、可学习迭代的特性成为软件工程领域的热门方向之一.研究者们在智能代码补全方面进行了一系列研究,根据这些方法如何表征和利用源代码信息的不同方式,可以将它们分为基于编程语言表征和基于统计语言表征两个研究方向,其中,基于编程语言表征又分为标识符序列、抽象语法树、控制/数据流图这3个类别,基于统计语言表征又分为N-gram模型、神经网络模型这2个类别.从代码表征的角度入手,对近年来代码补全方法研究进展进行梳理和总结,主要内容包括:(1)根据代码表征方式阐述并归类了现有的智能代码补全方法;(2)总结了代码补全的一般过程和模型评估中的模型验证方法与性能评估指标;(3)归纳了智能代码补全的主要挑战;(4)展望了智能代码补全的未来发展方向.
Abstract:Code completion is one of the crucial functions of automation software development. It is an essential component of most modern integrated development environments and source code editors. Code completion provides predictions such as instant class names, method names, keywords, and assists developer to code, which improves the efficiency of software development intuitively. In recent years, with the expanding of the source code and data scale in the open-source software community, and outstanding progress in artificial intelligence technology, the automation software development technology has been much promoted. Intelligent code completion builds a language model for source code, learns features from the existing code corpus, and retrieves the most similar matches in the corpus for recommendation and prediction based on the context code features around the position to be completed. Compared to traditional code completion, intelligence code completion has become one of the hot trends in the field of software engineering with its characteristics like high accuracy, multiple completion forms, and iterative learning ability. Researchers have conducted a series of researches on intelligent code completion. According to the different forms that these completion methods represent and utilize source code information, they can be divided into two research directions: programming language representation and statistical language representation. The programming language is divided into three types: token sequences, abstract syntax tree, and control/data flow graph. The statistical language also has two types: n-gram model and the neural network model. This paper starts from the perspective of code representation and summarizes the research progress of code completion methods in recent years. The main contents include: (1) expounding and classifying existing intelligent code completion methods according to code representation; (2) summarizing the experimental verification methods and performance evaluation indicators used in model evaluation; (3) summarizing the critical issues of intelligent code completion; (4) looking forward to the future development of intelligent code completion.
PDF全文下载地址:
http://jos.org.cn/jos/article/pdf/5966
删除或更新信息,请邮件至freekaoyan#163.com(#换成@)
智能代码补全研究综述
本站小编 Free考研考试/2022-01-02
相关话题/代码 智能 软件 语言 技术
一种基于深度森林的恶意代码分类方法
摘要:针对当前恶意代码静态分析方法精度不足的问题,将恶意代码映射为无压缩的灰度图像,然后根据图像变换方法将图像变换为恒定大小的图像,使用方向梯度直方图提取图像的特征,最后提出一种基于深度森林的恶意代码分类方法.实验中选择不同家族的多个恶意代码样本进行分类,验证了该方法的有效性,并且实验结果优于近期提 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02面向众包数据清洗的主动学习技术
摘要:传统方法多数采用机器学习算法对数据进行清洗.这些方法虽然能够解决部分问题,但存在计算难度大、缺乏充足的知识等局限性.近年来,随着众包平台的兴起,越来越多的研究将众包引入数据清洗过程,通过众包来提供机器学习所需要的知识.由于众包的有偿性,研究如何将机器学习算法与众包有效且低成本结合在一起是必要的 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02中文软件问答社区主题分析研究
摘要:软件问答社区是软件开发者通过问答方式进行技术交流的网络平台.近年来,软件问答社区积累了大量用户讨论的技术问答内容.一些研究者对StackOverflow等英文问答社区进行主题分析研究,但是缺少对于中文软件问答社区的分析.通过对中文软件回答社区开展主题分析研究,不仅可以指导开发者更好地了解技术动 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02人工智能赋能的数据管理技术研究
摘要:大数据时代,数据规模庞大、数据管理应用场景复杂,传统数据库和数据管理技术面临很大的挑战.人工智能技术因其强大的学习、推理、规划能力,为数据库系统提供了新的发展机遇.人工智能赋能的数据库系统通过对数据分布、查询负载、性能表现等特征进行建模和学习,自动地进行查询负载预测、数据库配置参数调优、数据分 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02人工智能赋能的数据管理、分析与系统专刊前言
摘要:大数据时代,数据规模庞大,数据管理应用场景复杂,传统数据库和数据管理技术面临很大的挑战.人工智能技术因其强大的学习、推理、规划能力,为数据库系统提供了新的发展机遇.专刊强调数据管理与人工智能的深度融合,研究人工智能赋能的数据库新技术和新型系统,包括两方面:(1)传统数据管理、数据分析技术及系统 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02面向关系数据库的智能索引调优方法
摘要:数据库索引是关系数据库系统实现快速查询的有效方式之一.智能索引调优技术可以有效地对数据库实例进行索引调节,从而保持数据库高效的查询性能.现有的方法大多利用了数据库实例的查询日志,它们先从查询日志中得到候选索引,再利用人工设计的模型选择索引,从而调节索引.然而,从查询日志中产生出的候选索引可能并 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02基于中间层的可扩展学习索引技术
摘要:在大数据与云计算时代,数据访问速度是衡量大规模存储系统性能的一个重要指标.因此,如何设计一种轻量、高效的数据索引结构,从而满足系统高吞吐率、低内存占用的需求,是当前数据库领域的研究热点之一.Kraska等人提出使用机器学习模型代替传统的B树索引,并在真实数据集上取得了不错的效果,但其提出的模型 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02面向数据特征的内存跳表优化技术
摘要:跳表作为数据库中被广泛采用的索引技术,优点在于可以达到类似折半查找的复杂度O(log(n)).但是标准跳表算法中,结点的层数是通过随机算法生成的,这就导致跳表的性能是不稳定的.在极端情况下,查找复杂度会退化到O(n).这是因为经典跳表结构没有结合数据的特征.一个稳定的跳表结构应该充分考虑数据的 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02攻击网页浏览器:面向脚本代码块的ROP Gadget注入
摘要:即时编译机制(just-in-timecompilation)改善了网页浏览器执行JavaScript脚本的性能,同时也为攻击者向浏览器进程注入恶意代码提供了便利.借助即时编译器,攻击者可以将脚本中的整型常数放置到动态代码缓存区,以便注入二进制恶意代码片段(称为gadget).通过常数致盲等去 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02一种基于领域适配的跨项目软件缺陷预测方法
摘要:软件缺陷预测旨在帮助软件开发人员在早期发现和定位软件部件可能存在的潜在缺陷,以达到优化测试资源分配和提高软件产品质量的目的.跨项目缺陷预测在已有项目的缺陷数据集上训练模型,去预测新的项目中的缺陷,但其效果往往不理想,其主要原因在于,采样自不同项目的样本数据集,其概率分布特性存在较大差异,由此对 ...中科院软件研究所 本站小编 Free考研考试 2022-01-02