fault-localization-data 框架

腾讯云 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

手动配置安装位置(红色可自行下载):

fault-localization-data 框架_第1张图片

# 测试命令
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_JARGZOLTAR_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

成功!
fault-localization-data 框架_第2张图片

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。

你可能感兴趣的:(工具)