VersiCode: Towards Version-controllable Code Generation(2024 引用数26)
论文地址:[2406.07411] VersiCode: Towards Version-controllable Code Generation
论文开源仓库:https://github.com/wutong8023/VersiCode
动机
当前代码补全相关的任务没有考虑到不同外部库的版本变化,开始进一步研究不同版本的外部库对代码补全的影响
核心贡献
1.提出了两个还没被充分研究的任务,version-specific code completion (VSCC) 和 version-aware code editing (VACE)
2.构建并开源了一个大规模的version-controllable code generation dataset,VersiCode


评估方式
token-level 生成任务:
n代表总生成数量,c代表正确数量,k代表取前k个
评估指标含义:在n个生成结果中,随机取k个候选,其中至少有一个正确答案的概率
Pass@k=E[1-\frac{\binom{n-c}{k}}{\binom nk}]
当n=5,c=1,k=3时,计算结果为:
Pass@k = 1-\frac{C_4^3}{C_5^3}
line-level 生成任务:
Identifier Sequence Match (ISM@n):
抽取生成内容的所有Identifier,然后对比exact match。
抽取样例:
user_name = get_user_name()
抽取后:
user_name
get_user_name
评估指标含义:生成n个结果中正确的比例
Prefix Match (PM@n):
判断生成代码的token是否和GT的相同的比例
block-level 生成任务:
拆分为上面的ISM/PM的line-level任务,之后求和平均。
实验发现

1.在prompt只提示需要修改到的版本号,而不进一步补充api的情况下,如F4(b)所示大多数模型在新增或废弃API时表现良好,原因可能是因为这些新增和废弃的api在训练文本中被特别强调了。

2.如T3所示,其中Block-level的代码补全和代码编辑的得分相对比,发现代码编辑得分显著高于代码补全,可得不同版本的上下文提示对生成结果有一定的正向作用

3.论文中定义了主要版本和次要版本,例如torch v1.0.0 as a major version and torch v1.3.1 as a minor version,实验发现由主要版本到主要版本的模型编辑能力最弱,原因可能是主要版本之间的内部api变化较大

4.在token-level 的代码补全任务中,如F5所示,实验发现当使用的数据越新,模型的效果越差
投稿情况与审稿意见
本文在2025年尝试投ICLR,但是没有中稿
OpenReview中主要评分:
| Reviewer | Score | Confidence | 评价 |
|---|---|---|---|
| Reviewer 1 | 6/10 | 3 | Weak Accept |
| Reviewer 2 | 5/10 | 3 | Borderline |
| Reviewer 3 | 5/10 | 4 | Borderline |
整体:
- 平均分约:(6+5+5)/3=5.33
审稿人提出的核心问题主要是:
- 评估方式有待改造,有必要动态执行代码来判断正确性
- baseline对比有待改进,比如引入RAG\微调模型\agent框架方法进行进一步对比
总结就是:VersiCode不是因为研究问题不好而拒稿,而是因为它提出了一个很好的软件工程问题,但停留在“发现问题和建立benchmark”阶段,缺少机器学习方法创新和解决方案,因此对于ICLR这种偏ML顶会竞争力不足。





