论文
CASCADE:通过自动测试生成检测代码和文档之间的不一致
CASCADE: Detecting Inconsistencies between Code and Documentation with Automatic Test Generation
摘要
保持代码和文档之间的一致性是软件开发中一个至关重要但经常被忽视的方面。即使是很小的不匹配也会让 API 用户感到困惑、引入新的错误并增加整体维护工作量。这就产生了对自动化解决方案的需求,这些解决方案可以帮助开发人员识别代码文档的不一致之处。然而,由于自动报告仍然需要人工确认,误报会带来严重后果:浪费开发人员时间并阻碍实际采用。我们引入 CASCADE(通过执行对源代码和文档进行一致性分析),这是一种用于检测不一致情况的新颖工具,重点是减少误报。 CASCADE 利用 大语言模型 (LLM) 直接从自然语言文档生成单元测试。由于这些测试源自文档,因此执行期间的任何失败都表明代码的记录行为和实际行为之间可能存在不匹配。为了最大限度地减少误报,CASCADE 还从文档中生成代码来交叉检查生成的测试。根据设计,仅当满足两个条件时才会报告不一致:现有代码未通过测试,而从文档生成的代码通过了相同的测试。我们在一个新颖的数据集上评估了 CASCADE,该数据集包含来自开源 Java 项目的 71 个不一致和 814 个一致的代码文档对。此外,我们将 CASCADE 应用到其他 Java、C# 和 Rust 存储库,在那里我们发现了 13 个以前未知的不一致问题,其中 10 个随后已得到修复,这证明了 CASCADE 的精度及其对现实世界代码库的适用性。