基于Doc2Vec的源代码嵌入的Bug预测及软件缺陷严重程度等级预测
基于Doc2Vec的源代码嵌入的Bug预测
在软件开发中,准确预测代码中的Bug至关重要。为了方便大家复现和对比结果,相关文件可在链接 http://doi.org/10.5281/zenodo.4724941 直接获取。下面将详细介绍实验结果,通过回答三个研究问题,来深入了解基于Doc2Vec的源代码嵌入在Bug预测中的应用。
RQ1:是否存在一种Doc2Vec参数化方法,能产生比基于代码指标学习更好或相似的结果?
我们首先探究是否存在一种Doc2Vec参数化方法,用于Bug预测时能生成与使用代码指标同样有表现力的特征。由于代码指标源自源代码,所以合理的抽象语法树(AST)表示有望取得相当的效果。为找到这样的表示,我们尝试了多种Doc2Vec模型参数化方法和众多机器学习模型。
在异常检测领域,由于数据集高度不平衡,仅用准确率来衡量模型性能是不够的。更好的性能指标是召回率(找到的相关类别的比例)和精确率(找到的实例中相关的比例)。通常这两者之间存在权衡关系,例如有些模型精确率高达0.58,但召回率约为0.34;而有些模型召回率为0.7,但精确率仅为0.3。为综合考虑精确率和召回率,我们使用F分数,它是召回率和精确率的调和平均值,取值范围在0到1之间,能很好地反映模型在不平衡环境中的预测能力。
以下是基于源代码嵌入和指标学习的F分数比较:
| 模型名称 | 嵌入 | 代码指标 | 参数(向量大小,窗口大小,算法) |
| — | — | — | — |
| Bayes | 0.414 | 0.325 | 75, 4, PV - DBOW |
订阅专栏 解锁全文
27

被折叠的 条评论
为什么被折叠?



