Leveraging Context-Aware Prompting for Commit Message Generation 论文笔记

news/2025/9/22 15:30:27/文章来源:https://www.cnblogs.com/mianmaner/p/19105372

介绍

(1) 发表:EMNLP'24

(2) 背景

现有方法通常存在一些缺点,例如只关注变化的行是不够的,或者在变化周围包含不相关的行会带来噪声。如图 1 所示,添加和删除的代码实际上是相同的,只是位置不同,导致代码更改定义不明确。此外,由于缺乏程序依赖关系分析,更改的行和程序的未更改部分之间的关联尚不清楚

(3) 贡献

基于代码属性图(CPG)理论的许多静态分析工具,本文提出了一个上下文感知的 Prompt。同时构建了一个上下文增强的的代码数据集 CODEC 用于提交信息生成

工作

(1) CODEC 数据集

由于现有数据集缺乏对代码更改上下文的监督信号,因此我们为本文所研究的任务构建了自己的数据集

  • 收集:使用 PyDriller 在 Github 上手机至少 1000 Star 的 Java 存储库,除了源代码更改外,还记录了更改部分的上下文

  • 过滤:使用了四种过滤规则

    ① 当更改的行数较多时,大多数自动生成的注释都是不可靠的,因此超过 20 行的更改将被忽略
    ② 提交信息应有长度限制,少于 5 个单词的消息没有信息,而大于 150 个单词的消息可能会令人困惑
    ③ 仅更改 Java 文件
    ④ 删除不相关的信息,例如 issueID、commitID 和 URL

  • 优化:根据之前的研究,仅考虑提交信息的第一句话。本文还给构建了一个 Bi-LSTM 模型以进保留 Why/What 的信息

(2) COMMIT 模型

image-20250921105822773

  • 构建 Added-Deleted Context Graph:使用静态代码分析工具 Joern3 为更改前后的代码构建两个 CPG,分别用于删除的行和添加的行,保留删除或添加部分的依赖节点。通过组合两个 CPG 得到 ADCG,然后可以通过程序切片从 Diffs 中提取 ADCG 节点指示的有用上下文语句

  • 依赖提取算法:考虑到过度平滑和平衡模型复杂性和效率之间的负面影响,我们将依赖关系的范围限制在一定深度。构建的算法可以在特定深度内从 ADCG 访问更改的语句

    ADCG 中每个节点对应一条语句(或行),边表示语句之间的数据依赖或控制依赖。算法首先将变化的代码行作为初始节点集合,并基于它们构建初始的切片,然后以代码切片为工作队列,迭代地取出依赖关系:如果某个依赖片段的深度未超过预设的依赖深度,就检查其源节点或目标节点;一旦发现新的相关节点(即在依赖映射中能连接到尚未加入的节点),就将其加入依赖节点集合,并把新的依赖边加入切片中,等待后续处理。这样,依赖图会像“向外扩散”一样逐步更新。最后,算法收集所有相关节点的代码行作为结果,并将最初的变化行去除,只保留通过依赖传播得到的受影响行

(3) Prompt 设计

将每个提示扩展成四个特定的模版,每个模板都由任务提示、代码差异和基本事实提交消息组成,在实验阶段分别对 T1~T4 进行实验来验证对于提示变化方面的鲁棒性

最终的优化函数如下:

\[P(S|X,f_{prompt})=\sum_{x\in x,z\in [Z]}(\max\prod_{j=1}^zP_\theta(z_j|x,f_{prompt},z<j)) \]

实验

总而言之就是取得了 SOTA,然后验证了 Context-Rich 信息的正面提升

总结

解决了现有提交信息生成未考虑上下文依赖关系变化的问题,并且基于此提出了一个方法和数据集

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/909475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P4951 [USACO01OPEN] Earthquake 题解

111首先要知道 0/1 分数规划这个经典模型 给定 \(a_1,a_2....a_n\) 以及 \(b_1,b_2....b_n\) 求一组解 \(x_i(1\leq i \leq n,x_i \in [0,1] )\),使下列式子最大化: \[\frac {\sum_{i=1}^n a_i \times x_i}{\sum_{i=…

门户网站开发需求文档软件外包app

1.如图&#xff0c;实现功能: Hello World!字符串跟随鼠标移动鼠标左击Hello World!颜色为红色鼠标右击Hello World!颜色为蓝色鼠标滚轮滚动改变Hello World!颜色的RGB中的G值 2.实现工具: vs20133.实现步骤: 新建一个win32项目 如图,看到HelloWorldGame.cpp中 _tWinMain()的函…

网站备案信息变更买个小程序多少钱

目录 一、边缘磨损效果 二、刮痕效果 三、边缘磨损与刮痕的混合 四、锈迹效果 本篇效果&#xff1a; 一、边缘磨损效果 将智能材质“Iron Forge Old” 拖入图层 打开“Iron Forge Old” 文件夹&#xff0c;选中“Sharpen”&#xff08;锐化&#xff09;&#xff0c;增大“…

网站管理人员怎么做手机app软件

目录 运算符 数字运算符 比较运算符 逻辑运算符 转义字符 变量使用 变量定义 变量类型 变量命名 变量函数 input函数 type函数 条件语句 If 格式 案例1&#xff0c;判断年龄 案例2&#xff0c;借钱 案例3&#xff0c;and、or应用 循环语句 for 格式 案例…

深圳网站建设学习网站建设购销合同

1 释放锁流程概述 ReentrantLock的unlock()方法不区分公平锁还是非公平锁。 首先调用unlock()方法。 unlock()底层使用的是Sync.release(1)方法 public void unlock() {<!-- --> sync.release(1); } release(1)方法会调用tryRelease(1)去尝试解锁。 public fin…

个人网站做项目万能软文模板

文章目录 什么是SSH协议&#xff1f;SSH为何是安全的&#xff1f;SSH由哪些组件构成&#xff1f;SSH可以帮助实现的功能SSH的工作原理SSH的历史版本常用的SSH工具有哪些SSH配置案例参考Windows 安装SSHUbuntu系统SSH配置Cisco Switch SSH配置华为Switch SSH配置 客户端启用SSH连…

比较好设计网站wordpress 按钮美化

Vue.js 是一套构建用户界面的渐进式框架。只关注视图层, 采用自底向上增量开发的设计。 目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。Vue 学习起来非常简单。 目录 常用的vue.js版本及方法 学习vue之前需要掌握基础html+css+javaScript知识。 比如: …

python 网站开发书籍wordpress百度熊掌号

牛年跳槽季如火如荼&#xff0c;敏锐点的小伙伴儿应该都留意到了&#xff0c;BAT新年都在招聘.NET。2020年11月份发布.NET5统一了七大应用方向&#xff0c;.NET6的2个预览版已经把Blazor升级、跨平台UI方案MAUI、CLR性能优化等都放出来了&#xff0c;.NET前景充满想象&#xff…

桂林做网站建设的公司电子商务网站建设与管理总结

SCI论文作图规范包括以下几个方面&#xff1a; 一、图片格式 SCI论文通常接受的图片格式包括TIFF、EPS和PDF等。其中&#xff0c;TIFF格式是一种高质量的图像格式&#xff0c;适用于需要高分辨率和颜色准确性的图片&#xff1b;EPS格式是一种矢量图形格式&#xff0c;适用于需…

做网站的例子建设网站的五个步骤

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;Redis&#xff1a;原理速成项目实战——Redis实战4&#xff08;解决Redis缓存穿透、雪崩、击穿&#xff09; &#x1f4da;订阅专…

用ida插件快速审计函数调用

如果xref窗口会显示调用的伪代码,也许就不会有今天...前言 我又要在前言絮絮叨叨一下我是为什么要做这个小插件的了...就不看 在审查程序的漏洞的时候,我们可能会重点关注那么几个重点函数的调用:system肯定是重中之…

【ACM独立出版|往届已EI、Scopus检索|合作SSCI】第二届数字经济与计算机科学国际学术会议(DECS 2025)

第二届数字经济与计算机科学国际学术会议(DECS 2025)将于2025年10月17日至10月19日在中国武汉召开。本次会议旨在汇聚来自全球的学者、研究人员和业界专家,共同探讨数字经济与计算机科学领域的最新发展与应用。随着…

schematool -initSchema -dbType mysql

hive启动之前一定要用这条命令初始化

叶县红色家园网站建设公众号登陆

文章开始之前&#xff0c;建议安装一个显示网速的插件&#xff0c;不然你不知道到底有没有下载&#xff0c;也让生活有一点盼头 1.因为众所周知的原因&#xff08;我dang的行为真的是让人失望&#xff09;&#xff0c;先更换一下ruby镜像源 $ gem sources --remove https://rub…

PostgreSQL 全表 count 优化实践:从 SeqScan 痛点分析到 heapam 改进与性能突破

本文整理自 IvorySQL 2025 生态大会暨 PostgreSQL 高峰论坛的演讲分享,演讲嘉宾:权宗亮。本文主要包括以下三部分:SeqScan 现状 heapam 改进 全表计数SeqScan 现状 我们使用了一个稍宽的 SeqScan 表,包含约 10-20 …

微信微网站建设平台wordpress改变友情链接顺序

文学迷 > 玄幻魔法 > 天命神相 > 第一千六百零七章 鸿蒙紫气&#xff0c;成圣之机 (上)第一千六百零七章 鸿蒙紫气&#xff0c;成圣之机功德金身只要达到了八十一重天&#xff0c;大圆满的境界&#xff0c;实力堪混元大罗级别的圣人&#xff0c;这听起来确实是一件吊炸…

逸阳网站建设的目标完整的网站优化放啊

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一. VRRP概述 VRRP---虚拟路由器冗余协议 VRRP&#xff08;Virtual Router Redundancy Protocol&#xff09;是一种用于在多个路由器之间创建虚拟路由器的协议。 VRRP使用了一系列协议来实现路…

学习做网站的孛校呼和浩特网站建设费用

更新&#xff1a;使用 滏阳河边捉蚯蚓 https://zhuanlan.zhihu.com/p/41297136上获取系统PDF文件和zotero.sqlite文件的代码&#xff0c;在此感谢&#xff01;在zotero的library中删除参考文献条目后&#xff0c;有时PDF不会同步删除&#xff0c;尤甚是安装了zotfile插件后&…

登建设厅锁子的是哪个网站sharepoint 网站开发

这里 Allocation failed - JavaScript heap out of memory JavaScript堆内存不足&#xff0c;我们都知道 Node 是基于V8引擎&#xff0c;在一般的后端开发语言中&#xff0c;在基本的内存使用上没有什么限制&#xff0c;但是我去查阅了相关的资料才发现&#xff0c;在 Node 中通…

Lightroom Classic 2025:精细调控,呈现完美画质,专业级数字照片管理与后期处理全解析

Lightroom Classic 2024是一款由Adobe开发的数字照片后期处理软件,它为摄影师和摄影爱好者提供了一个全面、高效的后期处理平台。通过Lightroom Classic 2024,用户可以轻松地对数字照片进行各种调整和修饰,以实现最…