论文

我们肯定错过了这条评论:检测和修复 Linux 内核评论中的过时函数引用

We Must Have Missed This Comment: Detecting and Repairing Stale Function References in Linux Kernel Comments

摘要

随着 Linux 内核的发展,代码注释可能会变得过时,因为它们引用的函数可以独立重构或删除,而无需对注释进行相应更新。这种陈旧的函数引用可能会误导维护人员,从而阻碍代码的理解。之前检测代码注释不一致的工作主要集中在解决 Javadoc 注释与其直接注释函数之间的语义不一致问题,这使得它们不适用于 Linux 内核中这种由外部引起的陈旧情况。因此,我们提出了 ReCite,一种识别和修复此类陈旧引用的三阶段方法:(1)检测未解析的函数形式符号——注释中的符号似乎引用了函数,但在当前代码库中找不到匹配的函数,(2)通过 Git 历史记录跟踪每个未解析符号的演化历史,以及(3)基于演化历史和当前代码上下文生成基于 LLM 的修复建议。在 Linux 内核 v6.18-rc1 上,ReCite 检测到 869 个陈旧引用并生成修复建议。对 200 起维修样本的手动评估表明,178 起(89.0%)提供了有用的维修指导,85 起(42.5%)可直接适用。在我们提交的 75 个补丁中,有 50 个已被接受。我们还根据经验研究了所有未解决的函数形式符号。