Bug Severity Prediction in Software Projects Using Supervised Machine Learning Models

该研究利用来自 Eclipse Bugzilla 的历史数据,通过对比多种监督机器学习模型(包括集成树方法和 DistilBERT)及特征工程策略,评估了其在预测软件缺陷严重程度方面的性能,旨在为自动化缺陷优先级排序提供可操作的算法选择建议。

Nafisha Tamanna Nice

发布于 2026-03-03
📖 1 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文讲述了一个关于**“如何给软件里的错误(Bug)自动打分定级”**的故事。

想象一下,你经营着一家巨大的**“数字医院”**(这就是像 Eclipse 这样的开源软件项目)。每天都有成千上万的病人(Bug 报告)送进来,有的只是擦破皮(小问题),有的则是心脏骤停(严重危机)。

1. 核心问题:医生忙不过来

在过去,这些病人全靠人类医生(软件工程师)来分诊。

  • 痛点:病人太多了,医生们忙得焦头烂额。
  • 后果:有的医生累了,把“心脏骤停”误判为“擦破皮”,导致病人没得到及时救治;有的医生太谨慎,把“擦破皮”当成“绝症”处理,浪费了医疗资源。
  • 目标:我们需要一个**“超级 AI 分诊员”**,它能瞬间阅读病人的描述,准确判断谁最需要急救。

2. 研究方法:一场“分诊员”大比武

作者 Nafisha 就像一位**“教练”,她找来了10 位不同风格的“分诊员”候选人**(也就是 10 种机器学习算法),让它们在同一套历史病历(Eclipse 的 Bug 数据)上进行比赛,看谁最厉害。

这 10 位候选人分为几派:

  • 老派经验派(传统算法)
    • 逻辑回归 (Logistic Regression):像一位老练的急诊科医生,虽然不一定能看出所有细节,但特别擅长**“宁可错杀,不可放过”**,能确保不漏掉任何重症病人(召回率高)。
    • 朴素贝叶斯 (Naive Bayes):像一位谨慎的专家,它说“这是重症”时,通常准得吓人(精确率高),但可能会漏掉一些不那么明显的重症。
  • 现代科技派(树模型与集成学习)
    • XGBoost, LightGBM, CatBoost:这些像是**“超级医疗团队”**。它们由成百上千个小医生组成,每个人看一点,最后综合意见。它们非常强大,处理复杂病例的能力很强,整体准确率最高
  • 未来派(深度学习)
    • DistilBERT:这就像一位读过所有医学文献的“天才 AI"。它不仅能看懂字面意思,还能理解病人心情的微妙变化(文本的深层含义)。它在比赛中夺得了冠军,整体准确率最高。

3. 训练过程:如何教 AI 看病?

为了让这些 AI 变聪明,作者给它们做了特殊的“特训”:

  • 清洗病历:把病历里乱七八糟的错别字、无关信息(比如“病人 ID 号”)都去掉,只保留核心症状。
  • 平衡训练:历史上“重症病人”很少,“小病”很多。如果直接教,AI 会以为“大家都只是感冒”。于是作者用了SMOTE 技术,相当于给 AI 制造了一些“模拟重症病人”的假病历,强迫它学会识别重症,不再忽视它们。
  • 考试验证:把数据分成两部分,80% 用来上课(训练),20% 用来考试(测试),确保 AI 不是死记硬背,而是真的学会了。

4. 比赛结果:谁赢了?

  • 全能冠军DistilBERT(天才 AI)和 XGBoost(超级团队)在整体准确率上拔得头筹。它们最擅长把病人分对类,无论是大病小病。
  • 救命专家:如果你只关心**“千万别漏掉重症”,那么逻辑回归**(老练医生)是最佳选择。虽然它可能会把一些轻病误判为重病(有点过度紧张),但它保证了没有重症病人被漏掉
  • 谨慎专家朴素贝叶斯在**“确诊重症”**时最准,它说“这是重症”时,基本不会出错。

5. 这对社会有什么意义?

这就好比给软件世界装上了**“智能急救系统”**:

  • 省钱省时间:不再让工程师把时间浪费在修“小感冒”上,而是集中火力攻克“心脏骤停”。
  • 更安全:金融、医疗等关键软件不再因为漏掉一个严重 Bug 而崩溃。
  • 更环保:减少了无谓的调试和重复工作,间接节省了电力和计算资源。

总结

这篇论文告诉我们:机器已经学会如何像经验丰富的医生一样,快速、准确地从成千上万的软件错误中,揪出那些最危险的“定时炸弹”。

虽然现在的 AI 已经很强了(DistilBERT 和 XGBoost 表现优异),但未来的方向是让它们更透明(让人类知道它为什么这么判断),并且能适应更多不同类型的“医院”(不同的软件项目)。

简单来说,这就是用 AI 给软件世界做“分诊”,让好钢用在刀刃上,让软件更安全、更稳定。

在收件箱中获取类似论文

根据您的兴趣定制的每日或每周摘要。Gist或技术摘要,使用您的语言。

试用 Digest →