[SIR数据集实验][1]apache-xml-security实验方法
SIR是目前软件研究领域非常著名的数据集,大量研究在使用SIR中的标准数据集。例如:P. A. Nainar and B. Liblit, "Adaptive bug isolation," in Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1, Cape Town, South Africa, 2010, pp. 255-264.
R. Santelices and M. J. Harrold, "Exploiting program dependencies for scalable multiple-path symbolic execution," in Proceedings of the 19th international symposium on Software testing and analysis, Trento, Italy, 2010, pp. 195-206.
这两篇论文。这篇博客里就想总结一下怎么样使用SIR中的Java类数据进行实验。
首先,到SIR的官方网站:http://sir.unl.edu/portal/index.php ,需要指出的是,该网站只实行申请注册,并且只对研究人员开放,申请者在申请时需要说明自己的学校、科研项目及后续主要研究计划等。但是申请还是比较简单的,只要稍微认真填写申请表就可以。
申请成功之后在左边导航栏选择:“Download Objects”——在右侧页面选择Java——点击“Display”,在刷新后的页面中可以看到xml-security,点击“all platforms”就可以进行下载。下载后进行解压,可以得到一个非常复杂的文件夹,如下图所示:
这个文件夹常常让人不知所措,不就是一个xml-security吗?怎么会出来这么多文件夹。但是为了伟大的科学研究事业,我们还得耐心慢慢分析。需要指出的是,虽然SIR中提到Java数据集可以适用于任何安装合适版本JVM的系统,但实际上他们提供了很多仅适用于Linux类系统的bash脚本。所以必须在Linux类系统中才能进行实验。
下面我们来具体学习一下怎么在这么多文件夹中怎么进行实验,按照Java Object Directory Specification中的介绍,scripts这个文件夹是“The directory from which experiments are run.” 所以我们就从这个文件夹开始学习。进入到scripts文件夹后,可以看到如图所示的几个文件和文件夹。
其中的README文件详细列出了怎么安装(实际上就是Build)xml-security,以及怎么样驱动实验。我这里简单翻译和总结一下(本文在ubuntu系统上测试,并且已经有JDK,关于怎么在ubuntu系统上安装JDK,可以参考我之前的一篇博文):
一、首先,需要进行环境变量的设置。首先要设置一个experiment_root环境变量,指向“apache-xml-security”所在的目录。设置环境变量的方法很多,文档中说如果使用的是“bash”(我用的操作系统ubuntu),可以使用export命令,以我用的机子为例,“apache-xml-security”所在的目录为“/home/quyu/Projects”那么可以输入:
export experiment_root=/home/quyu/Projects
但是经检验,export设置环境变量,在终端退出后将失效。为了方便起见,可以更改/etc/environment文件更改环境变量。可以终端输入:
sudo gedit /etc/environment
打开environment后,按照该README中提示的内容,加入几个环境变量,例如我增加的是:
experiment_root="/home/quyu/Projects"
CLASSPATH=".:/home/quyu/jdk1.6.0_24/lib:${experiment_root}/apache-xml-security/source:${experiment_root}/apache-xml-security/source/xml-security:${experiment_root}/apache-xml-security/source/xml-security/build/classes"
JAVA_HOME="/home/quyu/jdk1.6.0_24"
增加环境变量很简单,但是一定要注意不要把之前的CLASSPATH之类的值删掉了,而应该用冒号隔开。
二、安装相应版本。xml-security的原版和注入缺陷后的版本安装过程都差不多,但是我在这里缺遇到了很多问题,这里简要记录一下。按照README文档中介绍,要安装版本,只需要运行“install.sh orig version_number”(运行原版)和“install_seeded.sh version_number”(运行注入缺陷版本),其中的version_number就是1、2、3之类的版本号。但是实际运行中,如果输入:
bash install.sh orig 0
就会报错:“无法删除……权限不够”
如果输入:
sudo bash install.sh orig 0
则权限符合,但是这种情况下不能正常解析“experiment_root”这个环境变量,依然不能正常运行。这里需要以root身份运行,网上介绍了一种root用户的登录方法,这里转载过来:
--------------------------------------------------------
Ubuntu安装后,root用户默认是被锁定了的,不允许登录,也不允许“su”到 root。
有人说这是个不好的实践,特别是对于服务器来说。我觉得对于桌面用户来说,这样安全性更高一些,是应该的;但对于服务器可以设置成“允许su 到root,但不允许root用户直接登录”。而我为了开发时的方便,则在桌面和服务器上都采用这种方式。
允许 su 到 root
非常简单,下面是设置的方法:
quyu@ubuntu:~$ sudo passwd
Password:
页:
[1]