腾讯云 Ubuntu 16.04.7 LTS (GNU/Linux 4.4.0-157-generic x86_64)
4核 8GB 3Mbps
所需文件 | 下载地址(2021.2.1) |
---|---|
JDK 8 | 地址 |
Fault-localization-data | 地址 |
Defects4j-2.0.0 | 地址 |
Defects4j-repos | 直接下载 |
DBI-1.643 | 直接下载 |
搭建环境步骤:
tar -zxvf jdk-8u281-linux-x64.tar.gz
# 配置JDK环境变量
sudo vim /etc/profile
export JAVA_HOME=/home/ubuntu/jdk1.8.0_281
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
source /etc/profile
# 安装各工具
sudo apt-get install subversion
sudo apt-get install cpanminus
sudo apt-get install maven
unzip rjust-fault-localization-data-626c8b83e082.zip && mv rjust-fault-localization-data-626c8b83e082 fault-localization
# 【/home/ubuntu/fault-localization】
tar -zxvf defects4j-2.0.0.tar.gz && mv defects4j-2.0.0 defects4j
# 【/home/ubuntu/fault-localization/defects4j】
cpanm --installdeps .
######################################
# requires 'DBI', '>= 1.63'; #
# requires 'DBD::CSV', '>= 0.48'; #
# requires 'URI', '>= 1.72'; #
# requires 'JSON', '>= 2.97'; #
# requires 'JSON::Parse', '>= 0.55'; #
# requires 'List::Util', '>= 1.33'; #
######################################
./init.sh
# 如果连外网速度过慢,可以手动初始化:例如repo部分
# 【/home/ubuntu/fault-localization/defects4j/project_repos】
unzip -q -u defects4j-repos.zip && mv defects4j/project_repos/* . && rm -r defects4j
# 环境变量(临时)
export PATH=$PATH:/home/ubuntu/fault-localization/defects4j/framework/bin
手动配置安装位置(红色可自行下载):
# 测试命令
defects4j info -p Lang
# 报错:Can't locate DBI.pm in @INC (you may need to install the DBI module)
tar -zxvf DBI-1.643.tar.gz && cd DBI-1.643/
perl Makefile.PL
make
make test
sudo make install
# 【/home/ubuntu/fault-localization/gzoltar】
git clone https://github.com/GZoltar/gzoltar.git
mv gzoltar gzoltar-repo && cd gzoltar-repo/
# 跳过测试
mvn clean package -DskipTests=true
apt 命令安装的 Maven 本地仓库 /home/ubuntu/.m2/repository
和配置文件 /etc/maven/settings.xml
# 添加阿里云镜像
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
注意:修改 fault-localization 中 setup.sh 文件 GZOLTAR_CLI_JAR
和 GZOLTAR_AGENT_JAR
位置颠倒的错误
./setup.sh
# 调整环境变量(不是/etc/profile)
vim ~/.bashrc
export FL_DATA_HOME=/home/ubuntu/fault-localization
export KILLMAP_HOME=$FL_DATA_HOME/killmap
export GZOLTAR_REPO_HOME=$FL_DATA_HOME/gzoltar/gzoltar-repo
export GZOLTAR_CLI_JAR=$GZOLTAR_REPO_HOME/com.gzoltar.cli/target/com.gzoltar.cli-1.7.3-SNAPSHOT-jar-with-dependencies.jar
export GZOLTAR_AGENT_JAR=$GZOLTAR_REPO_HOME/com.gzoltar.agent.rt/target/com.gzoltar.agent.rt-1.7.3-SNAPSHOT-all.jar
export D4J_HOME=$FL_DATA_HOME/defects4j
export DEFECTS4J_HOME=$D4J_HOME
export PATH=$PATH:$D4J_HOME/framework/bin
source ~/.bashrc
# 修改 untils.sh 324 行
local relevant_tests_file="$D4J_HOME/framework/projects/$pid/relevant_tests/$bid"
# 修改 job.sh 570行
cp -Rv gzoltars/* "$SCRIPT_DIR/"
./job.sh --project Math --bug 1 --output_dir Math/1 --tool developer
成功!
Projects(原框架使用) | Bugs | Projects(原框架使用) | Bugs |
---|---|---|---|
Chart | 26 | Closure | 133 |
Lang | 65 | Math | 106 |
Mockito | 38 | Time | 27 |
但因为新版本将 Closure 扩展到了 176,且增加了新的项目。还需要对两个文件夹内容进行补充:
- source-code-line
- buggy-lines
参考 ,buggy-lines 文件夹中还有候选错误行文件 candidates,需要执行 ask_for_candidates.py
进行人工检查、手工标注(标准参考 buggy-lines 文件夹中 README.md)。csv 文件为无标题行两列,第一列 projects,第二列 bugs。
python3 ask_for_candidates.py --output-dir . bugs.csv
标注之后,执行 note_unrankable_lines.py
,对于 FAULT_OF_OMISSION 和 MISSING_RANKING_STATEMENT 两类 buggy-lines 查看 candidates,没有的标记为 unrankable。