自动化检测与修补遗漏TODO注释的方法
软件工程
2024-05-13 v1
摘要
TODO注释被开发者广泛用于提醒自己或他人关于未完成的任务。换句话说,TODO注释通常与临时或次优的解决方案相关联。在实践中,所有等效的次优实现都应同时更新(例如,添加TODO注释)。然而,由于各种原因(如时间限制或疏忽),开发者可能会忘记甚至未意识到在所有必要的地方添加TODO注释,这导致了遗漏TODO注释的方法。这些遗漏TODO注释的方法中“隐藏”的次优实现,从长远来看可能会损害软件质量和可维护性。因此,本文提出了遗漏TODO注释方法检测与修补这一新任务,并开发了一个名为TDPatcher(TODO注释修补器)的新模型,用于自动向软件项目中的遗漏TODO注释方法修补TODO注释。我们的模型包含两个主要阶段:离线学习和在线推理。在离线学习阶段,TDPatcher采用GraphCodeBERT和对比学习,将TODO注释(自然语言)及其次优实现(代码片段)编码为向量表示。对于在线推理阶段,我们可以通过利用离线训练的模型来识别遗漏TODO注释的方法,并进一步确定其修补位置。我们通过从排名前10000的Python GitHub仓库中收集引入TODO注释的方法来构建数据集,并在其上评估了TDPatcher。广泛的实验结果表明,我们的模型在一系列基准测试上表现出色。我们进一步进行了一项真实环境评估,成功地从50个GitHub仓库中检测到了26个遗漏TODO注释的方法。
引用
@article{arxiv.2405.06225,
title = {Automating TODO-missed Methods Detection and Patching},
author = {Zhipeng Gao and Yanqi Su and Xing Hu and Xin Xia},
journal= {arXiv preprint arXiv:2405.06225},
year = {2024}
}