環球新動態:來自 Google 開發者的一手實戰:使用機器學習解決代碼審查評論
【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 主線熱度升溫,關注這些核心方向
財聯社訊(編輯梓?。袢眨?月30日),CPO概念板塊繼續拉升,個股普遍表現活躍。截至午間收盤,金百澤獲
-
126 億美元已落地!沙特正式成立四大經濟特區 特區內實體享受稅收優惠 天天熱資訊
財聯社5月30日訊(實習編輯李曉雯)當地時間周一(5月29日),在利雅得舉辦的沙特經濟特區投資論壇上,沙特
-
頭條焦點:“油箱門”后續來了!比亞迪開放專利 股價一度漲近 4%
財聯社5月29日訊(編輯胡家榮)今日汽車股多數反彈,其中華晨中國(01114 HK)、比亞迪股份(01211 HK)、長城
-
社??缡∞D移手續的流程是什么?社會保險法第十九條是什么?
跨省社保轉移的流程: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 已登陸蘋...