Defects4J是一个很热门的Java自动程序修复、缺陷定位领域基准数据集。
SIR(全称 Software-artifact Infrastructure Repository)也是早期用作软件分析,测试等很常用的一个数据集。
在此介绍二者。
提出defects4j的文章:[ISSTA 2014]
Just R, Jalali D, Ernst M D. Defects4J: A database of existing faults to enable controlled testing studies for Java programs[C]//Proceedings of the 2014 International Symposium on Software Testing and Analysis. ACM, 2014: 437-440.
开源数据集位于:https://github.com/rjust/defects4j
2014年至今,被引用量达267次。
见:https://github.com/rjust/defects4j/releases
感觉整个社区维护的很好。
只说一下init.sh脚本的区别吧。
v1.4.0比v1.1.0多出来一个gradle的配置,如下:
如果提示gradle没有配置好,那么需要到对应路径下面去看看gradle的两个zip是否解压了。
SIR在2005年的EMSE期刊上被提出:
Do H, Elbaum S, Rothermel G. Supporting controlled experimentation with testing techniques: An infrastructure and its potential impact[J]. Empirical Software Engineering, 2005, 10(4): 405-435.
SIR全称:Software-artifact Infrastructure Repository,即软件工件基础设施仓库。
其中这个artifact很有意思,中文翻译过来是工件
的意思,可以进一步理解为人为造的一个东西 [1],再结合SIR中都是seeded bugs这个情况,就不难理解了。
此外,百度翻译解释artifact
为:a man-made object taken as a whole。
且在其官网上(https://sir.csc.ncsu.edu/portal/index.php ),有如下说明:
The repository contains many Java, PHP, C# and C, C++ software systems, in multiple versions, together with supporting artifacts such as test suites, fault data, and scripts.
工具主页: https://sir.csc.ncsu.edu/portal/index.php
需要先注册,登录后方可下载。
但是如果想马上使用SIR benchmark的话,可以去使用了SIR benchmark的自动工具修复文章中找,因为这些修复文章一般都会有修复工具,且一般都会开源,如果开源的话,那么肯定会有SIR的相关信息及配置的。
我认为该方法之好处有二:
1)方便了解 SIR benchmark的安装和配置;
2)方便了解SIR benchmark的使用和运行。
因为修复工具肯定是包含对应脚本的。
我找到了SemFix,见 ICSE 2013文章
Nguyen H D T, Qi D, Roychoudhury A, et al. Semfix: Program repair via semantic analysis[C]//2013 35th International Conference on Software Engineering (ICSE). IEEE, 2013: 772-781.
其工具主页:http://angelix.io/#experiments
SemFix实验复现地址:http://www.comp.nus.edu.sg/~release/angelix/semfix-experiments.tar.gz
下载之后,如下:
根据作者文章(https://www.comp.nus.edu.sg/~abhik/pdf/ICSE13-SEMFIX.pdf )描述:
作者使用的是TARANTULA(tarantula)这一种SBFL缺陷定位技术。
所以只需要跑通该程序即可。
注:跑通该程序,应该还会用到angelix
工具(https://github.com/mechtaev/angelix )。
[1] 软件工件(software artifact)怎么理解? https://bbs.csdn.net/topics/270084658