ClusterCommit:一種基於項目集羣的實時缺陷預測方法

語言: CN / TW / HK

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

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

原文鏈接:https://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