此算法来源于2005年由瑞典德隆大学的一篇论文《When Do Changes Induce Fixes》,作者分别名为Jacek Sliwerski,Thomas Zimmermann,Andreas Zeller。显然算法名取自他们姓的首字母。
对算法来说,数据是不可缺少的一环,机器学习名宿吴恩达就认为80%的数据加上20%的模型是一个更好的机器学习,可见数据对于算法工作的重要性。
而SZZ的框架也主要是有四个步骤:
识别缺陷修复的变更,识别被修复的缺陷,识别可能引入缺陷的变更,以及最终的噪音消除。
目前MIT License有关于该算法的开源实现。
算法在github中的实现流程:
识别缺陷修复变更:
这里可以在github中的issue中通过关键字进行搜索
is:issue is:closed label:"Type: Bug" -label:"Resolution: Duplicate" -label:"Type: Needs Investigation" -label:"Status: Unconfirmed" -label:"Resolution: Needs More Information"
识别被修复的缺陷:
找到fixed issue,找到相关代码提交的pull request。记住提交的文件名以及行号。
识别可能引入缺陷的变更:
通过git log找到之前提交信息的上一条提交,切换版本,查看之前的文件名是通过哪个版本引入的,之后查看相应版本的提交。