软件缺陷智能分析技术(2) – SZZ的基本流程

软件缺陷智能分析技术(2) – SZZ的基本流程

有了航海图之后,我们就从即时软件缺陷预测开始入手,先用最小的时间去预测下bug发生的可能性。
我们先复习下即时软件缺陷预测的地图:

识别缺陷修的变更提交

我们在github上可以找到issue列表,比如,下面是react库的:

于是我们看到的就都是bug的列表了。
但是bug中还有不少的解决方案是重复问题的,有需要进一步信息的,有需要研究的,有状态未确定的,这些我们都要排除掉。
我们来一个高级搜索:

这回搜出来的质量就高很多了:

其对应的pull request是:https://github.com/facebook/react/pull/20948

我们记住这个文件名和行 :packages/react-reconciler/src/ReactFiber.new.js,
394行。我们运气还不错,遇上一个只有一行的。

根据修复代码去识别可能引入缺陷的代码

找到了这个提交还不够,我们还得去找到它的上一条提交。我们可以通过git log来查到这个提交:

发现是1665443603这个提交引入的,我们来找一下这个提交:

从中我们可以看到,这个提交是19755,我们如果想在github上查看这个提交可以通过https://github.com/facebook/react/pull/19755来查看。

这样,我们的一个SZZ的整个通路流程就完成了。

参考文献

SZZ的原始论文,它是2005年就有的了,那时候还在用CVS。

  1. J. Sliwerski, T. Zimmermann, and A. Zeller, “When do changes
    induce fixesin ACM SIGSOFT Software Engineering Notes,
    vol. 30, no. 4, ACM. ACM, 2005, pp. 1–5. [Online]. Available:
    https://10.1145/1083142.108314

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年2月13日
下一篇 2021年2月13日

相关推荐