arXiv cs.AI精选73

借助编码代理自动裁剪日志代码:我们走到哪一步了?

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

· 10天前

精选理由

揭示编码代理自动清理日志的能力边界,为精准维护代码和降低日志冗余提供实践依据

AI 摘要

日志代码支持调试、监控和软件维护,但过多的日志会增加噪声、带来运行时开销,并掩盖诊断信息。尽管以往研究已广泛探讨日志代码的生成与修改,但日志移除仍相对缺乏研究。本文研究开发者移除日志的实践,并探索使用编码代理完成这一任务。我们从 Python 和 Java 代码仓库中提取并人工验证日志移除案例,总结出 10 种移除模式和 11 种移除原因,用于刻画真实软件变更中日志代码被移除的方式及原因。进一步地,我们构建了 LogRem 数据集,其中包含 387 个真实案例,涵盖直接移除日志语句、移除日志基础设施以及日志替换。我们在多种模型设置下评估了四种编码代理,并将其输出与实际被接受的变更进行比较。尽管有 95.6% 至 100.0% 的输出通过了有效性检查,但只有 11.1% 至 19.6% 的输出在保留无关代码的同时,移除了与对应实际变更相同的日志代码。不同代理在遗漏移除、额外移除和无关代码编辑方面存在差异,并且在不同日志移除类别和执行轨迹之间表现出显著变化。执行成本差异很大,但更高的成本并不能始终带来更接近的结果。提交消息和开发者讨论带来的对齐效果最大,而分类体系指导则始终能够降低运行时间。总体而言,本研究将日志移除确立为一项独特的软件维护任务,并表明可靠的自动化取决于准确确定移除范围,同时保留必要代码。据我们所知,这是首项从这一角度研究日志代码移除的工作。

查看原文(arXiv cs.AI)