Skip to main content
QUICK REVIEW

[论文解读] Automatically Generating Commit Messages from Diffs using Neural Machine Translation

Siyuan Jiang, Ameer Armaly|arXiv (Cornell University)|Aug 30, 2017
Software Engineering Research参考文献 45被引用 6
一句话总结

本文提出使用神经机器翻译(NMT)技术,通过在顶级GitHub项目中筛选出的200万对提交信息-代码差异语料库上进行训练,自动从代码差异中生成简洁、高层次的提交信息。该方法在常见变更模式上表现良好,但对新颖变更生成的输出质量较低;通过质量保障过滤器可在预测不可靠时向用户发出警告,显著提升了输出的可靠性。

ABSTRACT

Commit messages are a valuable resource in comprehension of software evolution, since they provide a record of changes such as feature additions and bug repairs. Unfortunately, programmers often neglect to write good commit messages. Different techniques have been proposed to help programmers by automatically writing these messages. These techniques are effective at describing what changed, but are often verbose and lack context for understanding the rationale behind a change. In contrast, humans write messages that are short and summarize the high level rationale. In this paper, we adapt Neural Machine Translation (NMT) to automatically "translate" diffs into commit messages. We trained an NMT algorithm using a corpus of diffs and human-written commit messages from the top 1k Github projects. We designed a filter to help ensure that we only trained the algorithm on higher-quality commit messages. Our evaluation uncovered a pattern in which the messages we generate tend to be either very high or very low quality. Therefore, we created a quality-assurance filter to detect cases in which we are unable to produce good messages, and return a warning instead.

研究动机与目标

  • 解决缺乏自动化工具生成高层次、注重理由的提交信息(而非低层次的变更描述)的问题。
  • 通过从代码差异中自动生成功能简洁、类人化的提交信息,提升软件可维护性。
  • 通过自动化提交信息生成,减轻开发者的负担,尤其针对重复性或有模式的变更。
  • 在训练过程中识别并过滤低质量提交信息,以提升模型的可靠性。
  • 开发一种质量保障机制,检测模型无法生成可靠信息的情况,并发出警告。

提出的方法

  • 在顶级1,000个GitHub项目中配对的代码差异与人工编写的提交信息上训练神经机器翻译(NMT)模型。
  • 应用动词-宾语(V-DO)模式过滤器,仅选择高质量、语法结构清晰的提交信息用于训练。
  • 采用编码器-解码器架构的NMT模型,并引入注意力机制,将代码差异映射为自然语言提交信息。
  • 实现一个质量保障过滤器,评估模型置信度,并对低置信度预测进行标记,交由人工审核。
  • 使用自动化指标(如BLEU、METEOR)和对代表性生成信息样本的人工评估来衡量模型性能。
  • 发布完整数据集和实现代码,以支持可复现性及未来研究。

实验结果

研究问题

  • RQ1神经机器翻译能否有效从代码差异中生成高层次、注重理由的提交信息?
  • RQ2训练数据的质量在多大程度上影响模型生成准确且简洁的提交信息的能力?
  • RQ3该模型在不同类型代码变更上的泛化能力如何,尤其是新颖或非重复性变更?
  • RQ4质量保障过滤器能否有效检测并标记低置信度预测,从而降低误导性输出的风险?
  • RQ5自动化指标与人工对信息质量及相关性的判断之间是否存在相关性?

主要发现

  • NMT模型在常见且重复的变更模式上表现优异,生成的信息与参考的人工编写信息高度相似,经人工评估确认。
  • 大量生成的信息质量较低,尤其在新颖或非重复性变更上,表明其泛化能力受限于已学习的模式。
  • 质量保障过滤器成功减少了低质量预测的数量,显著降低了评估中极差信息(评分0)的比例。
  • 人工评估者将大量生成的信息评为与参考信息极为接近(高度相似),表明在典型情况下表现强劲。
  • 对于需要新见解的变更,模型难以生成有效信息,因为这些内容超出了基于历史数据的模式学习范围。
  • 已公开发布包含200万对过滤后提交信息-差异对的数据集及完整实现代码,以支持可复现性与进一步研究。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。