核心概念
不同類型的自承認技術債務需要不同程度的償還努力,其中代碼/設計債務、需求債務和測試債務需要更大的努力,而文檔債務需要較少的努力。我們提出了一種基於文本信息預測自承認技術債務償還努力的創新方法,並證明深度學習方法優於傳統機器學習方法。
要約
本研究旨在分析源代碼和提交消息,以調查償還不同類型的自承認技術債務(SATD)和非SATD項目所需的努力,自動估計這種償還努力,並確定與不同償還努力水平相關的關鍵詞。
首先,我們發現SATD項目的償還需要更多的代碼更改和文件更改,以及更高水平的代碼更改,這表明SATD項目需要更多的努力來處理其對系統其他部分的連鎖影響。
其次,我們發現不同類型的SATD項目需要不同程度的償還努力。文檔債務需要最少的努力,而需求債務需要最大的努力。代碼/設計債務和測試債務的努力程度介於兩者之間。
此外,我們提出了一種基於SATD文本信息預測償還努力的創新方法,並證明深度學習方法(如BERT和TextCNN)優於傳統機器學習方法。我們的模型能夠準確預測所需的代碼更改行數、文件更改數量以及不同重要性級別的代碼更改。
最後,我們分析並總結了與不同償還努力水平相關的關鍵詞。當償還努力較低時,關鍵詞通常與錯誤修復、警告更新或代碼註釋有關。而當償還努力較高時,關鍵詞則與代碼清理、更多測試和文檔更新等有關。這些發現有助於理解影響SATD償還複雜性的因素。
統計
添加的代碼行數(LA)平均值:文檔債務48.5,需求債務126.0,測試債務118.2,非SATD91.0
刪除的代碼行數(LD)平均值:文檔債務24.2,需求債務43.7,測試債務47.9,非SATD41.7
添加的文件數(FA)平均值:文檔債務0.24,需求債務0.83,測試債務0.83,非SATD0.62
修改的文件數(FM)平均值:文檔債務3.02,需求債務3.28,測試債務2.43,非SATD3.92
低重要性代碼更改(LCC)平均值:文檔債務1.28,需求債務9.76,測試債務8.51,非SATD5.63
中等重要性代碼更改(MCC)平均值:文檔債務0.66,需求債務5.83,測試債務4.08,非SATD3.10
高重要性代碼更改(HCC)平均值:文檔債務0.14,需求債務0.87,測試債務0.49,非SATD0.39
關鍵重要性代碼更改(CCC)平均值:文檔債務0.12,需求債務1.02,測試債務0.56,非SATD0.50
引用
"當償還努力較低時,關鍵詞通常與錯誤修復、警告更新或代碼註釋有關。"
"當償還努力較高時,關鍵詞則與代碼清理、更多測試和文檔更新等有關。"