论文

向开发人员学习:面向 Linux 实现大规模可靠补丁验证

Learning From Developers: Towards Reliable Patch Validation at Scale for Linux

摘要

补丁审查对于软件开发至关重要,尤其是在高度依赖志愿工作的分布式开源开发中,例如Linux。本文研究了过去 10 年 Linux 内存管理子系统的补丁审查,以描述大规模补丁审查所面临的挑战。我们的研究表明,尽管有各种各样的自动检查工具,但审查过程仍然主要依赖于人类的努力。尽管内核开发人员努力审查所有补丁提案,但他们很难跟上不断增加的提交量,并且很大程度上依赖于少数开发人员进行这些审查。为了帮助扩展补丁审查流程,我们引入了 FLINT,这是一个补丁验证系统框架,它综合了开发人员过去讨论中的见解,并自动分析补丁建议的合规性。 FLINT 采用基于规则的分析,基于开发人员之间过去的讨论和 LLM,不需要对新数据进行训练或 微调,并且可以以最少的人力不断改进。 FLINT 使用多阶段方法从过去的讨论中有效地提取重要信息。随后,当补丁提案需要审核时,FLINT 会检索相关的验证规则进行验证,并生成一份由参考支持的报告,开发人员可以轻松解释和验证该报告。 FLINT 针对传统工具难以检测的错误,范围从可维护性问题(例如设计选择和命名约定)到复杂的并发问题(例如死锁和数据竞争)。 FLINT 在 Linux v6.18 开发周期中检测到 2 个新问题,在之前版本中检测到 7 个问题。与仅使用 LLM 的基线相比,FLINT 在并发错误方面的 真值 覆盖率分别提高了 21% 和 14%。此外,FLINT 的误报率为 35%,低于基线。