从缺陷报告到代码质量:基于CodeBERT的Transformer分类方法

《Computers》:From Bug Reports to Code Quality: A Transformer-Based Classification Approach Using CodeBERT

【字体: 大 中 小 】 时间:2026年08月01日 来源:Computers 5.2

编辑推荐:

  在软件维护过程中保持代码质量是一项持续挑战,因为缺陷修复活动常常引入新的代码气味(code smell),加速长期技术债务(technical debt)。尽管缺陷报告分类已被应用于严重性预测和开发者分类,但将其用于主动区分代码质量影响缺陷(Code-Qual

  
在软件维护过程中保持代码质量是一项持续挑战,因为缺陷修复活动常常引入新的代码气味(code smell),加速长期技术债务(technical debt)。尽管缺陷报告分类已被应用于严重性预测和开发者分类,但将其用于主动区分代码质量影响缺陷(Code-Quality-Impacting Bugs, CQIBs)与非代码质量影响缺陷(Non-Code-Quality-Impacting Bugs, NQIBs)仍未被充分探索。研究人员提出了一种基于Transformer(Transformer)的分类框架,在包含25,000多个缺陷报告片段的平衡数据集上微调CodeBERT(CodeBERT),该数据集来自四个Apache项目(Camel、CloudStack、Geode和HBase)。研究人员评估了两种训练策略——顺序迁移学习(sequential transfer learning)和单独微调(individual fine-tuning),并将两者与已发表的基于CNN(CNN)的基线以及BERT(BERT)、RoBERTa(RoBERTa)和DeBERTa(DeBERTa)进行了比较。在5折交叉验证(5-fold cross-validation)下,单独微调CodeBERT在Camel、CloudStack、Geode和HBase上分别取得了0.924、0.866、0.858和0.845的加权F1(weighted-F1)分数,平均为0.873。顺序迁移学习在Camel上达到了89.8%的平均准确率和92.4%的峰值准确率。CodeBERT是本次比较中表现最佳的Transformer,超越了BERT(0.790)、RoBERTa(0.753)和DeBERTa(0.742)的平均加权F1。严格的预处理、训练折内的类别平衡以及分层评估对结果有显著贡献。
### 论文解读:从缺陷报告到代码质量——基于CodeBERT的Transformer分类方法

#### 研究背景与问题
软件维护过程中,修复缺陷是保证正确性的必要操作,但修复本身可能无意中引入新的代码气味(code smell),从而降低结构质量并加速长期技术债务。缺陷跟踪系统(如Jira)为每个项目累积数千份缺陷报告,而开发者缺乏自动化工具来预先评估哪些报告的缺陷在修复后可能损害代码质量。尽管已有研究将缺陷报告分类用于严重性预测和开发者分配,但将其用于主动区分代码质量影响缺陷(Code-Quality-Impacting Bugs, CQIBs)与非代码质量影响缺陷(Non-Code-Quality-Impacting Bugs, NQIBs)仍未被充分探索。此前,Bushehrian和Ghane首次定义了质量关键缺陷(Quality-Critical Bugs, QCBs)并训练了基于CNN(CNN)的分类器,但准确率仅介于63%至78%之间,且CNN架构在捕捉自然语言缺陷描述中的深层语义上下文方面存在局限。因此,引入预训练Transformer模型(如CodeBERT)以利用其代码-自然语言双模态训练优势,成为提升分类性能的关键方向。该研究发表在《Computers》期刊。

#### 研究内容与结论
研究人员提出了一个基于Transformer的分类框架,通过微调CodeBERT(CodeBERT)对缺陷报告进行CQIB/NQIB分类。在四个Apache项目(Camel、CloudStack、Geode和HBase)的25,000+缺陷报告片段上,采用5折交叉验证评估了两种训练策略:单独微调和顺序迁移学习。结果表明,单独微调CodeBERT在Camel、CloudStack、Geode和HBase上分别取得0.924、0.866、0.858和0.845的加权F1(weighted-F1),平均0.873;顺序迁移学习达到平均准确率89.8%,并在三个项目上提升了性能。与CNN基线相比,CodeBERT在准确率上提升11.9至23.8个百分点。与BERT、RoBERTa和DeBERTa的比较中,CodeBERT在所有项目上取得最高F1,平均0.873,远超其他通用Transformer模型。此外,严格的预处理(包括代码令牌归一化、停止词移除等)和训练折内类别平衡对性能贡献显著,不平衡数据上准确率下降9.7个百分点。顺序迁移学习在CloudStack、Geode和HBase上分别提升F1达4.8、1.1和4.3个百分点,表明跨项目知识迁移的有效性。

#### 主要关键技术方法
研究人员采用以下关键方法:数据来源于Bushehrian和Ghane发布的四个Apache项目(Camel、CloudStack、Geode、HBase)的缺陷报告数据集,每个报告依据修复后PMD检测到的设计或易错代码气味变化标记为CQIB或NQIB。文本预处理包括小写化、URL替换、代码令牌归一化、标点清理、停止词移除、CodeBERT字节对编码分词及条目过滤。针对类别不平衡,采用有放回上采样(up-sampling)使训练折内两类样本均衡。模型选用`microsoft/codebert-base`(12层Transformer,768维隐藏状态,125M参数),附加线性层和softmax形成二分类头。训练策略包括单独微调(每个项目独立训练)和顺序迁移学习(按Camel→CloudStack→Geode→HBase顺序逐步微调),均使用分层5折交叉验证,学习率设为2×10-5,通过验证F1选取最佳检查点。评估采用准确率、精确率、召回率和加权F1。

#### 研究结果
**4.1 RQ1——CodeBERT用于CQIB分类的可行性**:通过顺序迁移学习和单独微调,所有项目准确率和F1均高于84%,Camel达92.4%,平均顺序准确率89.8%,平均单独F1为0.873,显著超过随机和多数类基线。学习曲线显示,随着训练数据增加,CodeBERT性能持续提升。

**4.2 RQ2——与CNN和Transformer基线的比较**:CodeBERT在四个项目上均优于单阶段CNN(准确率提升11.9–23.8个百分点)和双阶段CNN。与BERT、RoBERTa、DeBERTa相比,CodeBERT在每项目上取得最高加权F1,平均0.873,远超其他模型。

**4.3 RQ2(扩展)——隔离代码感知预训练效应**:额外评估GraphCodeBERT、UniXcoder和CodeT5三个代码预训练模型,在单次分层划分下,所有代码预训练模型加权F1均不低于通用Transformer基线,支持代码感知预训练是主要驱动因素。CodeBERT在5折交叉验证下保持最强结果。

**4.4 模型规模与计算成本**:所有编码器模型参数在110–184M之间,CodeBERT(125M)在单块24GB RTX 4090上可复现,每项目微调约4–5分钟,推理延迟约200ms/报告,在准确率-成本平衡上最优。

**4.5 RQ3——预处理和类别平衡的影响**:在未平衡且最小预处理的HBase数据上,CodeBERT准确率仅79.1%,而完全预处理和平衡后达88.8%,类别平衡贡献约7个百分点,代码令牌归一化和停止词过滤也有显著作用。

**4.6 RQ4——顺序迁移学习与单独微调的比较**:顺序迁移在CloudStack、Geode和HBase上分别提升F1 4.8、1.1和4.3个百分点,Camel保持0.924(因Camel是顺序首项目),表明跨项目知识转移有益。

**4.7 混淆矩阵分析**:聚合混淆矩阵显示顺序模型正确识别550个NQIB和542个CQIB,仅65个假阳性和72个假阴性,错误分布均衡。项目级混淆矩阵进一步验证了代码预训练模型的平衡错误模式。

#### 讨论与结论
**讨论部分**:CodeBERT表现最佳的原因在于其双模态预训练,能有效捕捉缺陷报告中混合的类名、方法签名、异常类型等软件工件。研究贡献了可复现的主动代码质量管理框架,顺序迁移学习在三个项目上提升性能。项目间差异可能与语料规模和专用词汇有关,短报告缺乏结构上下文时错误集中。未来可结合结构化元数据(如提交大小、受影响文件数)和领域自适应预训练提升性能。

**结论部分**(翻译):本文提出了一种基于Transformer的框架,用于主动代码质量管理,将缺陷报告分类为代码质量影响缺陷(CQIBs)或非代码质量影响缺陷(NQIBs)。在5折交叉验证下,单独微调CodeBERT在Camel、CloudStack、Geode和HBase上分别取得F1分数0.924、0.866、0.858和0.845。顺序迁移学习达到平均准确率89.8%,并在三个项目上提升性能。CodeBERT在每项目上记录最高F1,平均F1(0.873)领先于BERT、RoBERTa和DeBERTa,成为本研究中表现最佳的Transformer。它同时超越已发表的CNN基线,最高提升23.8个百分点。预处理、代码令牌归一化和折级类别平衡进一步增强了分类性能。完整实现和实验资源已公开[8]。未来工作将纳入结构化提交元数据、领域自适应预训练和可解释AI方法。
相关新闻
生物通微信公众号
微信
新浪微博
  • 搜索
  • 国际
  • 国内
  • 人物
  • 产业
  • 热点
  • 科普

热点排行

    今日动态 | 人才市场 | 新技术专栏 | 中国科学人 | 云展台 | BioHot | 云讲堂直播 | 会展中心 | 特价专栏 | 技术快讯 | 免费试用

    版权所有 生物通

    Copyright© eBiotrade.com, All Rights Reserved

    联系信箱:

    粤ICP备09063491号