环球新动态:来自 Google 开发者的一手实战:使用机器学习解决代码审查评论
2023-05-30 15:22:37来源:ZAKER科技
【CSDN 编者按】代码审查是大规模软件开发过程中的一个重要部分,占用了代码提交人员和代码审查员的大量时间。Google 也不例外,为此,他们采用了最近在序列模型中的先进技术,以自动解决 Google 日常开发工作流程中的代码审查评论。
(资料图片仅供参考)
原文地址:https://ai.googleblog.com/2023/05/resolving-code-review-comments-with-ml.html
作者 | Alexander Fr mmgen,Lera Kharatyan,谷歌核心系统和体验团队
译者 | 明明如月
出品 | 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 中显示预测结果
开发者在代码审查工具和 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 建议的编辑的功能,并将功能集成到 IDE 中,以便代码变更的作者能够在获取审查人员的描述时就可以获得 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。
责任编辑:hnmd003
相关阅读
-
环球新动态:来自 Google 开发者的一手实战:使用机器学习解决代码审查评论
【CSDN编者按】代码审查是大规模软件开发过程中的一个重要部分,占用了代码提交人员和代码审查员的大量时间
2023-05-30 -
【快播报】荣耀 CEO 赵明:积极应对市场起伏,年研发投入预计达 10%
5月29日,荣耀在成都正式发布了全新了荣耀90系列手机,在主打写真人像拍摄和3840Hz超高频PWM调光的同时,荣
2023-05-30 -
微软待办应用 To Do 已登陆苹果 Apple Watch_焦点热闻
品玩5月30日讯,根据Microsoft365公布的路线图,微软待办应用(ToDo)原计划6月登陆AppleWatch,不过微软官
2023-05-30 -
微软 Build 年度大会开幕构建超级 AI 生态,微美全息(WIMI.US)超前点播 AIGC 技术创新
继两周之前谷歌(GOOG US)总部举办I O开发者大会之后,5月24日,微软(MSFT US)Build开发者大会也在总部西雅
2023-05-30
相关阅读
-
环球新动态:来自 Google 开发者的一手实战:使用机器学习解决代码审查评论
【CSDN编者按】代码审查是大规模软件开发过程中的一个重要部分,占用了代码提交人员和代码审查员的大量时间
-
资产置换是什么意思?资产置换需要缴纳什么税?
资产置换是什么意思?是指上市公司控股股东以优质资产或现金置换上市公司的呆滞资产,或以主营业务资产置...
-
报道:英伟达牵手联发科,入侵高通领地
图片来源@视觉中国文|赛博汽车AI芯片业务发展的风生水起之际,英伟达也没忘记汽车业务这一新增长引擎。5月
-
焦点资讯:股价 4 天涨翻倍!CPO 概念又出“人气牛”,AI 主线热度升温,关注这些核心方向
财联社讯(编辑梓隆),今日(5月30日),CPO概念板块继续拉升,个股普遍表现活跃。截至午间收盘,金百泽获
-
126 亿美元已落地!沙特正式成立四大经济特区 特区内实体享受税收优惠 天天热资讯
财联社5月30日讯(实习编辑李晓雯)当地时间周一(5月29日),在利雅得举办的沙特经济特区投资论坛上,沙特
-
头条焦点:“油箱门”后续来了!比亚迪开放专利 股价一度涨近 4%
财联社5月29日讯(编辑胡家荣)今日汽车股多数反弹,其中华晨中国(01114 HK)、比亚迪股份(01211 HK)、长城
-
社保跨省转移手续的流程是什么?社会保险法第十九条是什么?
跨省社保转移的流程:1、用人单位或参保人员向新参保地社保经办机构提出基本养老保险关系转移接续的书面...
-
计划生育证明格式是怎么样的?计划生育证明包括哪些内容?
计划生育证明格式是,包括当事人的姓名、性别、居住社区等基本信息;当事人的婚姻状况;子女状况;符合计划...
-
套牌车的处罚的法律依据是什么?伪造变造的检验合格标志怎么处罚?
套牌车的处罚分为两种:1、如果是当事人驾驶套牌车的,由交警部门收缴牌照,并扣留机动车,处十五日以下...
-
产业投资基金是什么意思?产业投资基金和股权投资基金的区别
产业投资基金是什么意思?产业投资基金又称为产业基金,是指一种对未上市企业进行股权投资和提供经营管理...
-
无证驾驶摩托车处罚是怎么样的?无证驾驶摩托车会被罚多少钱?
开摩托车无证驾驶处罚:由公安机关交通管理部门处二百元以上二千元以下罚款,可以并处十五日以下拘留。...
-
信用卡透支额度一般是多少?信用卡透支逾期还不上会坐牢吗?
信用卡透支额度一般是多少?不同银行的信用卡透支额度是不一样的,以中国银行举例分析:预借现金额度1万元...
-
除息日股票为什么会跌?除息日买入股票划算吗?
除息日股票为什么会跌?因为股票除权除息日后股票的总股本会有所增加,会稀释股票的每股收益,因此股票价...
-
民法典第一千零四十九条内容是什么?申请结婚登记的流程是什么?
新婚姻法规定结婚年龄是男性不得早于二十二周岁,女性不得早于二十周岁,未到法定婚龄属于无效的婚姻,...
-
信用社借款有哪几种贷款?信用社借款利率是多少?
信用社借款有哪几种贷款?信用社借款种类包括:短期贷款、中期贷款和长期贷款。其中,短期贷款指1年以内(...
-
珠海居住证办理流程是怎么样的?居住证暂行条例第九条是什么内容?
珠海居住证办理流程是:申领人携带本人身份证明材料和近期数码照片图像号到居住地所在的居住证受理点提...
-
变造的机动车登记证书的后果是什么?买卖车辆都需要提供哪些手续?
套牌车不能买。伪造、变造或者使用伪造、变造的机动车登记证书、号牌、行驶证、驾驶证的,由公安机关交...
-
世界今日讯!康师傅重庆工厂启动食品安全月活动
5月29日,位于两江新区的康师傅重庆工厂举办2023年食品安全宣传月启动大会。
-
法医鉴定轻微伤标准是怎么样的?人体损伤程度鉴定标准是什么?
轻伤是指使人肢体或者容貌损害,听觉、视觉或者其他器官功能部分障碍或者其他对于人身健康有中度伤害的...
-
主力资金指的是哪些资金?股票怎么看主力资金进出?
主力资金指的是哪些资金?主力资金就是指市场上的大资金,能够引起股票价格剧烈上涨或突然下跌的资金。典...
-
中华人民共和国民法典第一千零七十九条内容是什么?起诉离婚的流程是什么?
发现妻子出轨该由当事人自行处理,因为一般出轨行为属于道德方面的范畴,法律不予规范。但如果出轨方与...
-
怎样开公司?企业法人登记管理条例施行细则第十五条的规定内容是什么?
开一家公司的流程如下:1、确定公司名称、形式、办公场地等基本条件、准备公司章程等相关材料;2、办理名...
-
数字经济释放新增长动力!数字经济是什么意思?
数字经济释放新增长动力!截至4月底,全国互联网宽带接入端口数量达10 95亿个,5G基站总数达273 3万个...
-
三险一金是什么?三险一金都包含哪三险?
三险一金指的是养老保险、失业保险、医疗保险,和住房公积金。但是现在实行的是五险一金的保障制度,即...
-
解除劳动合同的条件有哪些?中华人民共和国劳动合同法第三十六条内容是什么?
辞职报告要按照下列格式写:1、在第一行正中写上辞职报告;2、称呼之后,书写正文;3、明确表达辞职申请,...
-
小额信贷是什么意思?小额信贷逾期影响征信吗?
小额信贷是什么意思?小额信贷(Microfinance),从国际流行观点看,是指专向中低收入阶层提供小额度的持续...
-
派遣证有什么用?中华人民共和国档案法第六条是什么内容?
派遣证的作用有:毕业生到单位报到的证明,用人单位凭就业报到证为毕业生办理手续;当地公安部门凭就业报...
-
星辉娱乐董秘回复:感谢您的关注和宝贵建议!公司将围绕市场需求不断优化产品结构,有序拓展玩具的新品类
星辉娱乐(300043)05月30日在投资者关系平台上答复了投资者关心的问题。
-
婚姻登记工作规范第二十八条都有什么内容?受理结婚登记申请的条件是哪里?
结婚证的办理流程:(一)申请要求结婚的男女双方,须持本人户口证明、居民身份证,共同到一方户口所在地...
-
TRIX指标是什么?TRIX指标如何运用?
TRIX指标是什么?TRIX指标也称为三重指数平滑移动平均指标,它根据移动平均线理论,对一条平均线进行三次...
精彩推荐
阅读排行
精彩推送
- 二手房营业税怎么算?二手房营业...
- 发生家庭暴力后应该怎么处理?反...
- 农村养老保险每月领多少钱?领取...
- 百万医疗和补充医疗冲突吗?和补...
- 【天天新视野】富德保险坑了多少...
- 新华百万医疗险怎么样?买多少年...
- 中国平安百万医疗险多少钱一年?...
- 当AI开始制药:研发周期可缩短一...
- 有3个机场的海岛,还要建新机场...
- 股票说见光死是什么意思?股票见...
- 个体工商户应当于每年什么时间进...
- 快播公司破产注销 当前要闻
- 要闻速递:广汽本田全新皓影e:HE...
- 怎样写低保申请书?低保申请书应...
- 结婚年龄男不得早于多少周岁?民...
- 财付通是哪个平台的支付?财付通...
- 二胎新政策都有哪些内容?二胎新...
- 什么是权重股?权重股和蓝筹股的...
- 台湾有证券交易所吗?台湾证券交...
- 短线炒股一般持有几天?散户适合...
- 保险投保是什么意思?投保和买保...
- 碳中和是什么?碳中和项目怎么赚...
- 兴业银行信用卡额度一般多少?兴...
- 哪些银行办理小额贷款?小额贷款...
- 环球最新:跨代组合 新“太空出...
- 我国首个万米深地科探井开钻
- 首届元宇宙应用场景大赛成果发布...
- 【快播报】荣耀 CEO 赵明:积...
- 四大亮点解读这场生态合作伙伴大会
- 微软待办应用 To Do 已登陆苹...