作为静态类型 partial code 类型推断神经知识库的提示微调代码语言模型
软件工程
2022-08-29 v2
摘要
Partial code 通常包含非完全限定类型名(non-FQN)和未声明的接收对象。解析这些 non-FQN 类型与未声明接收对象的 FQN(称为类型推断)是有效搜索与复用 partial code 的前提。现有基于字典查找的方法构建 API 名称与代码上下文的符号知识库,涉及显著的编译开销,且对未见 API 名称与代码上下文变化敏感。本文中,我们将类型推断形式化为完形填空式填空白语言任务。基于源代码自然性,我们的方法以“预训练、提示与预测”新范式从原始源代码微调代码掩码语言模型(MLM)作为代码元素的神经知识库。我们的方法轻量,对代码编译要求最低。不同于现有用于类型推断的符号名称与上下文匹配,我们的提示微调代码 MLM 将 FQN 语法与用法封装于参数中,并支持模糊神经类型推断。我们在来自 GitHub 与 Stack Overflow 的大量源代码上系统评估了我们的方法。结果证实了方法设计的有效性及用于 partial code 类型推断的实用性。作为同类首创,我们的神经类型推断方法为使用 partial code 的诸多创新方式打开了大门。
引用
@article{arxiv.2208.05361,
title = {Prompt-tuned Code Language Model as a Neural Knowledge Base for Type Inference in Statically-Typed Partial Code},
author = {Qing Huang and Zhiqiang Yuan and Zhenchang Xing and Xiwei Xu and Liming Zhu and Qinghua Lu},
journal= {arXiv preprint arXiv:2208.05361},
year = {2022}
}
备注
The submitted paper has been accepted by ASE 2022. If possible, please expedite the approval process. Thank you very much