源代码模型的数据增强方法
如果您想添加论文,请不要给我们发送电子邮件。相反,请阅读用于添加新条目并发送拉动请求的协议。
我们按代码作者身份归因,克隆检测,缺陷检测和维修,代码摘要,代码搜索,代码完成,代码转换,代码求出,问题分类,方法名称预测和类型预测。
该存储库基于我们的论文,《深度学习:调查》的源代码数据。您可以如下引用:
@article{zhuo2023source,
title={Source Code Data Augmentation for Deep Learning: A Survey},
author={Terry Yue Zhuo and Zhou Yang and Zhensu Sun and Yufei Wang and Li Li and Xiaoning Du and Zhenchang Xing and David Lo},
year={2023},
eprint={2305.19915},
archivePrefix={arXiv},
primaryClass={cs.CL}
}
作者:特里·尤(Terry Yue
注意:WIP。很快将从我们的调查文件中添加更多论文。询问应转向[email protected],或通过在此处打开问题。
代码作者归因
| 纸 | 评估数据集 |
|---|
| 预先训练的代码模型的自然攻击(ICSE'22) | GCJ |
| ROPGEN:通过自动编码样式转换(ICSE'22)朝着强大的代码作者归因 | GCJ,github |
| 通过数据增强来增强源代码学习(ARXIV'23) | GCJ |
| 代码差异指导的对抗示例生成深代码模型ASE'23 | GCJ |
克隆检测
| 纸 | 数据集 |
|---|
| 对比代码表示学习(EMNLP'22) | JavaScript(特定于纸) |
| 通过程序转换(JSS'22)进行数据增强 | BCB |
| 预先训练的代码模型的自然攻击(ICSE'22) | BigCloneBench |
| 释放编译器中间表示的力量以增强神经程序嵌入(ICSE'22) | POJ-104,GCJ |
| HELOC:源代码表示的分层对比度学习(ICPC'22) | gcj,ojclone |
| 组合:使用对比度学习(Arxiv'22)的二进制代码的预训练表示 | BinaryCorp-3M |
| 评估对比度学习的各种代码克隆检测的代码表示(ARXIV'22) | POJ-104,CodeForces |
| 从程序对比中学习(DIS) - 源代码的类似性(ACL'22) | POJ-104,BigCloneBench |
| REACC:检索授权的代码完成框架(ACL'22) | codenet |
| 桥接预训练的模型和下游任务,以了解源代码理解(ICSE'22) | POJ-104 |
| 通过数据增强来增强源代码学习:一项实证研究(ARXIV'23) | BigCloneBench |
| Clawsat:朝着稳健和准确的代码模型(Saner'22)迈进 | --- |
| Contrabert:通过对比度学习增强代码预训练的模型(ICSE'22) | POJ-104 |
| 利用基于跨组合的数据增强的途径进行跨语言克隆检测(ICPC'23) | clcdsa |
| 代码差为深度代码模型的对抗示例生成(ASE'23 | BigCloneBench |
| 基于多模式对比学习的增强代码表示的预训练方法(Jos'23) | POJ-104,BigCloneBench |
| 协和:源代码的克隆意识对比学习(ISSTA'23) | Codenet(Java),POJ104 |
| 具有跨语言中间表示(arxiv'23)的神经符号零射击代码克隆克隆 | CodEnet(C,COBOL) |
| 代码预训练模型的多目标后门攻击(ACL'23) | BCB |
缺陷检测和修复
| 纸 | 数据集 |
|---|
| 代码模型的对抗示例(OOPSLA'20) | Varmisuse |
| 自我监督的错误检测和修复(Neurips'21) | Randombugs,pypibugs |
| 语义保护对抗代码理解(Coling'22) | 缺陷4J |
| 路径敏感的代码通过对比度学习软件漏洞检测(ISSTA'22)嵌入 | D2A,风扇,devign |
| 预先训练的代码模型的自然攻击(ICSE'22) | 偏差 |
| 组合:使用对比度学习(Arxiv'22)的二进制代码的预训练表示 | Sysevr |
| 从程序对比中学习(DIS) - 源代码的类似性(ACL'22) | 揭示,codexglue |
| 通过数据增强来增强源代码学习:一项实证研究(ARXIV'23) | 重构,codrep1 |
| MixCode:通过基于混合的数据扩展增强代码分类(Saner'23) | 重构,codrep1 |
| Contrabert:通过对比度学习增强代码预训练的模型(ICSE'23) | 偏差 |
| 代码差异指导的对抗示例生成的深代码模型(ASE'23) | devign,codechef |
| Mufin:通过反向翻译改善神经修复模型(ARXIV'23) | 缺陷4J(特定于纸张),quixbugs(纸特定) |
| 利用因果推断进行可解释的自动程序维修(IJCNN'22) | 缺陷4J,quixbugs,bugaid |
| deepdebug:使用堆栈跟踪,反射和代码骨架(Arxiv'21)修复Python错误 | 纸特定 |
| Break-It-Fix-IT:无监督的计划维修学习(ARXIV'21) | 纸特异性,深色 |
| 代码预训练模型的多目标后门攻击(ACL'23) | 偏差。 bug2fix |
| 推论:通过LLM在检索提示(ARXIV'23)上使用LLMS进行端到端计划维修(ARXIV'23) | 推断虫 |
| RAP-GEN:使用CODET5进行自动程序维修的检索添加贴片生成(FSE'23) | tfix,bug2fix,缺陷4J |
| 错误报告太少了?探索基于更改的错误本地化的数据增强(ARXIV'23) | 基因座数据 |
代码摘要
| 纸 | 数据集 |
|---|
| 通过数据扩展(Internetware'20)培训深度代码评论生成模型 | TL-Codesum |
| 基于检索的神经源代码摘要(ICSE'20) | PCSD,JCSD |
| 使用优化的混淆(ICLR'21)生成对抗计算机程序 | Python-150K,Code2Seq数据 |
| 对比代码表示学习(EMNLP'21) | JavaScript(特定于纸) |
| 基于搜索的测试框架,用于源代码嵌入的深神经网络(ICST'21) | 纸特定 |
| 通过Hybrid GNN(ICLR'21)检索代码摘要的检索生成 | CCSD(特定于纸) |
| Bashexplainer:基于微调Codebert(ICMSE'22)的检索式bash代码评论生成 | Bashexplaner数据 |
| 通过程序转换(JSS'22)进行数据增强 | Deepcom |
| 深度代码评论生成的对抗性鲁棒性(TOSEM'22) | CCSD(特定于纸) |
| 没有足够的数据?代码摘要的简单数据增强(PAAP'22) | --- |
| 源代码模型的语义鲁棒性(Saner'22) | Python-150K,Code2Seq数据 |
| 通过代码转换仔细研究基于变压器的代码智能:挑战和机遇(ARXIV'22) | codesearchnet(python,java) |
| Clawsat:朝着稳健和准确的代码模型(Saner'23)迈向 | --- |
| 探索代码生成任务的数据增强(EACL'23) | codesearchnet(codexglue) |
| 通过数据增强和语义感知Codebert(Arxiv'23)发表评论的生成(ARXIV'23) | Bashexplaner数据 |
| 读取:源代码摘要检索自适应变压器(Access'23) | PCSD |
| 电车:源代码摘要的令牌级检索机制(ARXIV'23) | PCSD,CCSD,DeepCom |
| 两只带有一块石头的鸟:通过生成对抗网络(OOPSLA'23)提高代码生成和代码搜索 | codesearchnet(python,java) |
| 通过自我完善的更好的代码语言模型(ACL'23) | codesearchnet |
代码搜索
| 纸 | 数据集 |
|---|
| 增强码:检查自然语言资源在代码检索模型中的影响(ARXIV'21) | codesearchnet |
| COSQA:20,000+ Web查询用于代码搜索和问答(ACL'21) | cosqa |
| 基于搜索的测试框架,用于源代码嵌入的深神经网络(ICST'21) | 纸特定 |
| 语义保护对抗代码理解(Coling'22) | codesearchnet |
| 探索代码搜索的表示级级增强(EMNLP'22) | codesearchnet |
| 代码搜索的跨模式对比度学习(ICSME'22) | AdvTest,Cosqa |
| 桥接预训练的模型和下游任务,以了解源代码理解(ICSE'22) | codesearchnet |
| 通过代码转换仔细研究基于变压器的代码智能:挑战和机遇(ARXIV'22) | codesearchnet(python,java) |
| Contrabert:通过对比度学习增强代码预训练的模型(ICSE'23) | AdvTest,WebQueryTest |
| Cocosoda:有效的代码搜索对比度学习(ICSE'23) | codesearchnet |
| 与基于关键字的数据增强的对比度学习,用于代码搜索和代码问题答案(EACL'23) | WebqueryTest |
| 基于多模式对比学习的增强代码表示的预训练方法(Jos'23) | codesearchnet |
| 重新考虑代码搜索中的负面对(EMNLP'23) | codesearchnet |
| 通过跨语性对比学习进行更好的多语言代码搜索(Internetware'23) | xlcost |
| McOdesearcher:代码搜索的多视图对比度学习(Internetware'23) | codesearchnet(Python,java),cosqa,staqc,webquery |
| Mulcs:迈向多语言代码搜索的统一深度表示(Saner'23) | codesearchnet(python,java),特定于纸张 |
| 两只带有一块石头的鸟:通过生成对抗网络(OOPSLA'23)提高代码生成和代码搜索 | codesearchnet(python,java) |
代码完成
| 纸 | 数据集 |
|---|
| 使用图形(ICLR'19)的生成代码建模 | ECTRGEN数据(特定于纸张) |
| 程序合成模型的对抗性鲁棒性(Aiplans'21) | Algolisp |
| REACC:检索授权的代码完成框架(ACL'22) | PY150(codexglue),githhub java(codexglue) |
| 通过功能上等效的神经代码生成的测试驱动的多任务学习(ASE'22) | MBPP |
| 在神经代码生成中,好的方法名称有多重要?模型鲁棒性观点(Arxiv'22) | 精制的提议,精制的pytorrent |
| 通过代码转换仔细研究基于变压器的代码智能:挑战和机遇(ARXIV'22) | codesearchnet(python,java) |
| RECODE:代码生成模型的鲁棒性评估(ACL'23) | Humaneval,MBPP |
| Clawsat:朝着稳健和准确的代码模型(Saner'23)迈向 | --- |
| 基于检索的及时选择与代码相关的少量学习(ICSE'23) | Atlas,Tfix |
| Rustgen:一种使用大语言模型生成可编译的锈蚀代码的增强方法(Deployableablegenerativeai'23) | 纸特定 |
| 代码预训练模型的多目标后门攻击(ACL'23) | githhub java(codexglue) |
| 域自适应代码通过语言模型和解耦域数据库完成(ASE'23) | 纸特定 |
| APICOM:通过及时学习和基于对抗培训的数据增强(Internetware'23)自动完成API | 纸特定 |
| 通过功能上等效的神经代码生成的测试驱动的多任务学习(ASE'22) | MBPP |
| 通过自我完善的更好的代码语言模型(ACL'23) | 主张 |
代码翻译
| 纸 | 数据集 |
|---|
| 利用无监督的代码翻译(ICLR'23)的自动单元测试 | 纸张 |
| 探索代码生成任务的数据增强(EACL'23) | CodeTrans(codexglue) |
| 总结并生成反向译本:编程语言的无监督翻译(EACL'23) | 转编码数据 |
| Contrabert:通过对比度学习增强代码预训练的模型(ICSE'23) | CodeTrans(codexglue) |
| 带有编译器表示的代码翻译(ICLR'23) | 转编码数据 |
| 具有可比CORPORA和多个参考的代码翻译的数据增强(EMNLP'23) | 转编码数据 |
| 评估和改善预训练模型的代码翻译模型的句法对抗性鲁棒性(ARXIV'23) | 头像 |
| 代码预训练模型的多目标后门攻击(ACL'23) | 转编码数据 |
代码问题回答
| 纸 | 数据集 |
|---|
| COSQA:20,000+ Web查询用于代码搜索和问答(ACL'21) | cosqa |
| 语义保护对抗代码理解(Coling'22) | codeqa |
| 与基于关键字的数据增强的对比度学习,用于代码搜索和代码问题答案(EACL'23) | cosqa |
| McOdesearcher:代码搜索的多视图对比度学习(Internetware'23) | Webquery(特定于纸) |
代码分类
| 纸 | 数据集 |
|---|
| 生成对源代码处理模型鲁棒性(AAAI'20)的对抗性示例(AAAI'20) | OJ |
| 通过基于Q学习的Markov决策过程(QRS'21)生成源代码分类模型的对抗性示例 | OJ |
| HELOC:源代码表示的分层对比度学习(ICPC'22) | GCJ,OJ |
| 组合:使用对比度学习(Arxiv'22)的二进制代码的预训练表示 | POJ-104(codexglue) |
| 桥接预训练的模型和下游任务,以了解源代码理解(ICSE'22) | POJ-104 |
| 通过数据增强来增强源代码学习:一项实证研究(ARXIV'23) | Java250,Python800 |
| MixCode:通过基于混合的数据扩展增强代码分类(Saner'23) | Java250,Python800 |
| 代码差异指导的对抗示例生成的深代码模型(ASE'23) | GCJ |
| 增强的数据增强方法,以支持多类代码可读性分类(SEKE'22) | 纸特定 |
| 通过增强的数据增强方法改善多类代码可读性分类(130)(国际软件工程和知识工程杂志) | 纸特定 |
方法名称预测
| 纸 | 数据集 |
|---|
| 代码模型的对抗示例(OOPSLA'20) | code2vec |
| 基于搜索的测试框架,用于源代码嵌入的深神经网络(ICST'21) | 纸特定 |
| 关于神经程序模型关于语义保证程序转换的普遍性(IST'21) | Code2Seq |
| 通过程序转换(JSS'22)进行数据增强 | code2vec |
| 对代码模型的离散对抗攻击(PLDI'23) | code2vec |
类型预测
| 纸 | 数据集 |
|---|
| 代码的对抗性鲁棒性(ICML'21) | DeepTyper |
| 对比代码表示学习(EMNLP'21) | DeepTyper |
| 统计类型推理的跨语性转移学习(ISSTA'22) | DeepTyper,Typilus(Python),CodesearchNet(Java) |
致谢
我们感谢Steven Y. Feng等。对于他们在dataug4nlp上的开源纸张列表。