【CSDN 萨德基】标识符审核是大规模软件合作开发操作过程中的两个重要部分,挤占了标识符递交人员和标识符评审委员委员的大批天数。Google 也不值得一提,有鉴于此,她们选用了前段时间在字符串数学模型中的一流控制技术,以手动化解 Google 日常生活合作开发组织工作业务流程中的标识符审核文章。
书名门牌号:https://ai.googleblog.com/2023/05/resolving-code-review-comments-with-ml.html
翻译者 | Alexander Fr ö mmgen,Lera Kharatyan,Google核心系统和新体验项目组
翻译者 | 没错如月
公司出品 | CSDN(ID:CSDNnews)
在标识符审核操作过程中,评审委员委员会审核标识符中的问题并撰写文章要求翻译者展开标识符更动。在 Google,她们每月看到上百万条评审委员委员的文章,翻译者们需要耗费大约 60 两分钟的天数来应付那些文章,并依照文章的文档提出标识符更动。她们研究发现,标识符翻译者为解决评审委员委员文章必须牺牲的组织工作天数几乎随文章数量非线性增长。然而,借助于机器学习(ML),她们能手动化并精简标识符审核操作过程,比如,依照标识符审核文章手动得出相关联的标识符更改。
那时,她们选用了前段时间在字符串数学模型中的一流控制技术,以手动化解 Google 日常生活合作开发组织工作业务流程中的标识符审核文章(即将发布)。止那时,Google 的技师已经能通过应用 ML 提议的修正来处理大批的标识符评审委员委员评审委员提议。她们预计这将每月为 Google 节约数千小时的标识符审核天数。她们接到了很多非常积极的意见反馈,说明了机器学习提议的标识符修正确实提高了 Google 合作开发者的劳动生产率 , 能够让她们著眼于更有远见和复杂的各项任务。
预估标识符修正
我们首先体能训练了两个数学模型来预估化解文章所需的标识符修正。该数学模型在各种代码各项任务和相关的合作开发者活动 ( 比如 , 重新命名两个表达式 , 化解构筑操作过程中的严重错误 , 撰稿两个文件 ) 上展开了预体能训练。然后,选用审核过的标识符修正、评审委员委员的文章以及翻译者执行的化解那些文章的修正,对该数学模型展开某一各项任务的松动。
这是两个如前所述 ML 提议展开标识符解构的两个示例
Google 选用两个乙烯库房(monorepo),这是一种源标识符管理策略,所有的标识符和资源都储存在同两个库房中,而不是零散在多个库房中。这种策略有许多优点,包括标识符共享和重用、大规模解构、协作和依赖管理等。这使得她们的体能训练数据集能够包含用于构筑 Google 最新软件及其之前版本的海量标识符。
为了改进数学模型质量,她们不断迭代体能训练数据集。比如,她们比较了包含每个文件的单个评审委员委员文章的数据集与每个文件的多个文章的数据集的数学模型性能,并选用分类器依照两个小型、精心策划的数据集来清理体能训练数据,以选择具有最佳离线精度和召回率指标的数学模型。
服务基础设施和用户新体验
究,探索了不同的用户新体验(UX)替代方案。然后,她们依照来自内部测试版(即,合作开发中的功能测试)的洞察,包括用户意见反馈(比如,在提议的撰稿旁边 加入 ” 这有帮助吗?(Was this helpful)” 按钮),对功能展开了优化。
最终的数学模型被校准为目标 准确率为 50%。也就是说,她们调整了数学模型和提议过滤,以使她们的评估数据集中 50% 的提议修正是正确的。一般来说,提高目标准确率会减少显示的提议编辑的数量,降低目标准确率会导致更多的严重错误提议撰稿。严重错误的提议撰稿会挤占合作开发者的天数,降低合作开发者对该功能的信任。她们发现,目标准确率为 50% 提供了两个良好的平衡。
在较高层次上,对于每个新的评审委员委员文章,她们以与体能训练相同的格式生成数学模型输入,查询数学模型,并生成提议的标识符修正。如果数学模型对预估有信心,并且满足了一些额外的启发式规则,她们就会将提议的修正发送到下游系统。下游系统,即标识符审核前端和集成合作开发环境(IDE),向用户展示提议的撰稿,并记录用户交互,如预览和应用事件。两个专门的管道收集那些日志,并生成汇总洞察,比如,本博客文章中报告的总体接受率。
ML 提议撰稿(ML-suggested edits)
合作开发者在标识符审核工具和 IDE 中与 ML 提议的撰稿展开交互。依照用户研究的洞察,集成到代码审核工具中最适合于流线型的审核新体验。IDE 集成提供了额外的功能,并支持在审核过的标识符状态(右图)上有冲突的本地更动情况下,对 ML 提议的撰稿(左图)展开三方合并,合并到合并结果(中图)。
IDE 中的三向合并的演示
结果
离线评估表明,数学模型以 50% 的目标精确度化解了 52% 的文章。测试版和完整内部发布的在线指标确认了那些离线指标,也就是说,她们看到约 50% 的所有相关评审委员委员文章上,数学模型提议的信心超过了她们的目标数学模型信心。标识符翻译者应用了所有预览过的提议撰稿的 40% 到 50%。
在测试版期间,她们利用 ” 没有帮助(not helpful)” 的意见反馈来识别数学模型的常见失败模式。她们实施了服务天数启发式规则来过滤那些,并因此减少了显示的严重错误预估的数量。通过那些更动,她们用质量换取了数量,并观察到现实世界接受率的增加。她们的测试版推出显示出两个潜在的问题:标识符翻译者只预览了约所有生成的提议编辑的 20%。她们优化了用户新体验,在评审委员委员文章旁边引入了两个显眼的 ” 显示 ML 撰稿(Show ML-edit)” 按钮(参见上图),在发布时的总预览率约提升到了 40%。她们还发现,由于翻译者在审查操作过程中展开了冲突的更动,标识符审核工具中的提议撰稿经常不适用。她们用两个按钮化解了这个问题,这个按钮在标识符审核工具中打开了两个合并视图,用于提议的撰稿。她们现在观察到,那些中有超过 70% 的在标识符审查工具中应用,不到 30% 的在 IDE 中应用。所有那些改变使她们能够将选用 ML 提议撰稿化解的评审委员委员文章的总体比例增加了两倍,从测试版到完全内部发布。在 Google 能帮助她们每月手动化解几十万条文章。
提议过滤漏斗
她们看到 ML 提议的撰稿在生产中化解了评审委员委员文章的广泛范围。这包括简单的局部解构和在标识符中零散的解构,如上述博客文章中的示例所示。该功能化解了需要标识符生成、解构和导入的较长和非正式措辞的文章。
两个需要标识符生成、解构和导入的较长且标识符评审委员提议的示例
数学模型也能回应复杂的文章并产生较大范围的标识符修正(如下所示)。生成的测试案例遵循现有的单元测试模式,同时更动文章中描述的细节。此外,撰稿提议了两个全面的测试名称,反映了测试的语义。
数学模型回应复杂文章并生成大批标识符修正的能力的示例
结论和未来组织工作
在这篇文章中,她们介绍了两个机器学习( ML)辅助功能,以减少在标识符审核相关修正上耗费的天数。目前,在 Google 选用的编程语言中,大批的所有可操作的标识符审核文章都能通过应用 ML 提议的撰稿来化解。她们将在所有 Google 合作开发者中展开的为期 12 周的 A/B 实验将进一步衡量该功能对整体合作开发者劳动生产率的影响。
她们正在全面优化整个控制技术栈。这包括提高数学模型的质量和召回率,给合作开发者提供更流畅的选用新体验,通过改进发现性(提供清晰的界面和导航,以帮助用户快速找到她们所需的功能,而无就能获得 ML 的标识符修正提议。
致谢
这是 Google 核心系统和新体验项目组、Google Research 和 DeepMind 的许多人的共同研究成果。她们特别感谢 Peter Choy 为她们的合作提供支持,以及她们项目组所有成员的关键贡献和有益提议,包括 Marcus Revaj、Gabriela Surita、Maxim Tabachnyk、Jacob Austin、Nimesh Ghelani、Dan Zheng、Peter Josling、Mariana Stariolo、Chris Gorgolewski、Sascha Varkevisser、Katja Gr ü nwedel、Alberto Elizondo、Tobias Welp、Paige Bailey、Pierre-Antoine Manzagol、Pascal Lamblin、Chenjie Gu、Petros Maniatis、Henryk Michalewski、Sara Wiltberger、Ambar Murillo、Satish Chandra、Madhura Dudhgaonkar、Niranjan Tulpule、Zoubin Ghahramani、Juanjo Carin、Danny Tarlow、Kevin Villela、Stoyan Nikolov、David Tattersall、Boris Bokowski、Kathy Nix、Mehdi Ghissassi、Luis C. Cobo、Yujia Li、David Choi、Krist ó f Moln á r、Vahid Meimand、Amit Patel、Brett Wiltshire、Laurent Le Brun、Mingpan Guo、Hermann Loose、Jonas Mattes、Savinee Dancs。
