Gzoltar 工具【2021.6.11】

本文详细介绍GZoltar的下载、安装及命令行使用方法,包括官方示例与Defects4J示例,并提供了一个针对单项目的脚本化执行流程。

1. 下载

官网Github

2. 安装

可以在 Releases 页面直接下载 1.7.2 稳定版本的 Jar 包,或者源码自行打包:

git clone https://github.com/GZoltar/gzoltar
cd gzoltar
mvn package

3. 命令行使用

3.1 官方示例

com.gzoltar.cli.examples 中执行:

./run.sh
  --instrumentation <online|offline>
  [--help]

3.2 D4J示例(分步)

查看官方示例中的 run.sh,结构如下:

  • Envs & Args:
    检查 GZOLTAR_CLI_JARGZOLTAR_AGENT_RT_JAR,准备运行时依赖 JUNIT_JARHAMCREST_JAR
  • Main:
    四个步骤:编译 Compile;收集测试以供运行 listTestMethods;收集覆盖信息 runTestMethods;创建错误报告 faultLocalizationReport

以 D4J 的 Lang-1b 为对象,对其修改:

  • 首先,检查依赖部分的 jar 包路径是否正确。
  • 编译部分交给 defects4j compile 命令完成(⭐)。
    也可以自己编译(如下,但不推荐❌):
 # 将 .java 文件输入到 txt 然后 javac 编译
 find /home/ubuntu/lang_1_buggy/src/main/java -name *.java >> src.txt
 find /home/ubuntu/lang_1_buggy/src/test/java -name *.java >> test.txt
 SRC_DIR=/home/ubuntu/d4j-gzoltar/target/classes
 TEST_DIR=/home/ubuntu/d4j-gzoltar/target/tests
 # 使用 ISO 编码是因为其中该项目存在 UTF-8 不可映射的字符
 javac @src.txt -encoding ISO-8859-1 -d ${SRC_DIR}
 # 补充缺少的依赖包
 javac -cp ${JUNIT_JAR}:${HAMCREST_JAR}:${COMMONS_IO}:${EASY_MOCK}:${SRC_DIR} @test.txt -encoding ISO-8859-1 -d ${TEST_DIR}
  • 列出测试:

这段是官方的参考:

java -cp <project_classpath:gzoltarcli.jar> com.gzoltar.cli.Main listTestMethods \
  <list of folders that contain test classes> \
  --outputFile <path> \
  --includes <test classes/cases to consider, e.g., org.TestFoo#* to include all test cases of test class TestFoo>

对于本例 ,includes 来自 /home/ubuntu/defects4j-2.0.0/framework/projects/<pid>/relevant_tests/<bid>,借助命令获取:

cat "/home/ubuntu/defects4j-2.0.0/framework/projects/<pid>/relevant_tests/<bid>" | sed 's/$/#*/' | sed ':a;N;$!ba;s/\n/:/g' 
java -cp ${JUNIT_JAR}:${HAMCREST_JAR}:${GZOLTAR_CLI_JAR}:${SRC_DIR}:${TEST_DIR} \
  com.gzoltar.cli.Main listTestMethods \
  /home/ubuntu/d4j-gzoltar/target \
  --outputFile /home/ubuntu/d4j-gzoltar/tmp/tests.txt \
  --includes ${REL
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值