本文主要是介绍【AI4Code】《Pythia: AI-assisted Code Completion System》(KDD 2019),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
代码补全
补全属性/方法,在一个给定集合内推荐item,最简单的方法就是按字母排序,缺点是用户下拉菜单的时间可能要长于直接打代码的时间。用户可以多打几个前缀帮助补全。
基于模型的代码补全
- 基于抽象语法树(AST)——Pythia等
- 基于代码文本——Deep TabNine 、Galois等
数据:AST和代码文本
AST是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。之所以说语法是“抽象”的,是因为这里的语法并不会表示出真实语法中出现的每个细节。比如,嵌套括号被隐含在树的结构中,并没有以节点的形式呈现;而类似于 if-condition-then 这样的条件跳转语句,可以使用带有三个分支的节点来表示。
一种是将代码解析为抽象语法树(AST),每个节点包括两个属性:type和value,所以每个节点需要两个embedding。然后使用深度优先遍历把AST的每个节点flatten成序列。
一种是直接将代码处理成文本,包含空格、换行符、缩进符等。
Pythia(KDD’19)
Pythia收集了Github上 Stars 前2700个Python项目的代码,一共包含了1600万个方法调用作为训练数据。
任务是给定一个长为 T T T的代码片段 C C C ,其中每个token为 c t c_t ct,以及一个特殊token “.”,预测token m ∗ m^{*} m
这篇关于【AI4Code】《Pythia: AI-assisted Code Completion System》(KDD 2019)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!