软件缺陷智能分析技术(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。
- 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进行处理,非常感谢!