本文分享自華為云社區(qū)《華為云基于AI實現(xiàn)架構壞味道重構取得業(yè)界突破,相應文章已被軟工頂會FSE 2023收錄》,作者: 華為云軟件分析Lab。
基于AI技術實現(xiàn)架構壞味道檢測與重構建議是當前業(yè)界比較流行的做法,但此做法往往存在一個通病,即訓練數(shù)據(jù)集的質(zhì)量問題,如何構建大規(guī)模、高質(zhì)量的訓練數(shù)據(jù)成為制約算法有效性的關鍵挑戰(zhàn)。針對這項挑戰(zhàn),我們以Feature envy架構壞味道為例,利用一系列啟發(fā)式規(guī)則和一個基于決策樹的分類器,實現(xiàn)了一種基于真實數(shù)據(jù)的高質(zhì)量重構數(shù)據(jù)集構造方法,并利用此方法構建的數(shù)據(jù)集將Feature envy架構壞味道的檢測與重構準確率提升到業(yè)界SOTA水平。此工作來自華為云技術創(chuàng)新Lab和北京理工大學劉輝教授團隊的合作項目,相應產(chǎn)出已落地至華為公司內(nèi)部研發(fā)工具,相關研究成果已被軟件工程領域頂會ESEC/FSE 2023(CCF A類)正式收錄,文章詳細內(nèi)容已經(jīng)公開,歡迎查閱。
圖1 Feature envy檢測方法概覽
如何獲得真實世界的移動方法重構數(shù)據(jù)集
我們通過一系列啟發(fā)式規(guī)則和一個基于決策樹的分類器來自動過濾現(xiàn)有的重構檢測工具的誤報。如果移動方法重構的源類在新版本中不存在或者目標類在舊版本中不存在,我們過濾這樣的重構,因為它們通常是與其它重構緊密相關的,例如提取類重構。其次我們也過濾掉重寫方法,測試方法,以及構造函數(shù),因為測試方法與生產(chǎn)代碼無關,其目的是為了測試生產(chǎn)代碼中某個方法是否符合開發(fā)者的預期。而重寫方法和構造函數(shù)通常不能被移動由于其編程特性。我們也利用了一個決策樹分類器來進一步過濾簡單的啟發(fā)式規(guī)則無法解決的情況。由于移動方法通常會涉及調(diào)用關系的遷徙,因此我們分別提取移動方法在兩個版本上的調(diào)用關系以及它們的語句匹配關系作為決策樹的特征。通過這兩步過濾,使開發(fā)者可以在大量提交中自動挖掘移動方法重構,降低其誤報的存在。
如何實現(xiàn)Feature envy的智能檢測與重構
通過在大量的項目和提交上挖掘移動方法重構,并應用我們的誤報過濾方法,我們可以自動地收集真實世界中由開發(fā)者所執(zhí)行的大量且高質(zhì)量的移動方法重構示例。為了訓練一個Feature envy檢測模型,我們也在相同的項目中隨機地等比例采樣了未移動的方法作為訓練數(shù)據(jù)集中的負樣本。我們的模型輸入包括文本度量和結構度量兩部分。其中文本度量由移動方法名,源類名,和目標類名三方面組成。結構度量包含移動方法分別和源類以及目標類之間的Jaccard距離(dist),與源類和目標類中的方法的調(diào)用次數(shù)(mcmc),以及與源類和目標類中的方法的調(diào)用個數(shù)(cbmc)?;谟柧毢玫哪P停覀兛梢詸z測真實世界中的項目是否存在Feature envy方法。并為其提供解決方案。對于待檢測的方法,我們也提出了一系列啟發(fā)式規(guī)則來降低誤報的可能性。包括數(shù)據(jù)類和工具類的過濾等。這樣的類通常是為了向外部提供數(shù)據(jù)訪問和操作。因此它們會被外部的方法頻繁訪問但訪問此類的方法并不應該被移動到這樣的類中。
圖2 Feature envy模型
方法效果評估
表1 評估結果
我們選擇了當前最先進的基于深度學習的方法(feDeep)以及知名的基于啟發(fā)式的方法(JDeodorant和JMove)。我們的方法在5個真實世界的項目上與這些方法相比,針對Feature envy檢測的準確性有明顯的提升。我們由此推斷出利用真實世界代碼訓練出的模型在實際檢測的過程中具備更好的表現(xiàn)。另外,所提出的方法在重構推薦上相比于現(xiàn)有的基于深度學習的方法也有明顯的提升。
PaaS技術創(chuàng)新Lab隸屬于華為云,致力于綜合利用軟件分析、數(shù)據(jù)挖掘、機器學習等技術,為軟件研發(fā)人員提供下一代智能研發(fā)工具服務的核心引擎和智慧大腦。我們將聚焦軟件工程領域硬核能力,不斷構筑研發(fā)利器,持續(xù)交付高價值商業(yè)特性!加入我們,一起開創(chuàng)研發(fā)新“境界”!文章來源:http://www.zghlxwxcb.cn/news/detail-747686.html
點擊關注,第一時間了解華為云新鮮技術~文章來源地址http://www.zghlxwxcb.cn/news/detail-747686.html
到了這里,關于基于AI的架構優(yōu)化:創(chuàng)新數(shù)據(jù)集構造法提升Feature envy壞味道檢測與重構準確率的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!