ClusterCommit:一種基於專案叢集的實時缺陷預測方法

語言: CN / TW / HK

原文標題: ClusterCommit: A Just-in-Time Defect Prediction Approach Using Clusters of Projects

原文作者:Shehab M A, Hamou-Lhadj A, Alawneh L.

原文連結:http://ieeexplore.ieee.org/abstract/document/9825789

發表會議:SANER' 22

筆記作者:zhanS@SecQuan

筆記小編:cherry@SecQuan

大多數現有的 JIT 缺陷預測技術的目標是專案內缺陷預測,而在本文中,受 Nayrolles 等人[1]的啟發(Nayrolles 等人認為,對於工業專案而言,將高度耦合的不同專案的提交組合起來有助於提升 JIT 缺陷預測的效能,因為這些專案重用或共享同一個程式碼庫,因此它們也可能出現同樣的錯誤),作者提出了一種適用於共享公共庫和功能的專案叢集的模型。與現有技術不同的是,ClusterCommit 方法通過組合來自更大叢集的一組專案的提交(Commit)來訓練模型。這樣訓練的模型能夠適應於更多的專案。

圖 1 是 ClusterCommit 模型的框架。模型的輸入為一組共享了一些依賴項的專案,輸入可以由使用者自定義。接著需要對輸入的專案進行聚類以識別強耦合的各個子專案(這些子專案可能共享一個更大的程式碼庫)。對於聚類的每一個簇,提取對應的 Commit 來訓練模型。

Fig. 1 方法框架
  • 專案聚類:對於輸入的一組專案,通過依賴管理系統,如:Maven,提取每一個專案使用的庫。然後構建專案依賴圖(屬於社群圖),其中,節點是專案或者庫,邊是它們之間的依賴關係。注意,專案之間沒有邊連線,因為目標是要找到子專案之間共享的庫。作者使用 LP(Label Propagation,標籤傳播演算法)實現這一目標。

  • 特徵提取:表 1 是本文所提特徵(除了 SEXP)。這些特徵基於 Kamei 等人[2]的文章。在本文中,作者使用 Pearson 相關係數來衡量特徵之間的相關性。

Tab. 1 特徵
  • 打標籤:使用 Campos 等人提出的 RA-SZZ 演算法來打標籤。演算法原理挺簡單的,這裡就不再贅述。

  • 分類器:本文選用隨機森林作為分類器。

  • 模型評估:作者選擇如圖 2 所示的方法進行模型評估。具體來說,對於 Run 1,使用 P1 在訓練時間間隔內的提交以及 P2 落在訓練時間間隔內的提交作為訓練集,然後使用[b, c]段的提交作為測試集,;對於 P2,使用[g, h]段的提交作為測試集;對於 P3,使用[k, l]段的提交作為測試集。P3 的所有提交都沒有用於構建模型,這符合本文的思想:強耦合的專案可以用結果其他專案資料訓練的模型來預測缺陷。對於 Run 2,通過移動時間視窗,進行模型的訓練和測試流程。通過這種方式,模型評估能夠覆蓋所有的專案。

Fig. 2 模型評估方法
Fig. 3 資料來源

參考文獻

[1] Nayrolles M, Hamou-Lhadj A. Clever: Combining code metrics with clone detection for just-in-time fault prevention and resolution in large industrial projects[C]//Proceedings of the 15th international conference on mining software repositories. 2018: 153-164.

[2] Kamei Y, Shihab E, Adams B, et al. A large-scale empirical study of just-in-time quality assurance[J]. IEEE Transactions on Software Engineering, 2012, 39(6): 757-773.

[3] Neto E C, Da Costa D A, Kulesza U. The impact of refactoring changes on the szz algorithm: An empirical study[C]//2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER). IEEE, 2018: 380-390.

安全學術圈招募隊友-ing

secdr#qq.com