论文

使用智能体编码自动修剪日志代码:我们还有多远?

Towards Automatically Pruning Logging Code with Coding Agents: How Far Are We?

智能体系统Agent任务评测

摘要

记录代码支持调试、监视和软件维护,但过多的记录会增加噪音、增加运行时开销并模糊诊断信息。虽然先前的研究已经广泛研究了日志记录代码的生成和修改,但日志记录的删除仍然相对未得到充分探索。在本文中,我们研究了开发人员日志记录删除实践,并探索了使用编码智能体来完成此任务。我们从 Python 和 Java 存储库中提取并手动验证日志记录删除案例,并得出 10 种删除模式和 11 种删除原因,描述了在实际软件更改中如何以及为何删除日志记录代码。我们进一步构建了 LogRem,这是一个包含 387 个真实案例的数据集,涵盖直接日志语句删除、日志基础设施删除和日志替换。我们评估了具有多种模型设置的四种编码智能体,并将它们的输出与可接受的现实世界的变化进行比较。尽管 95.6% 到 100.0% 的输出通过了有效性检查,但只有 11.1% 到 19.6% 删除了与相应的实际更改相同的日志代码,同时保留了不相关的代码。 智能体的不同之处在于错过的删除、额外的删除和不相关的代码编辑,在日志记录删除类别和轨迹之间存在很大差异。执行成本差异很大,但较高的成本并不总是会产生更紧密的一致性。提交消息和开发人员讨论提供了最大的对齐收益,而分类指南始终减少了运行时间。总的来说,我们的研究将日志记录删除作为一项独特的软件维护任务,并表明可靠的自动化取决于准确确定删除范围,同时保留必要的代码。据我们所知,这是第一个从这个角度检查日志代码删除的研究。