论文

通过问题列表生成和上下文增强改进基于 LLM 的 Go 代码审查

Improving LLM-Based Go Code Review through Issue-List Generation and Context Augmentation

上下文与知识上下文工程

摘要

LLM 在自动化代码审查方面表现出了强大的潜力,但其实用性在很大程度上取决于生成和上下文策略的设计。在本文中,我们研究如何通过生成策略和上下文增强来改进基于 LLM 的代码审查。我们首先提出一个问题列表审查范式,其中 LLM 枚举所有潜在问题,而不是仅报告单个最重要的问题(即主要问题审查)。然后,我们系统地比较三种类型的代码上下文增强——相邻、基于 LSP 的语义和基于 IR 的相似共同变化上下文——并研究它们如何影响问题发现。最后,我们整合来自无上下文和上下文增强生成的候选者以提高评论覆盖率,并引入细化引导的修剪以将候选者列表保持在实际大小。我们使用下游代码细化作为主要指标,在 1,438 个 Go 审查实例上评估我们的方法,即候选列表包含至少一条注释的频率,该注释会导致与最终人工修订相同的代码更改。为了进行比较,我们在相同的基于细化的评估下通过 CodeReviewer(专门为生成评论评论而训练的模型)以及 真值 人类评论评论(作为实际上限)来评估评论。结果表明,我们的最佳配置结合了问题列表审查、相邻和相似的共同更改上下文以及候选集成,达到了 28.00% 的细化精确匹配,与没有任何附加上下文的主要问题审查 (17.15%) 相比,统计上显着提高了 10.85 个百分点,大大优于 CodeReviewer (15.02%),并接近人类预言机 36.09% 的上限。我们的细化引导修剪将前 5 名的平均候选数从 7.2 个减少到 3.1 个,同时几乎保留了全部优势,使候选列表更易于检查。